Онлайновая походовая космическая стратегия.

 
1 2 3
IL Serge Pod #26.04.2003 15:08
+
-
edit
 

Serge Pod

администратор

Почему на Perl а не на Java?
In knowledge we trust!  
+
-
edit
 

Balancer

администратор
★★★★☆
Если совсем вкратце, то Java - сон разума :D © сами-знаете-кто. ИМХО, конечно. Чудовищно громоздкий синтаксис, бедность языковых конструкций, сложность отладки, невысокая скорость и т.д. и т.п.

Кроме того, Perl я знаю отлично, а Java - я ещё на первых порах обучения понял, что это совсем не то, что мне нужно :)
 
IL Serge Pod #26.04.2003 15:49
+
-
edit
 

Serge Pod

администратор

Balancer>Если совсем вкратце, то Java - сон разума :D © сами-знаете-кто. ИМХО, конечно. Чудовищно громоздкий синтаксис, бедность языковых конструкций, сложность отладки, невысокая скорость и т.д. и т.п.

Balancer>Кроме того, Perl я знаю отлично, а Java - я ещё на первых порах обучения понял, что это совсем не то, что мне нужно :)


Все с тобой ясно. Полнейший волюнтаризм. :cool:
In knowledge we trust!  
+
-
edit
 

Balancer

администратор
★★★★☆
S.P.>Все с тобой ясно. Полнейший волюнтаризм. :cool:

А как же иначе... :)
 

yuu2

опытный

hcube>>Я бы еще понял, если бы быстродействия не хватало...
Balancer>PHP хорош для интерфейсов. Но для обсчёта ходов понадобится запускать скрипты по cron'у. А тут Perl немного удобнее :) Да и как числодробилка он лучше. Не говорю уже про строки :) Больше возможностей для управления процессами и т.п.

Ну не знаю, как у всех, но у меня основным ограничением будет не скорость обработки данных (всё-таки только дважды в сутки), а объём входящего/исходящего мыла - начиная с уровня 200-300к в сутки на приём. Да и базовскому серверу придётся пересылать немерянное число заданий - каждому игроку по итогам хода свой пакет, чтоб не было соблазна "подсмотреть" в информации противника (думается, у всех здесь присутствующих есть опыт редактирования сэйвов в MOO и MOO-2).
 

yuu2

опытный

Balancer>Да, это я как-то не совсем точно "ага" сказал :) Просто для заданного сектора пространства имеем одну звезду. По координатам считаем её параметры, параметры её планет и т.п.

Повторюсь - это просто расстановка звёзд на карте. При статичной карте то, каким образом мы их расставили, как сгенерили их параметры, всё это важно ТОЛЬКО на момент первой загрузки карты.

yuu2>>Неее-а. Если в планах коллонизация/модификация планет, то одной только расстановкой звёзд дело не кончится.
Balancer>Естественно. Но в "большой Вселенной" только лишь малая часть звёзд реально колонизирована :) Вот для них уже можно хранить полную информацию.

Тут прежде была цифра про 50 вполне пригодных систем на игру из 5 игроков. А на невполне пригодных (как в MOO-2) можно ставить маяки/заправочные станции или как у Буджолд - вообще внепланетные StarBase - была бы потребность.

Поэтому рано или поздно число звёзд с "метками" разумной деятельности приблизится к полному числу звёзд. Т.е. если на 50 потенциально обитаемых будет 500 полностью бросовых, то больше 1к пересылаемого описания в расчёте на одну звёздную систему заводить нельзя. А это будет 0.1к описания в расчёте на единичную планету. Маловато будет!
 
+
-
edit
 

Balancer

администратор
★★★★☆
Ещё раз повторюсь, что я за основу хочу брать звёздную систему Фронтиера. А это - неограниченное число звёзд :D Реально, в "обозримой" вселенной - миллионы...

50 звёзд даже для 5 игроков - это несерьёзно. Это на однократную игру.

У меня же главная цель - создание перманентной игры. Чтобы новичок, вступив в игру, где живут и воюют уже десятки рас, мог иметь шансы развиться и укрепиться до начала серьёзных стычек с ним.
 

yuu2

опытный

Balancer>Ещё раз повторюсь, что я за основу хочу брать звёздную систему Фронтиера. А это - неограниченное число звёзд :D

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

Balancer>У меня же главная цель - создание перманентной игры. Чтобы новичок, вступив в игру, где живут и воюют уже десятки рас, мог иметь шансы развиться и укрепиться до начала серьёзных стычек с ним.

Ну тогда как раз 5 игроков, 50 звёзд и перманентно враждебное окружение - как имитация старших братьев по космосу.
 

Lerm

втянувшийся
Balancer>У меня же главная цель - создание перманентной игры. Чтобы новичок, вступив в игру, где живут и воюют уже десятки рас, мог иметь шансы развиться и укрепиться до начала серьёзных стычек с ним.

А как такое предложение: игровое пространство разбито на несколько зон. В каждой зоне несколько игроков. Как только они достаточно разовются, то происходит подстыковка этой зоны к другой, примерно равной по силе. Поскольку одни игроки будут выбывать :D, а другие усиливаться, то будет происходить постепенная фильтрация игроков по силе. Существует главная зона - "Центральный сектор", куда попадают самые сильные игроки. В рузультате получается модель с несколькими "лигами". А каждый игрок сражается с примерно равными по силам соперниками.
Немного по поводу того как может происходить состыковка зон: соединяются две наименее занятые стороны карты, при необходимости добавляются новые звездные системы.

Balancer>Собираются из готовых модулей, особенности которых зависят от конкретных рас и их технического уровня.

Хорошы бы и строения проектировать так... (Т.е. есть типовые блоки: строительный модуль, добывающий модуль, жилой модуль, бонусный модуль (+ к защите, обнаружению и т.д.), а мы создаем из них свои строения (типа "Офис колониального управления" :D).

Balancer>Если совсем вкратце, то Java - сон разума © сами-знаете-кто. ИМХО, конечно. Чудовищно громоздкий синтаксис, бедность языковых конструкций, сложность отладки, невысокая скорость и т.д. и т.п.

Я плакал... :lol: :lol:
You live and learn. Or you don't live long.  
+
-
edit
 

Balancer

администратор
★★★★☆
На счёт зон - можно подумать... Только как же тогда разнообразные типы космических перелётов? :)
 

yuu2

опытный

Balancer, Apr 29 2003, 15:49:
На счёт зон - можно подумать... Только как же тогда разнообразные типы космических перелётов? :)
 

Нет нужды в зонах. Должна быть экономика такой, чтобы долгие-долгие ходы неудачно коллонизированная (неумело захваченная) планета не приносила ничего кроме убытков.

Будут подходящие модели экономики планеты и экономики государства - давить маленьких и пока неразумных станет накладно. Также на случай завоевания нужна модель внутренней политики (асимилляции).

А возможность/дальность/скорость перелётов - дело технологий, но никак не фундаментальных правил.
 

yuu2

опытный



Ну что? как только речь о модели, так тишина? Предлагаю свой вариант.



Ничего не имею против расстановки звёзд через псевдослучайную функцию. Итак, для звезды номер 1323 в последовательности псевдослучайных чисел с параметром 4543 получили ряд 0.010203040506070809101112131415...



Первые 3 позиции (010) отведём под координату Х; вторые 3 (203) - под координату Y; третьи 3 (040) - под координату Z. Здесь и далее в скобках - численное значение данной позиции в вышеприведённой последовательности.


Десятая позиция (5) - тип звезды


позиции 11-18 - прописанные базовые (сгенерённые) свойства планеты #1:


11 (0) - тип планеты;


12 (6) - тип атмосферы;


13 (0) - масса/гравитация планеты;


14 (7) - доступность минерала №1;


15 (0) - доступность минерала №2;


16 (8) - доступность минерала №3;


17 (0) - доступность минерала №4;


18 (9) - доступность минерала №5.


позиции 19-26 - тот же набор параметров для планеты №2;


позиции 27-34 - тот же набор параметров для планеты №3;


позиции 35-42 - тот же набор параметров для планеты №4;


позиции 43-50 - тот же набор параметров для планеты №5



Хватит работы генератору или ещё планет добавить - до 10 шт на звезду? Собственно - вопрос о разрядности функций генератора. Для звезды с 5 планетами - 50 стабильно генерируемых десятичных цифр; для звезды с 10 планетами - "всего-то" 90.



Итого: имеем вселенную с 10 типами звёзд; вокруг каждой вращается 5 (или 10) планет причём в классе "планета" различается 10 различных типов планет (от 0="нет планеты" до 9="газовый гигант-протозвезда") у каждой из планет 10 возможных типов атмосферы (от 0= нет атмосферы и далее) 10 уровней тяготения на планете (от 0="сверхнизкая" до 9="сверхвысокая"). И каждая планета обладает набором полезных ископаемых (скажем №1 - водород; №2 - железо; №3 - люминь; №4 - уран; №5 - элериум - список можно уточнить) различной степени доступности.



Но всё это - лишь описание исходной вселенной. А дальше - экономика-технологии-политика; принципы походовой организации; принципы боёв и т.п.



Тогда раса, рождённая под звездой тип 2 на планете тип 4 с атмосферой тип 6 и гравитацией уровня 8 (раса 2-4-6-8) будет получать "пенальти" в создании колонии на другой планете, причём штрафы будут на столько выше, на сколько дальше параметры колонизируемой планеты/звезды отстоят от "родных" значений. Т.е. в принципе оказывается возможным мирное сосуществование где-нибудь (5*5*5*5) 625-ти различных рас со слабыми технологиями. Хотя, естественно, повод повоевать для старых "орионистов" всегда найдётся. По мере развития вышеупомянутая раса 2-4-6-8 сможет окучивать всё большее число планет, но это не значит полное отсутствие "равных возможностей" для "младшего брата" - расы 7-1-2-6. Тем более, что таких рас "тип 7-1-2-6" можно распихать по отдалённым закоулкам штук 10-15 - насколько позволит объём вселенной.

 
Это сообщение редактировалось 05.05.2003 в 16:53

yuu2

опытный



Онлайн отсох? Или в тайных лабораториях что-то варится?
 
+
-
edit
 

Balancer

администратор
★★★★☆
yuu2, May 14 2003, 08:11:
Онлайн отсох? Или в тайных лабораториях что-то варится?
 

Пока в тайных лабораториях санитарный день... Отходняк варится... :)
 
+
-
edit
 

timochka

опытный

Balancer, May 19 2003, 11:41:
>Онлайн отсох? Или в тайных лабораториях что-то варится?

Пока в тайных лабораториях санитарный день... Отходняк варится... :)
 

- Отходняк готов?
- Готооооов!!!
- Разливай :-)))))))))))

Интересную вы тута весчь обсуждаете. У меня только вопрос возник относительно принципов работы движка.
Как я понял строится целый мир, мир большой и долгоживущий. Т.е. игроков будет много и они будут играть месяцами. Сам мир будет существовать годами.
А теперь вот такой вопрос. Для того что-бы ваш мир динамично развивался надо будет каждый день тратить время на игру. Строить что-то, лететь куда-то, задавать стратегию развития, и т.д. Но вот иногда у игроков не будет время заниматься своим миром. И что тогда? Остальные то играют, кто-то может прилелеть в мир где хозяина отсутстствует (болеет 2-й месяц, в командировку уехал, и т.п.) и завоевать его (отвечать то некому, флоты перебазировать, армию мобилизировать). Если мир на время отсутствия хозяина замораживать то другие проблемы - прилететь туда нельзя (он же изменений не допускает). Ну и не развивается он, соседи-то промышленность развивают, корабли строят - растут. А соседний мир так первобытной колонией и остается.
Если все ждать будут пока ушедший юзер откликнется (ходы по очереди) - это совсем грустно будет.

Т.е. как синхронизировать локальное время участников?
 
+
-
edit
 

Balancer

администратор
★★★★☆


>Но вот иногда у игроков не будет время заниматься своим миром. И что тогда?


Первоначально, как в VGA Planets будет - просто юниты будут выполнять последние приказы и т.п. Кстати, для активных юнитов (космических кораблей и т.п.) можно предусмотреть продвинутые настройки автономного поведения, скажем, как в Total Annihilation. Потом - можно и ИИ будет прикрутить.


>Т.е. как синхронизировать локальное время участников?


Локального времени не будет, только глобальное :)
 
+
-
edit
 

timochka

опытный

Balancer, May 20 2003, 12:10:
>Но вот иногда у игроков не будет время заниматься своим миром. И что тогда?


Первоначально, как в VGA Planets будет - просто юниты будут выполнять последние приказы и т.п. Кстати, для активных юнитов (космических кораблей и т.п.) можно предусмотреть продвинутые настройки автономного поведения, скажем, как в Total Annihilation. Потом - можно и ИИ будет прикрутить.


>Т.е. как синхронизировать локальное время участников?


Локального времени не будет, только глобальное :)
 

Локальное будет хотябы потому что один с утра приказы раздает, а другой вечерами.

У меня идея есть, но она оригинальная. Суть в том что пока мир изолирован в нем может быть любое время.
То есть примерно так сервер выдает игрокам кванты игрового времени (допустим квант = 1 суткам) когда всем игрокам очередной квант выдан корректируется глобальное время игры.

Все события для игрока и его миров делятся на внутренние и внешние. Внутренние события не меняют ситуацию за пределами собственных миров игрока и не оказывают никакого воздействия на других игроков (даже информационного).

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

Пример.
1) Рождение = создание базовой колонии = начало игры для игрока - событие внешнее, для него известно глобальное время.
2) Игрок что-то строит оно развивается со стандартным темпом.
3) Игрок уходит на неделю, за это время сервер раздает игрокам по 7 суток игрового времени и переводит глобальную дату на 7 суток вперед.
4) Игрок возвращается и видит что у него что-то там не так развилось, но к нему никто не прилетал, он сам тоже никуда не летал, т.е. внешних событий не было.
Тогда он может переиграть последние 7 суток игрового времени заново. Т.е. вернуться назад скорректировать стратегию, построить что-то другое, и т.д. При этом вернувшись назад во времени он безусловно стирает текущую ситуацию и вернуться к ней не сможет. Проиграть 7 суток игрового времени можно за любое кол-во времени (темп локального времени регулируется).

Вернуться назад можно только до последнего внешнего события. Прибывание у него чужих кораблей, баз, и т.п. это внешние события. Пребывание юнитов в других системах одновременно с чужими юнитами - внешние события. Т.е. пока юзер видит противника - все события внешние. Когда не видит (и противник его не видит) внутренние.
 
+
-
edit
 

Balancer

администратор
★★★★☆


Гм. "Откаты" для каждого игорка потребуют снятия "копии Вселенной" по каждому "внешнему" событию. Что тоже нетривиально, думаю... Хотя идея интересная.
 
+
-
edit
 

timochka

опытный

Balancer, May 20 2003, 13:38:
Гм. "Откаты" для каждого игорка потребуют снятия "копии Вселенной" по каждому "внешнему" событию. Что тоже нетривиально, думаю... Хотя идея интересная.
 

Как раз нет! Нужна только ОДНА копия по последнему внешнему событию. И не всей вселенной, а только его мира(ов). А все полеты это внешние события и они происходят только по глобальному времени. Т.е. игрок откатив время назад лететь в занятые миры не может. Только в пустые.

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

Пример.
Глобальное время (20 сентября).
Система А (последнее внешнее событие 12 сентября). В системе живет игрок Х.
Система В (последнее внешнее событие 15 сентября). Система пустая, 15 сентября ее посещал корабль игрока У.

Игрок Х может отмотать свое локальное время назад до момента 12 сентября, но когда бы он не полетел в прошлом в Систему В, он не сможет прилететь туда ранее 15 сентября, даже если считается что переход длится 1 сутки. Корабль получив приказ на переход из Системы А в Систему В будет ждать до 14 сентября, а потом совершит переход за одни сутки (Или будет совершать гиперпереход в течении 3 суток, с 12-го по 15-е. Типа аномалия пространства-времени :)).
 
+
-
edit
 

Balancer

администратор
★★★★☆


Вот только как выделять "локальность" объекта.


Очень много технических проблем в определении этого мне видится...


Хотя реально, конечно...
 
+
-
edit
 

Balancer

администратор
★★★★☆
Да и злоупотребление этим возможно. Предположим, игрок "Б" будет всё время сканировать систему игрока "А". И всё, игрок "А" не сможет сделать ни одного отката :)
 
+
-
edit
 

timochka

опытный

Кстати, Рома, я тебя не напрягаю этим обсуждением ? Можно и отложить.
 
+
-
edit
 

timochka

опытный

Balancer, May 20 2003, 14:20:
Да и злоупотребление этим возможно. Предположим, игрок "Б" будет всё время сканировать систему игрока "А". И всё, игрок "А" не сможет сделать ни одного отката :)
 

Сканировать он может только держа там юнит все время. Или гоняя его туда-сюда (тогда возникают дыры в 2 суток. сутки туда переход, сутки обратно). Нормальная тактика. Конечно откаты невозможны если у тебя есть сосед с флотом. Тут у обоих должно быть одинаковое время.

В принципе должна быть возможность замораживать время в системе администратором. Т.е. запрешены все внешние события (влет, вылет, и присутствие в системе других игроков). Но это больше техническая вещь.
Мало ли для чего надо построить мир, или организовать детский загончик для новичков.

локальность определяется просто.
1) Система пуста - время ничье, событий нету.
2) В системе один игрок - время системы включено в локальное время игрока, все события локальные события игрока.
3) В системе 2 игрока время глобальное, все события глобальные

Когда из системы уходит 2-й игрок устанавливается время последнего глобального события. (предел отката для оставшегося игрока). Tglobal
Когда из системы уходит последний игрок устанавливается время последнего локального события системы и отмечается принадлежность события этому игроку. Tlocal + LastOwner.

Итого 3 параметра определяют возможности отката для каждой системы.

Если игрок владеет несколькими системами то возможность отката определяется наиболее поздним событием для ВСЕХ его систем.
 
+
-
edit
 

Balancer

администратор
★★★★☆
timochka, May 20 2003, 14:42:
Кстати, Рома, я тебя не напрягаю этим обсуждением ? Можно и отложить.
 



Не напрягаешь :)


В остальном - сперва сделать надо хотя бы "живую" Вселенную :)
 
+
-
edit
 

timochka

опытный

Balancer, May 20 2003, 15:12:
timochka, May 20 2003, 14:42:
Кстати, Рома, я тебя не напрягаю этим обсуждением ? Можно и отложить.
 



Не напрягаешь :)


В остальном - сперва сделать надо хотя бы "живую" Вселенную :)
 

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

Вот я и хочу сразу оговорить кой какие возможности.
 
1 2 3

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru