ENG Новый сайт

Расширенный поиск
[ Новые сообщения · Пользователи · Правила ]
Какую игру вы хотите?
BalogДата: Пятница, 27.01.2012, 16:45 | Сообщение # 436
Исследователь
Группа: Пользователи
Украина
Сообщений: 211
Награды: 0
Статус: Offline
Quote (Romario-3D)
Можно проще сделать. Когда игрок уходит из онлайна, его базы роботы, шахтеры, торговцы, работают как боты управляемые сервером вавтоматичеком режиме. (на автопилоте) В меню выход из игры можно поставить опцию для такой функции на выбор. Например законсервировать шахтерскую базу? к примеру. или работать в автономном режиме? ставиш галочку на выбор и выходиш из онлайна.

Само собой, должна быть возможность законсервировать все или оставить работать по программе.
Но не стоит возлагать на сервер слишком многое. Я конечно не специалист, может быть будет несложно рассчитывать все телодвижения всех ботов всех игроков, а может и сложно. Но лучше рассчитывать на пользовательские компьютеры. Сервер знает программу, заложенную хозяином и надо понимать может передать данные на компьютер посетителя и этот компьютер может посчитать результат работы в любой момент как и местоположение всех спутников тогда когда в систему кто-то залетит. А там уже возникнет вопрос обнаружения исходя из сенсоров наблюдателя, расстояния и обнаружимости объектов.
А там уже все зависит от объекта. Может станция сама предложит топливо на продажу а может заявит что бы гость убирался по добру по здорову а потом откроет огонь. А может и не обратит внимания. Или автоматически отключится и замрет на время. Летящие грузовики конечно не спрятать, но обнаружимость и у них не абсолютная.
А вот как поведет себя гость - его дело. Может если нет выхода и топливо на нуле обратиться к хозяину за помощью, а может останется или уберется оттуда. Или развернет свою сеть спутников и шахт. В этом и интерес.


Сообщение отредактировал Balog - Пятница, 27.01.2012, 18:42
MibusДата: Пятница, 27.01.2012, 21:19 | Сообщение # 437
Первооткрыватель
Группа: Команда SE
Украина
Сообщений: 301
Награды: 0
Статус: Offline
Раз уж сделана ставка на процедурность, есть смысл в производстве и исследованиях
исходить из принципа предельного солипсизма. Есть наблюдатель - все работает.
Нет наблюдателя - ничего не происходит. Но как только наблюдатель вновь появляется,
генерятся данные обо всем периоде прошедшем за время отсутствия.
Правда при этом накладываются ограничения на движок:
1. Все исследовательские и производственные процессы должны быть жестко детерминированы.
2. Наблюдаемый результат независим от наблюдателя. Только полнота получаемых данных может различаться.
3. Без наблюдателя происходящие на объекте события ни оказывают никакого влияния
на все остальные объекты.
4. Обмен информацией между объектами осуществляется только наблюдателями.

На мой взгляд вполне логичная система. Достаточно постановить, что единственным
средством передачи информации на межзвездных расстояниях являются корабли.


Win7 64 prof, Athlon II x2 256 3.3Mhz, RAM 4GB, GeForce GTS 250 512MB
BalogДата: Пятница, 27.01.2012, 21:32 | Сообщение # 438
Исследователь
Группа: Пользователи
Украина
Сообщений: 211
Награды: 0
Статус: Offline
Да возможна и сверхветовая связь. Главное что бы получатель был в онлайне и его клиент "рассчитал" полученную информацию и передал на сервер. То есть у всех источников информации есть хозяин. Хозяин спутника может быть на другом краю галактики но если его спутник что-то разглядел то он это узнал. Хотя и тут возможны ограничения, какие-то спутники, лаборатории и прочее будут иметь сверхсветовую связь (возможно ограниченую расстоянием) а какие-то отдадут информацию только если снова залететь в эту систему. Но все равно все рассчитывается на клиенте.
Но в принципе возможны какие-то общие новости что генерирует именно сервер.

И самое интересное что подделать данные врятли выйдет, потому что все это расчеты статического генератора случайных чисел и поддаются проверке. Но надо предусмотреть что бы нельзя было расшифровать внеигровыми методами базу данных генератора случайных чисел.


Сообщение отредактировал Balog - Пятница, 27.01.2012, 21:36
SpaceEngineerДата: Пятница, 27.01.2012, 23:40 | Сообщение # 439
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
Balog, согласен с твоими мыслями насчёт исследований, добычи, переноса рассчётов на клиент. Я сам где-то это уже озвучивал.

Насчёт автономного режима. Сервер не будет заниматься ботами - он не справится с нагрузкой. Напомню, в SE будут правильные движения кораблей, т.е. под действием гравитации планет и солнц. Это значит, что надо проводить большой объём вычислений каждую секунду. Для планет это не требуется - они ездят "по рельсам" кеплеровских орбит, и просто есть несложная функция Вычислить_Координаты_Планеты_От_Времени. Для кораблей такой функции нет, и быть не может. Т.о. нельзя вычислить, где окажется брошенный корабль через полгода - комп будет это считать несколько минут (смотря какая точность нужна). Нельзя нагружать этим и сервер. Поэтому выход один - перепоручать эти рассчёты другим клиентам, которые в онлайне. Такая распределённая вычислительная сеть.

Чтобы уменьшить нагрузку на неё, нужно ввести систему парковочных орбит. Если игроку дорог его корабль, он не оставит его дрейфующим в непонятном направлении среди планет и астероидов, а выведет на заведомо устойчивую орбиту вокруг планеты или солнца. Движок вычислит элементы орбиты, и дальше этот корабль будет вести себя как планета или луна - двигаться "по рельсам". Т.е. реально координаты этого корабля рассчитываются только тогда, когда нужно отрендерить его или передать информацию о координатах другим игрокам. С объектами на планетах ещё проще - они просто твёрдо стоят а поверхности.

Можно ввести "умный" автопилот, который автоматически выбирает парковочную орбиту, если игрок внезапно отключается (срочно надо выйти или инет отвалился). Например если корабль летел в ручном или автоматическом режиме к какой-то планете, но по прибытии туда новую орбиту игрок ещё не задал, автопилот сам её рассчитывает и переводит корабль на неё. Этот рассчёт делается на сервере или на других клиентах. Когда игрок возвращается, он обнаруживает свои корбали в безопасном положении.

Сверхсветовая связь по любому нужна, иначе игрок не сможет управлять всем своим хозяйством. Придётся "лично" прилетать к каждой базе и грузовику, чтобы получить отчёты и отдать указания. Связь будет основана на явлении квантовой сцепленности. Одна частица в корбале или здании, вторая - в личном компьютере игрока (встроенном в скафандр или прямо в мозг например). Такую линию связи невозможно прослушать или перехватить. При создании нового корабля, если игрок хочет иметь с ним прямую сверхсветовую связь, он должен лично явиться к нему и создать новую пару сцепленных частиц (или воспользоваться автоматическим курьерским кораблём). Иначе связь будет осуществляться через другие корабли, на которых уже есть такие квантовые коммуникаторы. Для связи с другими игроками есть "космический интернет" - сесть связанных попарно коммуникаторов. У игрока одна частица, а вторая в какой-нибудь обжитой системе в местном дата центре. В нём же - другие частицы, связанные с другими дата центрами и т.д. Передача информации между квантовыми парами осуществляется обычными способами.

В целом на этих тонкостях можно не фокусироваться, просто знать принцип связи в "игровой веленной SE". Хотя знание факта только попарной сверхсветовой связи открывает принципы её разрушения. Например, если связь с ботами-харвестерами осуществляется только через орбитальную ресурсную станцию, и она уничтожается, связь с ботами теряется. Восстановить управление ими игрок может только по радио, а то прислав корабль в систему.


BalogДата: Суббота, 28.01.2012, 00:30 | Сообщение # 440
Исследователь
Группа: Пользователи
Украина
Сообщений: 211
Награды: 0
Статус: Offline
Можно обдумать что делать во время обрыва связи. Если уже введены данные в автопилот то полет продолжится по программе автопилота. Если известна планета назначения то корабль должен выйти на ее орбиту, если известна звезда то после гиперперелета выйти на орбиту вокруг звезды, может дальше чем самая дальняя планета системы. А вот если обрыв связи произошел во время полета без автопилота... Может выключить двигатель и лечь в дрейф? С выключенным двигателем орбита корабля неизменна. Ее можно рассчитать на компах тех кто видит корабль. А если не видит никто то тогда когда или вернется хозяин или в эту систему кто-то не прилетит. Координаты и скорость корабля в момент обрыва связи запоминаются на сервере, двигатель автоматически отключается. Межзвездный полет без гиперускорителя по инерции не возможен, корабль можно всегда считать находящимся в той же системе где была потеряна связь. если окажется что во время оффлайна корабль обязан с чем-то столкнуться то после возвращения можно увидеть как выглядела эта катастрофа. Если его сбили (захватили) за это время то траектория уже была рассчитана тем кто сбил и информация об этом на сервере.
А если это был атмосферный полет то автоматически вывести корабль на орбиту. Если нельзя вывести на орбиту то даже не знаю... Попытаться посадить? Считать катастрофой?

Грузовые внутрисистемные корабли имеют программу полета в оба конца, Но конечно траектория будет понемногу меняться с каждым рейсом, так как планеты движутся. Но если в системе никого нет и хозяин в оффлайне то сервер ничего не считает. Никто не видит - ничего нет. Как только хозяин входит в онлайн то сервер загружает ему программу всех его кораблей и тут же происходит расчет где они могут находиться и сколько уже рейсов сделать. И сколько уже успели перевести. Вы писали что-то про N-Body моделирование по расчету автопилота при перелете, это по моему можно использовать.
То же самое происходит, если в систему кто-то прилетает, на его компе происходит расчет. Расчет может быть приблизительным насчет тех рейсов которые никто не видел, если считать такое сложно. Так или иначе кто видит корабли тот и считает где они находятся. И автоматически сбрасывает инфу на сервер. А если гость собьет (украдет) корабль то информация об этом поступит на сервер и хозяин об этом узнает когда подключится.

По моему все выглядит реалистично, главное что бы не было слишком сложно для клиентской машины.
SpaceEngineerДата: Суббота, 28.01.2012, 01:11 | Сообщение # 441
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
Quote (Balog)
А вот если обрыв связи произошел во время полета без автопилота... Может выключить двигатель и лечь в дрейф? С выключенным двигателем орбита корабля неизменна. Ее можно рассчитать на компах тех кто видит корабль.

Гравитация планет её будет постоянно искажать. Если корабль не на устойчивой орбите близи планеты, может получиться что угодно. Посмотрите как летел "Кассини" или "Мессенджер". И представьте, что начальный вектор скорости случайный. Повезёт, если корабль ни во что не врежется... Кроме того, чтобы это рассчитать, нужны неплохие ресурсы.

Так что такой вариант не катит:

Quote (Balog)
ак только хозяин входит в онлайн то сервер загружает ему программу всех его кораблей и тут же происходит расчет где они могут находиться и сколько уже рейсов сделать. И сколько уже успели перевести. Вы писали что-то про N-Body моделирование по расчету автопилота при перелете, это по моему можно использовать.


Если кораблей много, и игрока долго не было, такой рассчёт может занять несколько минут. Игрок будет сидеть и ждать, как будто в обычной игре карта грузится. Нет, с автоматическими беспилотниками придётся поступить проще - примерно посчитать сколько рейсов совершено (время отсутствия игрока поделить на среднюю продолжительность рейса) и определить примерное положение и скорость. А с этого момента считать всё честно.


BalogДата: Суббота, 28.01.2012, 01:40 | Сообщение # 442
Исследователь
Группа: Пользователи
Украина
Сообщений: 211
Награды: 0
Статус: Offline
Насчет грузовых кораблей в самом деле допустимо упрощение, они летают по программе. А вот насчет оставления корабля без управления надолго... Ну предположим сервер зафиксировал последнее положение корабля и связь оборвалась. Больше в системе никого нет и не будет еще долго, месяц, два, год. Дальняя система такая, звезд много, никто понятия не имеет куда полетел корабль, никто не ищет. Потом туда кто-то прилетает или хозяин снова выходит на связь. Если скорость была орбитальной для тела в зоне преобладающей гравитации которого находился корабль то там он и будет, останется лишь узнать где именно на своей траектории он окажется, корабль летит как планета.
Если скорость такова что корабль покидает зону действия этого тела то он в зоне действия тела следующего по иерархии, планеты, звезды. Если и для него скорость слишком велика то корабль летит почти по прямой бог знает куда, но определить где он будет можно.
Сложнее конечно если там сложная обстановка, возмущающие тела... Но я думаю можно на этот случай принять некоторые упрощения. Хотя тот же Орбитер при ускорении времени довольно быстро считает полет корабля и это с гораздо более сложной моделью чем тут. Быстро прокрутить время от момента потери связи до нынешнего момента. Если врезался куда - конец игры. И чем меньше времени прошло тем проще. А если корабль видят другие пользователи то они и считают его траекторию постоянно. Важно только определить кто это будет делать если наблюдателей несколько.
SpaceEngineerДата: Суббота, 28.01.2012, 03:16 | Сообщение # 443
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
Quote (Balog)
Если скорость была орбитальной для тела в зоне преобладающей гравитации которого находился корабль то там он и будет, останется лишь узнать где именно на своей траектории он окажется, корабль летит как планета.

Ну да, можно и так, но это сильно упрощённая модель. А если заезда двойная? А если на пути окажется планета, и корабль или должен врезаться в неё, или пролететь близко (это будет гравитационный манёвр - орбита корабля сильно изменится)? Можно конечно пренебречь этим, всё равно никто не сможет точно восстановить "оффлайн траекторию" корабля.

Quote (Balog)
Хотя тот же Орбитер при ускорении времени довольно быстро считает полет корабля и это с гораздо более сложной моделью чем тут.

В Орбитре максимальное ускорение времени - 10 или 100 тысяч. Это очень мало. Если игрока не было месяц, траектория будет пересчитываться около 30 секунд. Если увеличивать шаг по времени при быстром пересчёте, это снизит точность. Хотя на такую жертву можно пойти. Главное не делать шаг меньше одной десятой периода самой короткопериодической планеты или луны в системе.


BalogДата: Суббота, 28.01.2012, 03:35 | Сообщение # 444
Исследователь
Группа: Пользователи
Украина
Сообщений: 211
Награды: 0
Статус: Offline
Одна секунда за сутки отсутствия это по моему немного.

Я так понимаю что это все в ближайших планах не стоит?
SpaceEngineerДата: Суббота, 28.01.2012, 15:40 | Сообщение # 445
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
В ближайших планах получить стабильную не глючащую физику полётов, аэродинамику, точную проверку столкновений с поверхностью планеты и кораблей друг с другом, систему частиц, анимацию подвижных частей кораблей, бинарный формат моделей, программу или функцию для импорта моделей, поддержку материалов (бамп, спекулар и т.п.), переход на deferred pipeline, тени, антиалиасинг (ажурные корабли очень плохо смотрятся с расстояния без антиалиасинга), игровой интерфейс с режимом карты и визуальным редактором орбит, сделать процедурные галактики, и конечно устранить существующие глюки движка и добиться стабильности.

TR5PROGJETДата: Вторник, 14.02.2012, 01:02 | Сообщение # 446
Нет аватара
Наблюдатель
Группа: Пользователи
Российская Федерация
Сообщений: 11
Награды: 0
Статус: Offline
Предложение на счет износа блоков (модулей) кораблей и других объектов

Есть характеристики, допустим это набор чисел от 0 до 100 - это некие параметры блоков, из которых построено все в игре. Если бы эти параметры со временем (у разных блоков - по-разному) уменьшались, тогда блоки могли бы приходить в негодность, их нужно было бы чинить или заменять. Это может повысить необходимость создания специальных ремонтных кораблей, технологий, всего, что связано с ремонтом и восстановлением.

Еще можно сделать, чтобы совсем изношенные блоки (все параметры очень близки к нулю, или равны ему) полностью переставали нести свою функцию (баки для водорода - при заправке - не заправляются, а топливо либо пропадает, либо рассеивается вокруг бака) и становились космическим мусором. Это бы пригодилось для спутников, которые продолжительное время без обслуживания были бы просто кусками металла и полимеров.
Все объекты с вышеперечисленными параметрами (мусор), можно переработать, получив ресурсов, практически равных их весу (можно считать по формуле, которую еще придумать надо). Или их можно будет буксировать, как астероиды.


Сообщение отредактировал TR5PROGJET - Вторник, 14.02.2012, 01:05
Romario-3DДата: Среда, 15.02.2012, 08:53 | Сообщение # 447
Нет аватара
Исследователь
Группа: Пользователи
Российская Федерация
Сообщений: 177
Награды: 0
Статус: Offline
Quote (TR5PROGJET)
Предложение на счет износа блоков (модулей) кораблей и других объектов

Есть характеристики, допустим это набор чисел от 0 до 100 - это некие параметры блоков, из которых построено все в игре. Если бы эти параметры со временем (у разных блоков - по-разному) уменьшались, тогда блоки могли бы приходить в негодность, их нужно было бы чинить или заменять. Это может повысить необходимость создания специальных ремонтных кораблей, технологий, всего, что связано с ремонтом и восстановлением.

Еще можно сделать, чтобы совсем изношенные блоки (все параметры очень близки к нулю, или равны ему) полностью переставали нести свою функцию (баки для водорода - при заправке - не заправляются, а топливо либо пропадает, либо рассеивается вокруг бака) и становились космическим мусором. Это бы пригодилось для спутников, которые продолжительное время без обслуживания были бы просто кусками металла и полимеров.
Все объекты с вышеперечисленными параметрами (мусор), можно переработать, получив ресурсов, практически равных их весу (можно считать по формуле, которую еще придумать надо). Или их можно будет буксировать, как астероиды.

Какой еще износ? Это же не автомобиль который носится по раздолбанным дорогам и подвергается коррозии от той гадости чем посыпают эти дороги. Что то не припомню чтобы в космосе появлялась ржавчина. Или детали изнашивались как джинса на панке? Разве что будут появлятся повреждения от мелких частиц или метеоров. А сам по себе износ деталей или блоков это мне кажется лишний параметр геймплея который будет только мешать. Тем более если в игре будут технологии нанороботов, то запросто можно ремонтировать при помощи них любые части коробля на ходу.
MefistofelДата: Среда, 15.02.2012, 10:19 | Сообщение # 448
Исследователь
Группа: Команда SE
Пират
Сообщений: 173
Награды: 0
Статус: Offline
Износ для многих конструкций безусловно есть, но в заданных условиях он будет смотреться совсем по другому, ну явно не авто.
Во первых не забываем - у нас есть нанотехнологии, поэтому многие материалы можно восстанавливать. Вопрос старения металла не будет стоять так остро, поэтому несущие конструкции корабля можно считать условно вечными. Все остальные модули и элементы можно разделить по такому же принципу - они либо "условно вечные" либо расходные и в любом случае будут требовать замены(то есть какие нибудь щиты, отражатели, сопла двигателей, камеры реаторов нужно будет все равно менять при каждой заправке, а значит их тоже можно повесить на одну кнопку и забыть)


Сообщение отредактировал Mefistofel - Среда, 15.02.2012, 10:20
BalogДата: Среда, 15.02.2012, 16:27 | Сообщение # 449
Исследователь
Группа: Пользователи
Украина
Сообщений: 211
Награды: 0
Статус: Offline
Не стоит слишком уповать на нанотехнологии в ремонте. далеко не все можно ремонтировать на ходу да и нанороботы тоже не универсальны и не вечны.
Не ломающаяся техника это как-то не спортивно. Построить нанороботами новую технику это я понимаю, а надеяться что хитрые микроскопические роботы будут двигатель чинить во время полета - не правильно.
MibusДата: Среда, 15.02.2012, 18:55 | Сообщение # 450
Первооткрыватель
Группа: Команда SE
Украина
Сообщений: 301
Награды: 0
Статус: Offline
Нормально сделанные конструкции живут как минимум десятилетия. Вояджеру 35 лет - еще работает.
Древнеегипетской дверной автоматике уже 3 тысячи лет, и все еще работоспособна, только ТО проводить надо.
Исключение - механизмы с сильным нагревом и работающие на удар/изгиб конструкции.

Так что на корабле сильный износ грозит только дюзам и стволам плазменных пушек. И то, только если нет магнитного удержания плазмы. А все остальное - это вопрос достаточной надежности элементов, точности их изготовления и отсутствия ненужного усложнения конструкции. При наносборке это вполне достижимо. Таким образом, от естественного износа конструкций можно отказаться вполне обоснованно.

Ну, и остаются повреждения от микрометеоритов и в бою, от столкновений при неудачных маневрах, при пролете через атмосферы планет, вблизи звезд, через облака межзвездного газа. Но для этого есть щит и защитная оболочка внешних модулей, которые можно сделать многослойными и периодически сбрасывать изношенные слои. И только изредка, когда почти все слои сброшены заменять элементы щита или оболочки, как например, делают на шаттлах.


Win7 64 prof, Athlon II x2 256 3.3Mhz, RAM 4GB, GeForce GTS 250 512MB

Сообщение отредактировал Mibus - Среда, 15.02.2012, 18:56
Поиск:

>