Tch
|
|
|
---Elite--- |
|
Зарегистрирован: 02.12.12 Сообщений: 795
|
stranger: ...Что мне удалось узнать нового о генерации карт в Элите/Оолите... Прочитал с интересом - но ничего не понял, вернее, понял только одно - куда очень далеко чёрт Вас понёс, stranger! Когда-то давно я пытался изучить язык программирования Ассемблер, и про "битную ротацию" и про "дампы памяти" только там и слышал, а больше нигде не довелось. У меня получались небольшие ассемблерные заплатки к языку более высокого уровня, и они очень хорошо работали - но сам я так до конца и не понимал их принцип работы. Кстати, не мудрено, что программисты Elite выжимали максимум возможного - ведь DOS был не Windows, там возможности были очень ограничены буквально во всём. Я подозреваю, что изначально там было очень много изящных решений - в частности, кратность 8 на это указывает, и число 256 далеко не случайное (кстати, День программиста - это 255-ый день в году, считая 1 января нулевым днём нового года ) но, к сожалению, оценить всего этого не смогу - моих знаний для этого не хватает. Объясните же мне - что означает слово "семечко" на Вашем жаргоне? И зачем Вам понадобилось совершенно новые галактики (точнее, секторы галактики) делать?
|
|
|
|
stranger
|
|
|
---Elite--- |
|
Зарегистрирован: 15.05.11 Сообщений: 1531
|
Tch: Кстати, не мудрено, что программисты Elite выжимали максимум возможного - ведь DOS был не Windows, там возможности были очень ограничены буквально во всём.
Владимир Петрович, так ведь Элита даже не под DOS была написана, а под 8-битные машины с памятью 48K, из которых реально на программу оставалось только 42K! Ну то есть типа Спектрума. И вот тогда я испытал глубокий культурный шок: я не мог понять, как туда запихнули так много. Только потом узнал про семя и все остальное. Семя - это исходное число, которое скармливают (псевдо)рэндом-функции, а она уже его дальше преобразует. В Элите для Спектруме просто не было места для массива данных по 2048 системам на 8 картах - все это, включая имена систем, создано из шести байт семени. А уникальная карта мне понадобилась именно из-за бережного отношения к канонам: проект, который где-то подспудно рисуется (все же есть надежда, что здоровая лень пересилит) - это именно спин-офф на движке Оолита. Там, возможно, даже старых имен не останется. Но вот сегодня поразмыслил и понял - пока не готов. Кстати, спин-офф - это вовсе не обязательно плохо. Это, говоря по русски, производная работа, где с идеями/персонажами/объектами исходника можно вольно обращаться невзирая на каноны.
|
|
|
|
ПЕНСИОНЕР
|
|
|
Dangerous |
Зарегистрирован: 31.03.11 Сообщений: 106
|
stranger: Ну, цитируя Seventh'а, сам спросил - сам и ответил. Что мне удалось узнать нового о генерации карт в Элите/Оолите:
1. Дамп каталога систем на активной карте был в ранних версиях Оолита - помню точно. Сейчас, похоже, эту опцию разработчики убрали, так как обычному юзверю и даже разработчику OXP она в принципе не нужна - как совершенно верно понимает ПЕНСИОНЕР, вся информация о системах есть на Elite Wiki (и теоретически, зная алгоритм, можно рассчитать результат работы измененного семени). В принципе решаемо через скрипт, но это уже неактуально. Почему - объясню ниже. 2. Способов изменить семя через OXP / JavaScript нет - хардкорная процедура в теле программы все эти манипуляции обходит и возвращает всё к дефолтным настройкам. 3. Единственная возможность поменять семя, не забираясь в саму программу - это таки редакция строки galaxy_seed в oolite_save, так как карты секторов G2-G8 генерируются из дефолтного семени путем его 8-битной ротации и полученные числа в сэйве записаны. Но этот способ мало того что не кошерный, проблем он тянет за собой кучу. Самые очевидные - для полученных таким образом карт отредактированный файл planetinfo.plist не работает. Не работает таже ряд OXP, скрипты которых привязаны к дефолтным картам. 4. Способ расширить диапазон генерируемых карт до 16 и более есть и можно заставить OXP работать нормально, но это для вконец упоротых хардкорщиков. Я на такую глубину не полезу.
Вчера вечером на скорую руку рихтанул один из сэйвов. Карта получилась очень интересная и топологически связанная, но дальше все как и предупреждали знающие люди. OXP System Redux, к примеру, работает - ему нужен только номер системы. А OXP Distant Suns не работает - он свои кастомизированные записи в planetifo.plist не видит. В общем, оставил я эту идею. Буду мастерить песочницу на одной из дефолтных карт.
P.S. Ходят слухи, что при работе над исходной Элитой в остальном удачное семя пришлось поменять, потому что при тестовом прогоне на одной из карт обнаружилась система Жопа (Arse). Посмотрел на форуме в Elite Wiki на ветке Galaxy seeds and system properties ? Это жутко интересно, как получить почти нереальный мир с 2-мя млрд карт!!! С ОХР , дающие бороздить эти просторы через червоточины. Во-как!!!
|
|
|
|
stranger
|
|
|
---Elite--- |
|
Зарегистрирован: 15.05.11 Сообщений: 1531
|
ПЕНСИОНЕР: Посмотрел на форуме в Elite Wiki на ветке Galaxy seeds and system properties ? Это жутко интересно, как получить почти нереальный мир с 2-мя млрд карт!!! С ОХР , дающие бороздить эти просторы через червоточины. Во-как!!! Она самая. Но там затык, который через OXP не обходится. Надо лезть в саму программу и менять кусок кода. Там расписали, куда лезть и что менять, но я туда не полезу. Во-первых, боюсь, во-вторых, в программе для Mac OS все немножко по другому устроено и я просто не знаю, с какой стороны за это взяться. Я на такую глубину никогда не нырял. Ресурсные файлы из EV Nova, было дело, вытаскивал, но там все было намного проще.
|
|
|
|
ПЕНСИОНЕР
|
|
|
Dangerous |
Зарегистрирован: 31.03.11 Сообщений: 106
|
stranger: ПЕНСИОНЕР: Посмотрел на форуме в Elite Wiki на ветке Galaxy seeds and system properties ? Это жутко интересно, как получить почти нереальный мир с 2-мя млрд карт!!! С ОХР , дающие бороздить эти просторы через червоточины. Во-как!!! Она самая. Но там затык, который через OXP не обходится. Надо лезть в саму программу и менять кусок кода. Там расписали, куда лезть и что менять, но я туда не полезу. Во-первых, боюсь, во-вторых, в программе для Mac OS все немножко по другому устроено и я просто не знаю, с какой стороны за это взяться. Я на такую глубину никогда не нырял. Ресурсные файлы из EV Nova, было дело, вытаскивал, но там все было намного проще. Как сказал знаменитую фразу Ю. Никулин - "Будем искать!" Представляешь идею, когда будет создана сеть в OOLITE , а также найден способ генерации всех возможных галактик(2000000000), ты создаёшь свой мир в одной из 2000000000 и к тебе, совсем случайно, кто-то залетел из сети. Вот так встреча,- как нашествие инопланетян в наше время.
|
|
|
|
vasig
|
|
|
---Elite--- |
|
Зарегистрирован: 01.10.12 Сообщений: 747 Откуда: Novosibirsk
|
ПЕНСИОНЕР: ...Представляешь идею, когда будет создана сеть в OOLITE , а также найден способ генерации всех возможных галактик(2000000000), ты создаёшь свой мир в одной из 2000000000 и к тебе, совсем случайно, кто-то залетел из сети. Вот так встреча,- как нашествие инопланетян в наше время. Ну тогда придется забыть о торговле, а думать о супер оружии, которое в случае неблагоприятной ситуации уничтожит всю новую галактику вместе с пришельцами. Хотя его уже придумали, но это уже не игра.
|
|
|
|
ПЕНСИОНЕР
|
|
|
Dangerous |
Зарегистрирован: 31.03.11 Сообщений: 106
|
vasig: ПЕНСИОНЕР: ...Представляешь идею, когда будет создана сеть в OOLITE , а также найден способ генерации всех возможных галактик(2000000000), ты создаёшь свой мир в одной из 2000000000 и к тебе, совсем случайно, кто-то залетел из сети. Вот так встреча,- как нашествие инопланетян в наше время. Ну тогда придется забыть о торговле, а думать о супер оружии, которое в случае неблагоприятной ситуации уничтожит всю новую галактику вместе с пришельцами. Хотя его уже придумали, но это уже не игра. Я, в смысле, только поцеловатья!
|
|
|
|
stranger
|
|
|
---Elite--- |
|
Зарегистрирован: 15.05.11 Сообщений: 1531
|
ПЕНСИОНЕР: Представляешь идею, когда будет создана сеть в OOLITE , а также найден способ генерации всех возможных галактик(2000000000), ты создаёшь свой мир в одной из 2000000000 и к тебе, совсем случайно, кто-то залетел из сети. Вот так встреча,- как нашествие инопланетян в наше время. Seventh уже писал на эту тему. Сетевой игры не будет потому что а) нужен сервер б) сервер должен окупаться, и тогда это будет уже коммерческий проект и в) как только дело пойдет на лад, придут злые копирасты и начнут тупо хотеть денег.
|
|
|
|
Tch
|
|
|
---Elite--- |
|
Зарегистрирован: 02.12.12 Сообщений: 795
|
Да толку-то, что 2 млрд. - всё равно это изначально пустые шарики около солнца - Миры_По_Умолчанию. Чтобы привести их в божеский вид, надо автомат приличный мастерить, который будет их правильно обустраивать, чтобы они разнообразные были. Ладно, ПЕНСИОНЕР, не горюйте, скоро я ещё свой Tch_Planet_Fall.oxp выложу и Tch_Deep_Space.oxp- и тогда будете скрытые Миры у меня на полигоне искать. Можно будет и среди 20 планет полигона интересное заныкать, так что не сразу и найдёшь
|
|
|
|
stranger
|
|
|
---Elite--- |
|
Зарегистрирован: 15.05.11 Сообщений: 1531
|
Tch: Да толку-то, что 2 млрд. - всё равно это изначально пустые шарики около солнца - Миры_По_Умолчанию. Чтобы привести их в божеский вид, надо автомат приличный мастерить, который будет их правильно обустраивать, чтобы они разнообразные были. В принципе System Redux однообразные шарики раскрашивает неплохо. Расширить пакет до 256 текстур - и в сочетании с Orbits и с Distant Suns эффект deja vu будет навещать лишь изредка. Но вот в самом деле - нужны ли 2 миллиарда новых миров? Я по своему неуемному желанию все интересное опробовать и за пределы второго сектора все не могу выбраться. Буржуи на ветке форума Galaxy seed задачу ставят более скромную - расширить Оониверсум до 16 карт, обсуждают три альтернативных пакета. В Оолите 1.77 вряд ли будет реализовано. И вполне вероятно, так и останется бла-бла-бла. Что бы я хотел иметь - так это удобный инструмент для создания собственных карт. Которые можно обустраивать по своему разумению и делать в них собственные миссии. P.S. Вот занесли Вы мне инфекцию в мозг со своим полигоном. Чешется.
|
|
|
|
Tch
|
|
|
---Elite--- |
|
Зарегистрирован: 02.12.12 Сообщений: 795
|
stranger: ...Что бы я хотел иметь - так это удобный инструмент для создания собственных карт. Которые можно обустраивать по своему разумению и делать в них собственные миссии. Да, и такой бы нам инструмент не помешал тоже... stranger, а правду говорят, что можно без гипер-прыжка от звезды до звезды долететь? Что-то у меня сомнения в этом... Мне кажется, что проще запрограммировать условное расстояние, чем создавать такую реальную Вселенную... А Вы знаете, что программно сделать гипер-прыжок - проще простого? Можно прямо в звёздной системе - нырнул у Главной планеты, а вынырнул уже около Солнца У меня случайно получилось, когда свой пакет гравитации писал stranger: ...P.S. Вот занесли Вы мне инфекцию в мозг со своим полигоном. Чешется. Делайте! Даже одна звёздная система бесконечна, если ей по-настоящему заняться, а не так - прыг-скок. Когда я модель Солнечной системы делал, то понял это... А Вы на сколько звёзд свою "песочницу" хотели бы видеть?
|
|
|
|
stranger
|
|
|
---Elite--- |
|
Зарегистрирован: 15.05.11 Сообщений: 1531
|
Tch: stranger, а правду говорят, что можно без гипер-прыжка от звезды до звезды долететь? Что-то у меня сомнения в этом... Мне кажется, что проще запрограммировать условное расстояние, чем создавать такую реальную Вселенную...
Слышал такую быличку - что, мол, в какой-то из клонов или переделок Элиты можно было гирьку на j положить и за месячишко до ближайшей системы добраться. Но думаю, быличка и есть. Координаты систем сгенерированы в целых числах, расстояние между ними тоже вычисляется в целых, геймер видит конечный результат, умноженный на 1/10 (как и в случае с кредами). Думаю, локальные системы координат, в которых корабль перемещается на джамп-драйве, между системами никак не сопрягаются. Есть ведь еще одна скрытая система координат, в которую геймер попадает лишь изредка - она привязана к центру отрезка между парой систем. Задается указанием их номеров: <key>interstellar: 0 7 129</key> - отрезок между Lave (7) и Zaonce (129) в Первом секторе. И технически можно, наверное, задать (256*255)/2 точек для каждой карты, но в подавляющее большинство из них попасть будет невозможно, так как они находятся за пределами дальности прыжка. Но даже если принять навскидку среднюю связность карты n = 4, все равно имеем (256*4)/2 точек, в которых можно размещать объекты! Потенциал этой скрытой системы координат практически ни одно OXP не использует за редкими исключениями. Насчет моей песочницы - буду делать на одной из карт, переформатирую дефолтные параметры систем практически полностью, но относительно детально проработаю примерно с десяток узловых точек (может быть, пару десятков) миссии. Но мне надо еще очень многому научиться, прежде чем браться за ее дизайн и движок. И сейчас у меня первоочередной вопрос вот какой: можно ли через скрипт на старте миссии принудительно пересадить игрока на голую дефолтную Кобру с 100 кредами в кармане и без накопленных непосильным трудом апгрейдов? А потом по ее успешному завершению вернуть изъятый на время корабль со всеми обвесами, поблагодарить от имени Верховного Главнокомандования и от Дегенаралиссимуса лично и вручить честно заработанный мешок пряников. Технически такое возможно, что скажете? Потому что это будет опасный мир и игрок на Супер Кобре с кучей обвесов будет иметь слишком большой гандикап.
|
|
|
|
Tch
|
|
|
---Elite--- |
|
Зарегистрирован: 02.12.12 Сообщений: 795
|
stranger: ...И сейчас у меня первоочередной вопрос вот какой: можно ли через скрипт на старте миссии принудительно пересадить игрока на голую дефолтную Кобру с 100 кредами в кармане и без накопленных непосильным трудом апгрейдов? А потом по ее успешному завершению вернуть изъятый на время корабль со всеми обвесами, поблагодарить от имени Верховного Главнокомандования и от Дегенаралиссимуса лично и вручить честно заработанный мешок пряников. Технически такое возможно, что скажете? Потому что это будет опасный мир и игрок на Супер Кобре с кучей обвесов будет иметь слишком большой гандикап. Вот, разыскал, по-моему вот здесь что-то написано про замену корабля игрока: http://wiki.alioth.net/index.php/Oolite ... eplaceShipНо это будет в тестируемой версии 1.77 Самому скриптом менять корабль у игрока не доводилось. Главную станцию изменял - так там вообще пришлось идти такими кривыми путями - несколько функций специально писал для этого. Смена корабля связана с покупкой корабля в Звездолётном Центре - значит, надо искать какие-то скрипты, связанные с покупкой нового корабля. Надо посмотреть ОХР, где покупают-продают корабли - там и должен быть кусок нужного кода, который можно переделать...
|
|
|
|
stranger
|
|
|
---Elite--- |
|
Зарегистрирован: 15.05.11 Сообщений: 1531
|
Tch: Смена корабля связана с покупкой корабля в Звездолётном Центре - значит, надо искать какие-то скрипты, связанные с покупкой нового корабля. Надо посмотреть ОХР, где покупают-продают корабли - там и должен быть кусок нужного кода, который можно переделать... Там как раз все просто. Новый корабль под своим уникальным именем объявляется в shipyard.plist, там же прописывают его цену, базовую комплектацию, набор дополнительных обвесов и прочее. Покупку/продажу корабля и проверку совместимости установленного оборудования делает процедура в самой программе (OXP обрабатывают только дополнительное оборудование).
|
|
|
|
seventh
|
|
|
Archangel |
|
Зарегистрирован: 21.11.09 Сообщений: 511
|
Я это делал. Кладовская версия на Спеке stranger: Tch: stranger, а правду говорят, что можно без гипер-прыжка от звезды до звезды долететь? Что-то у меня сомнения в этом... Мне кажется, что проще запрограммировать условное расстояние, чем создавать такую реальную Вселенную...
Слышал такую быличку - что, мол, в какой-то из клонов или переделок Элиты можно было гирьку на j положить и за месячишко до ближайшей системы добраться.
|
|
|
|
|
|