вторник, 30 марта 2010 г.

Моделирование звезд

Главные игровые объекты - это конечно же звезды. Что же мы знаем о природе звезд?

Звезда - это гигантский шар раскаленной плазмы, в котором протекают термоядерные реакции с выделением огромного количества энергии.
Эволюция звезды начинается в гигантском молекулярном облаке.
Масса такого облака превышает массу Солнца в 100 000—10 000 000 раз благодаря своему размеру: от 50 до 300 световых лет в поперечнике.

"Параметры" звезды:
- Масса (массы подавляющего большинства современных звёзд лежат в пределах от 0,071 масс Солнца (75 масс Юпитера) до 100—150 масс Солнца)
- Радиус
- Светимость
- Спектральный класс

Эволюция звезды протекает в зависимости от массы:
Коричневые карлики (менее 0.08 масс Солнца) - несформировавшиеся звезды.
Средний размер -> красный гигант (100-800 солнечных радиусов) -> белый карлик + кольцевая туманность
Большие звезды -> красный сверхгигант (1000 солнечных радиусов) -> Сверхновая -> Газопылевая туманность + нейтронная звезда или сингулярность

Также параметры масса - светимость подчинены определённому закону. Этот закон "расставляет" звезды в так называемую Главную последовательность. Звезды в главной последовательности условно поделены на спектральные классы: O B A F G K M
O,B,A - это массивные голубые звезды, F,G,K - желтые солнцеподобные звезды, M - красные карлики.
Для своей игры я условно взял только звезды типов B,A,F,G,K и M. Голубые сверхгиганты класса O - это редкость даже в реальных сформировавшихся галактиках (например в нашей галактике Млечный путь наблюдается всего порядка 200 таких звезд).
Умирающие типы звезд (красные гиганты и белые карлики), а также другие экзотические звездоподобные объекты присутствуют в игре в ограниченном количестве.

Обычно звезды не живут по одиночке. По некоторым оценкам более 70 % звёзд в галактике кратные (двойные или тройные), 70% кратных звезд - тройные. В кратные системы могут входить звезды различных спектральных классов и различной светимости без какой-либо зависимости. Частенько звезды располагаются в Рассеянных звёздных скоплениях - небольших группах звёзд (пример - Плеяды).

Размеры звезд Главной последовательности в солнечных радиусах:
B 7
A 2.1
F 1.3
G 1.1
K 0.9
M 0.4

Теперь несколько слов о распределении звёзд в Галактике. Центр - старые звезды, желтые и красные. Рукава - молодые звезды, концентрация голубых гигантов, а также огромное количество Газопылевых туманностей (диаметром 50-300 св. лет), мало желтых и красных звёзд. Также в центре довольно нередкие такие объекты, как Шаровые звездные скопления. Шаровые звездные скопления: количество звёзд ~10^4-10^6. Диаметры шаровых скоплений составляют 20-60 пк, массы — 10^4-10^6 солнечных. Количество таких скоплений в моей игре = 0.5% от диаметра галактики в пк.
Общее оценочное количество звёзд в галактике: в миллиардах ~ 1% от диаметра галактики в пк.

Информация понадергана в основном из вики.

Вот мы и подошли к итогу - к конкретным цифрам для программы генерации Галактики:
• Центральная сверхмассивная черная дыра
• Газопылевые туманности (диаметр 50 - 300 св. лет) - в рукавах (много)
• Шаровые скопления - в центре, только пояса астероидов. Количество скоплений = 0.5% от диаметра галактики в пк.
• Рассеянные скопления - в рукавах (много)
• 70% - звезды классов K-M (красные карлики)
• 10% - звезды классов F-G (звезды Солнечного типа) между рукавами и в центре
• 4% - белые карлики + кольцевая туманность
• 4% - красные гиганты
• 10% - звезды класса B-A (голубые гиганты) в спиральных рукавах
• 0.02% - коричневые карлики
• 0.02% - тройные звезды с планетами (Артефакты)
• 0.02% - нейтронные звезды
• 0.02% - чёрные дыры

Я решил использовать только спиральный тип галактик. Эллиптические галактики - это старые объекты, в которых звёзды распределены достаточно равномерно, поэтому раздел территории будет происходить также равномерно. В спиральной галактике экспансия будет происходить по рукавам, в каждом из которых может быть создана своя коалиция. Другими словами - шанс возникновения конфликтных ситуаций в спиральных галактиках выше, чем в эллиптических.

Пара слов о солнечных системах:
• Планеты в кратных звёздных системах с тремя и более звёздами не могут иметь стабильные орбиты в течение долгого времени. Стабильные орбиты в обитаемой зоне могут быть только у одиночной звезды или у отдельных двойных звёзд.
• Условно для игры я принял, что в Шаровых скоплениях у звёзд могут быть только пояса астероидов.
• У коричневых карликов будут планеты-артефакты

Внешний вид звёзд
Цвет звезды полностью определяется её спектральным классом. Я написал небольшую программку на HTML Canvas, для демонстрации как будут выглядеть звёзды в моей игре при 100% приближении камеры: Stars



Описание получилось немного сумбурным, да и пофиг. Главное что есть прогресс!

Также подумываю над тем, чтобы полностью написать игровой клиент на HTML Canvas. В такой реализации клиент посылает серверу запросы через AJAX и получает ответы в виде запакованных JSON данных. Движок рендеринга, основанный на Canvas генерирует контент.

вторник, 16 марта 2010 г.

Наброски из моей игры.

Черновое название проекта - Ойкумена. Ещё есть черновое название "Генезис". Пока не знаю как назвать финальный продукт. Решил вначале его сделать. Для удобства коротко называю проект "Оку". Публикую выдержки из моего подобия "диздока" :)

[В квадратных скобках указаны технические детали]

Ойкумена - стратегическая пошаговая космическая онлайн игра.

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

Каждому игроку даётся 10.000 ходов для достижения своей цели.
Каждый ход длится один час в будние дни и 2 часа в выходные. На время крупных праздников игровое время приостанавливается.
Игрок может завершить игру досрочно, в этом случае его владения переходят Повстанцам, и передаются под управление компьютера.
По истечении 10.000 ходов игрок становится Императором, игра завершается и его достижения заносятся в галактический Зал Славы, а все владения передаются компьютеру.

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

Игровая Среда.

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

Карта галактики выполнена как двухмерная карта в полярных координатах. Центром галактики является Сверхмассивная Чёрная Дыра, нахождение вблизи которой губительно для всего живого. От центра галактики простираются несколько спиральных рукавов с молодыми и горячими голубыми звездами, а остальное подавляющее большинство составляют желтые звезды и красные карлики. Время от времени какая-нибудь молодая звезда может взорваться в вспышке Сверхновой и стать колыбелью для множества новых звезд. Но такое случается крайне редко.

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

Единицей измерения расстояний является парсек (пк). [В масштабе 1x в одном экранном пикселе умещается диаметр галактики/1000 пк.]

[Масштабирование галактики.
В оригинальном масштабе показываются звезды на фоне пререндеренной картинки галактики высокого разрешения.
По мере увеличения масштаба картинка имеет всё большую прозрачность.
После определенного момента картинка исчезает, а газопылевые туманности показываются схематически - однотонной заливкой]

[Функции мыши.
Левая кнопка - для выбора, правая для действия.
Колесико - для изменения масштаба.
Прокрутка правой кнопкой - карта смещается на заданное значение, при отпускании правой кнопки плавно отъезжает назад]

[Миникарта.
На миникарте отображается часть галактики с маштабом в 2 раза меньшим, чем в главном окне.
Левой кнопкой мыши на миникарте можно выделить прямоугольную область для наезда камеры.
Правая кнопка мыши - центрует положение на выбранной точке]

Игровые Расы.
Всего в игре присутствует 5 рас: Люди, Симбиоты, Киборги, Карбонцы и Плазмоиды.
Люди - используют щиты и оружие, повреждающее электронику (ЭМП), средства электронной маскировки. Любые каменные планеты, за искл. экстремальных клим. условий.
Симбиоты - корабли и оружие представляют собой живие организмы, оружие пробивает щиты (Ментальная атака). Регенерирующая броня. Только планеты земного типа и гайи.
Киборги - мощное бронебойное вооружение, но подвержены воздействию ЭМП (создает помехи). Каменные планеты с любым климатом, кроме водяных и ледяных.
Карбонцы - обитатели углеродных планет. мощное вооружение имеюющее массовый урон и крепкая броня. Нет щитов. Хорошо поражаются энергетическим оружием. Имеют биологическое оружие.
Плазмоиды - обитатели звезд и газовых гигантов, неуязвимы для большинства кинетического вооружения, абсорбируют энергооружие, в большей степени подвержены воздействию Пси атак. Мощные щиты, нет брони. Мощное энергетическое вооружение. При атаке отражают часть урона.

Принцип камень-ножницы-бумага: Люди -> Плазмоиды/Киборги -> Киборги/Карбонцы -> Карбонцы/Симбиоты -> Симбиоты/Люди -> Люди/Плазмоиды.
Через черту указаны расы, которые уязвимы в меньшей мере.


Типы небесных тел.
Газовые гиганты: Горячие гиганты, холодные гиганты, может быть система колец.
Поле астероидов
Каменные планеты: углеродные планеты (больше углерода), планеты земного типа (больше кислорода). Различаются размерами и температурой. Углеродные планеты в основном у красных карликов, потом доля планет земного типа увеличивается при повышении температуры звезды. Каменные планеты могут быть спутниками газовых гигантов. Типы каменистых планет: кислотные, вулканические и углеродные(экстремальные), пустынная, скалистая, земного типа (гайа), водяная, ледяная, безжизненная (без атмосферы, экстремальная)
У звезды может быть не более 7 планет/полей астероидов. У планет может быть не более 4-х спутников. Таким образом у звезды не может быть более 28 небесных тел.

Координатная система, названия звезд и планет.
Все звёзды в галактике располагаются в полярных координатах. Центром (0;0) является черная дыра в центре галактики. Полярная ось направлена вправо от центра. Длина полярной оси = половина диаметра галактики в пк. Угловая координата изменяется от 0 до пи радиан против часовой стрелки. Для упрощения радианы преобразуются в галактические градусы, чтобы их можно было писать целыми числами. Длина дуги одного градуса на расстоянии радиуса галактики равняется одному парсеку.
Также в галактике существуют условно поделенные игровые зоны, называемые Галктическими секторами. У каждого сектора есть своё собственное имя, и за каждым сектором закреплён один или несколько игровых серверов, которые его обрабатывают. Положение секторов определяется следующим образом: 0й сектор расположен в центре галактики, далее сектора распространяются спирально, относительно центра, образуя гексагональную сотовую спираль. Название секторов выбирает администратор при создании галактики.
Названия звездных систем могут иметь две схемы:
Схема I: Название звезды получается случайной комбинацией 2-4 слогов мужских и женских имен русского языка. Например: Макан (МАКсим-АНдрей), Лайяна (никоЛАЙ-татьЯНА), Корис (КОнстантин-боРИС)
Схема II: Название состоит из условного двух-трёхбуквенного кода: напр RGV, ER, XVB (буквы могут повторятся) и двух чисел A-B. A = 10000...99999, B = 10...9999. Примерные названия: WXP 23455-443, YK 14720-77.
Звёзды названные по схеме II составляют 10% от общего числа звезд.
Также звезды можно назвать собственными именами, одобренными администрацией.
Планеты и поля астероидов нумеруются римскими цифрами: I, II, III, IV и так далее до VII.
Спутники планет нумерются малыми латинскими буквами, в порядке: a, b, c и d.
Таким образом звезда имеет две координаты: галактический угол и расстояние от центра. Звезда принадлежит определенному сектору галактики. Примерные полные названия: RR 34123-127 (звезда), Ласандр V (планета/поле астероидов), Вотинда IIa (спутник), Сириус IV (именное название звезды разрешенное администрацией).

Конечно я не изобретаю велосипед. Пошаговая схема игры взята из Outer Space, только я решил сделать игру бесконечной (в Outer Space игра в галактике завершается после того как один из игроков становится Императором). Взаимоотношение рас - это моя выдумка. Три расы: Люди, Киборги и Симбиоты взяты из Outer Space + к ним добавлено ещё две расы, которые могут существовать по современным научным представлениям: существа из плазмы и существа, обитающие на углеродных планетах.

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

Устройство галактики, координатная система, название звезд и распределение планет по типам - тоже моя идея, основанная на фактах, как это приближенно может быть в реальности.

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

вторник, 9 марта 2010 г.

Что же произошло

Что же произошло в жизни орга, за последние 2-3 года?

1. Успел влюбиться, немного пожить и расстаться с прекрасной девушкой - Катей :) Привет Кэт :)
2. Я закончил ремонт своей квартиры, остались мелкие доработки и для меня начинается самостоятельная жизнь :( Никакого супа, блинов и компота :(
3. 2 года назад я подсел на наркотик, называемый OGame. С тех пор прошло много времени, я достаточно хорошо познал игру и создал свой сайт с утилитами для игры: http://ogamespec.com. С одной стороны я забросил эмуляцию и прежние интересы, с другой стороны я много узнал нового в программировании для Web (DHTML, CSS, JavaScript и PHP), а также в устройстве браузерных игр и как с их помощью можно рубить бабло (SMS-микроплатежи).
4. Примерно пол года назад мой старый почтовый ящик (kvzorganic@mail.ru) взломал Ал, ответив на секретный вопрос, который я и сам давно забыл. Ящик был зареган в 2001 году и его немного жалко. Также произошёл неприятный инцидент со взломом моих игровых аккаунтов в OGame :)
5. Я загорелся идей создать свою стратегическую онлайн игру на космическую тематику. Для этой цели был разработан специальный скриптовый движок на базе Lua, OpenGL и OpenAL, я назвал его "Ойкумена".
6. Наконец-то отправил NES покупателю. GameCube и остальные материалы для omegaone до сих пор лежат. Связи с омегой нет.

Очень хочется вернуться в эмуляцию, но я понимаю что это уже никому не нужно, кроме горстки моих сетевых друзей. Да и времени свободного уже нет. Сон - Работа - Дом с 6 утра до 9 вечера :) Передаю привет всему каналу #emurussia :)