Войти
ПроектыФорумОцените

SpaceWay: Вселенная без границ (25 стр)

Страницы: 124 25 26 27 28 Следующая »
#360
7:51, 4 дек. 2011

Ввожу в свой движок физику полёта кораблей. Без предварительного рассчёта орбит или хотя бы каких-то индикаторов скорости или прогноза траектории управлять кораблём нереально :)


#361
23:46, 6 дек. 2011

Эх, лихо дело пошло!
Перебрал код проекта, выловил тонны утечек памяти и всяких багов.
Теперь памяти нужно на 25% меньше, корабли генерятся один раз, можно спокойно выходить в меню и грузить игры одну за другой не выходя из игры.

Можно встать во врата и перебрать все 70 планет 5 галактик что есть в логе, за одну игру без единого вылета, и потребление памяти не превысит за этот маневр ~500 Мб.

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

Для желающих пощупать, помочь подтвердить или опровергнуть - http://orbides.1gb.ru/sway/spaceway-111206-win32.zip (1 Мб)
Форум проекта - http://orbides.1gb.ru/swayforum
Отзывы и списки багов приветствуются, и там и тут.

Neptune
> поиск планет будет элементом геймплея
Это что же за геймплей такой будет?
Вроде у меня такое уже много лет, только никому не интересно.

> А если вместо городов делать аркологии?
Сделать то проще, вот только что же это за мир, где все цивилизации столь развиты?


> Ввожу в свой движок физику полёта кораблей. Без предварительного рассчёта орбит
> или хотя бы каких-то индикаторов скорости или прогноза траектории управлять
> кораблём нереально :)
Правильно, вот у меня и куча всяких индикаторов и автопилот в придачу.

Изображение
Изображение
#362
2:59, 7 дек. 2011

Artlav
> Это что же за геймплей такой будет?
> Вроде у меня такое уже много лет, только никому не интересно.
Поиск планет, пригодных для колонизации, или добычи каких-то ресурсов. Из ресурсов пока видится водород как топливо (точнее рабочее тело) для двигателей. Его можно добывать из атмосфер газовых гигантов (очень долго), из метановых/аммиачных атмосфер планет вроде Титана (быстрее), из льда комет и ледяных лун или океанов землеподобных планет (ещё быстрее). Ну ещё нужны какие-то минералы и металлы, для нанороботов, которые будут из этого строить то, что заказал игрок (строительство занимает время). Колонии позволяют почти мгновенно перезаправлять корабль (сами добывают топливо и складируют его на орбитальных станциях), строют корабли и модули гораздо быстрее чем нанороботы и т.д. Ну а дальше - игрок делает что ему захочется. Может исследовать, может развивать свою империю, может взаимодействовать с другими игроками (онлайн игра) - торговать, воевать, исследовать совместно. Песочница такая. Если дать игрокам взаимодействовать друг с другом, им скучать не придётся.

Artlav
> Правильно, вот у меня и куча всяких индикаторов и автопилот в придачу.
Сделай их более понятными. Ты копировад стиль "Орбитра", тот копировал стиль MFD самолётов, где софт не обновлялся с 80-х. Я вот планирую сделать более интуитивные и понятные человеку MFD (или лучше экраны). Ну а в начале игры сделать туториал в виде курсов обучения пилотированию космических кораблей.

#363
18:15, 7 дек. 2011

о городах

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры

http://www.procedural.com/cityengine/examples.html

Выглядит имхо круто. Может какие идею возникнут :)

#364
18:22, 7 дек. 2011

вот это вообще круть :)
http://www.procedural.com/cityengine/examples/new-york-city-2259.html

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

#365
2:12, 8 дек. 2011

Ужас! Не хотел бы я жить в городе с такой застройкой :) Рай для террористов - можно весь город положить, уронив одно здание. Эффект домино :)

#366
0:54, 23 янв. 2012

Artlav, у тебя планеты ездят по рельсам, или движение моделируется как для кораблей? Я вот у себя наткнулся на проблему. Движение планет сделано через решение уравнеинй Кеплера, это значит что у них нет понятия скорости и траектории, просто перед рисованием вычисляются координаты для текущего времени. С кораблями же всё не так: каждый кадр проводится несколько итераций физики (интегрирование ускорений от гравитации планет и скоростей), так чтобы получалось фиксированное число итераций в секунду, например 150. В итоге получается, что планеты дёргаются относительно кораблей (или корабли относительно планет). Корабли относительно кораблей и планеты относительно планет не дёргаются. Я думаю это из-за разного подхода к рассчётам координат. У тебя была такая проблема?

#367
10:20, 23 янв. 2012

Если не планируешь вводить в игру возможность изменения траектории планеты, то лучше пусть ездит по рельсам

#368
12:33, 23 янв. 2012

Neptune
> у тебя планеты ездят по рельсам, или движение моделируется как для кораблей?
По рельсам.
Барицентрическое решение уравнений кеплера попарно для каждой планеты/звезды/луны и её основного тела.

> это значит что у них нет понятия скорости и траектории
Это странно - и скорость и позиция являются выводом из решения.

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

У тебя рисование и физика отдельно или в одной куче?
Взаимодействие кораблей с планетами происходит корректно?

Neptune
> Сделай их более понятными.
В общем, понятно.
Spaceway - упражнение программиста, а не игра.
И то, что понятно и интуитивно в такой программе будет путать и пугать в игре.

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

#369
13:41, 23 янв. 2012

Artlav
> > это значит что у них нет понятия скорости и траектории
> Это странно - и скорость и позиция являются выводом из решения.
Ещё одна странность - аналитическое вычисление скорости планеты (по элементам орбиты и времени) и численное (разность координат в соседних повремени точках) дают одинаковый результат, но отличающийся на 1-3 км/с от показаний скорости корабля, если он летит параллельно планете.

Artlav
> Такой проблемы не было.
> Что значит дергаются - дергается камера, но положение и скорость совпадают?
> Проверь, что у тебя обновление позиций происходит одновременно.
> У тебя рисование и физика отдельно или в одной куче?
> Взаимодействие кораблей с планетами происходит корректно?
Проверил, действительно в этом может быть проблема. Обновление планет происходит перед рисованием, кораблей - в начале кадра, камеры - после них. Наверное надо вынести обновление всех объектов в начало, потом обновление камеры, потом рисование.

Artlav
> Мне интереснее сделать масштабируемый, модульный движок со всей вселенной, чем
> удобную и красивую игру.
> Так что я буду делать рисованные облака, корабли с разделяемыми ступенями и
> практичные настройки всего движка.
Облака похожи на высоко-кучевые :) Добавь им турбулентности и вихрей.

float   HeightMapClouds(vec3 point)
{
    float zone = cos(point.y);
    float ang = zone * twistMagn;
    float weight = 1.0;
    float offset = 0.0;
    vec3  twistedPoint = point;

    // Compute cyclons
    vec3  cycloneCenter;
    float cycloneRadius = 1.0;
    float cycloneAmpl;
    if (tidalLock != 0.0)
    {
        cycloneCenter = vec3(0.0, 1.0, 0.0);
        cycloneRadius = length(cycloneCenter - point) / cycloneSqrtDensity;
        cycloneAmpl   = -cycloneMagn * sign(cycloneCenter.y);
    }
    else
    {
        vec4 cell = Cell2NoiseVec(point * cycloneFreq);
        cycloneCenter = cell.xyz;
        cycloneRadius = length(cycloneCenter - point) / cycloneSqrtDensity;
        cycloneAmpl   = 0.8*pi * sign(cycloneCenter.y);
    }
    if (cycloneRadius < 1.0)
    {
        float dist = 1.0 - cycloneRadius;
        float fi = mix(log(cycloneRadius), pow(dist, 3.0), cycloneRadius);
        twistedPoint = Rotate(cycloneAmpl*fi, cycloneCenter, point);
        if (cycloneRadius < 0.05)
            weight = 1.0 - pow(1.0 - cycloneRadius / 0.05, 2);
        else
            weight = 1.0;
        weight = weight * (1.0 + dist);
        //offset += 0.7 * dist;
    }

    // Compute Coriolis effect
    float sina = sin(ang);
    float cosa = cos(ang);
    twistedPoint = vec3(cosa*twistedPoint.x-sina*twistedPoint.z, twistedPoint.y, sina*twistedPoint.x+cosa*twistedPoint.z);
    twistedPoint = twistedPoint * cloudsFreq + Randomize;

    // Compute flow-like distortion
    noiseH          = 0.5;
    noiseLacunarity = 2.0;
    noiseOffset     = 0.8;
    noiseOctaves = 4;
    vec3  distort = fBmVec3(twistedPoint * 0.5) * 1.5;
    noiseOctaves = 6;
    float global = (fBm(twistedPoint + distort) + 1.0) * 0.7;
    global = (global + offset) * weight;

    // Compute turbilence features
    noiseOctaves = cloudsOctaves;
    float turbulence = fBm(point * 100.0 * cloudsFreq + Randomize) * 0.1;

    return  global + turbulence * step(0.1, global);
}
Прошло более 6 месяцев
#370
6:15, 2 авг. 2012

Artlav, как успехи? Давно новостей не слышно. Будет версия для Android?

#371
8:08, 2 авг. 2012

Neptune
> Artlav, как успехи? Давно новостей не слышно. Будет версия для Android?
Успехи на http://spaceway.1gb.ru , даже немного по-русски написано.
Версия для андроида есть только без графики, возможно будет версия с графикой для Raspberry PI.

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

#372
19:23, 2 авг. 2012

Как это - без графики? Всё в текстовом виде что ли? :)

#373
21:25, 2 авг. 2012

Neptune
> Как это - без графики? Всё в текстовом виде что ли? :)
Ну смотри:
http://spaceway.1gb.ru/files/sw-120802.zip (1.8Мб)

sw_text - текстовой вариант. (если вылетает - запускать ещё раз, что-то весной мудрил и забыл)
В окне выводится телеметрия полёта и посадки корабля на планету.

sw_view - то же самое, но со всей графикой.
Второй раз должен запускаться быстрее благодаря кешированию.

sw_gr - Набор простых двухмерных систем слежения, с тем же кораблём на автопилоте.
sw_solar - минимальный вариант, где только солнечная система рисуется

Ну и наконец spaceway - полная игра.

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

Именно на эту программисткую красоту и потрачено 90% усилий в Spaceway, оставляя лишь неприглядные 10% на графику, игровые элементы и т.п.

#374
16:31, 4 авг. 2012

Автор, займись геймплеем наконец. Смотри в сторону игры - Parkan.

Страницы: 124 25 26 27 28 Следующая »
ПроектыФорумОцените

Тема в архиве.