Gaminator 7. Несыть :: Разработка
Содержание: Концепция :: Начало:: Разработка :: Релиз :: Ещё :: Уи-ха!
Всё пошло совсем не так гладко, как я предполагал. Времени потратил много, а результатов появилось не очень, но, по крайней мере, могу с гордостью заявить, что с дистанции не сошел и продолжаю работать!
Преальфа (просто ручкой из могилки помахать)
Пока есть ползающая по плоскому тайловому бэкграунду голова и предательски низкий FPS, хотя вроде бы Direct3D (пусть и в оконном режиме) и при таком мизерном рендере должно летать. Голову и прочие части (которые пока не рисуются) накидал вчерне в CorelDraw — как-то стыдно было использовать для WIP чужие картинки. Бэкграунд, впрочем, не мой, взят с http://lenagold.ru.
Если также медленно всё пойдёт, то на выходе останется также в Кореле набросанный минимализм в гамме помрачней и стилизованные препятствия — «минигигер по-сельски», короче. Следующий этап — учимся ползать в том же отладочном желтом антураже.
Добавлено 24.08.2011: Понял проблему с тормознутостью. Низкий FPS из-за вертикальной синхронизации на 60-герцовом ЖК-мониторе. Убрал синхронизацию и получил 3000 с гаком кадров в секунду при таком же размере окна и 200 кадров при развороте на 1920х1080. Комплексы о недостаточной производительности отброшены.
Добавлено 25.08.2011: Дошел до реализации движения червя, сразу всплыла проблема. Реализовал самый простой и первым приходящий в голову алгоритм: звено червя двигается с той же скоростью, что и голова в направлении предыдущего звена. Увы, на поворотах задние звенья начинают срезать углы и, проходя меньший путь, догоняют голову. На картинке красным — точки траектории головы, а крестики, это центры звеньев, которые специально разнесены далеко для иллюстрации.
Нюанс в том, что скорость червя у меня будет меняться и нельзя провести задние звенья по точкам пути головы — на разных скоростях шаги на траектории будут разные. Сейчас попробую хранить траекторию головы списком точек и с помощью линейной интерполяции устанавливать позиции звеньев на траекторию на определённом расстоянии от головы.
Альфа 1.0 — кто хочет порулить червяком?
Добавлено 26.08.2011: Выкладываю первый релиз, дремучую альфу, в которой реализованы движения и наращивание длины червя. Каждое съеденное яблоко увеличивает размер головы червя и прибавляет одно звено. Графика отладочная, музычка и звуки тестовые. Специально для любителей быстрой езды оснастил червя акселератором (пробел во время движения).
Раз весь дебаг-арт табачно-желтый, то фоновая композиция будет соответствующая: Imelda May — Smokers's Song. Прошу отписаться, если заметите какие-либо косяки. Например, если картинка отличается от того, что видно на скрине, музыка не играет, нет звуков при поедании яблок или движения червя навевают недостаточно ужаса на обывателей. Управление:
стрелки вперёд и назад — движение и остановка
стрелки влево и вправо — поворот
пробел — дополнительное ускорение
wasd — дублирование стрелок
m — включить/отключить звуки
1, 2, 3, 4 — отладочный вывод (на картинке)
esc- выход из игры
Можно развернуть на весь экран, но это не для слабонервных, так как фон сейчас пестроват, через некоторое время подташнивать начинает. Приятного просмотра! :)
Альфа 1.1 — издание исправленное и дополненное
Добавлено 28.08.2011: Спасибо за тестирование, друзья, ваше внимание бесценно! Суббота пропала по семейным обстоятельствам, зато всё воскресенье ушло на то, чтобы подготовить следующую версию альфа версию, в которой исправлены все найденные вами ошибки, учтены пожелания, а также есть несколько плановых изменений.
1. Реализован дельта-тайминг, теперь игровой движок работает с максимальной скоростью, всё серьёзным образом заплавнело.
2. Исправлена ошибка с порядком вывода частей тела.
3. Путь головы записывается по равным промежуткам перемещения, а не времени.
4. Исправлена ошибка связанная со сворачиванием окна — теперь не падает.
5. Реализовано экспериментальное управление — ускорение зависит от частоты поворотов, стрелка «вперёд» включает режим плавного перемещения.
6. Снижена яркость бэкграунда — ваше зрение вам ещё пригодится.
7. Добавлен отладочный вывод характеристик червя.
8. Добавлены режимы паузы (ввод, пробел) и подтверждения выхода (esc), использованы белый и красный вариант шрифта Bicubik в трёх размерах.
9. Изменён алгоритм формирования тела — хвост (область сужения) имеет ограниченную длину и после увеличения червя больше этой длины размер звеньев уже не меняется, хвост начинает расти вместе с головой.
10. Алгоритм поворота червя теперь учитывает и размер и скорость червя. Новые картинки не рисовал — загиб звеньев всё равно пока работает не как шарнир, углы звеньев топорщатся.
Управление экспериментальное, к нему поначалу надо привыкнуть (особенно тем, кто тестировал предыдущую версию). Чтобы ускориться и, вообще, тронуться с места нужно поочерёдно изгибать червя в разные стороны. Стрелка вперёд больше не «газует», она включает функцию плавного перемещения — повороты становятся плавными, набирать скорость и перемещаться так удобнее. В любой момент, можно отпустить стрелку «вперёд» и молниеносным движением съесть яблоко, развернуться или выкинуть какого-нибудь другого финта — поворот в «резком режиме» практически не зависит от скорости (только от размера червя) и позволяет делать довольно забавные трюки. Стрелка «назад» теперь включает дополнительное плавное торможение, помимо естественного затухания скорости червя. Удачного ознакомления!
P.S. Отладочный вывод теперь на один режим больше: 1,2,3,4 и 5.
Альфа 1.2 — отточено и завёрнуто
Добавлено 01.09.2011: Команда самоотверженных тестеров доблестно продолжает стачивать пальцы о клавиатуру и не выпустить очередной релиз было бы просто преступлением! Спасибо всем, кто слушает это радио!
1. Реализовано масштабирование всей сцены, в частности зависимость приближения камеры от скорости червя.
2. Содержимое области вывода автоматически масштабируется под высоту окна.
3. Фон сменен на более человеколюбивый, при масштабировании старый давал много неприятных эффектов.
4. Исправлены обнаруженные ошибки в управлении.
5. Кнопка «вперёд» теперь не включает, а отключает «плавный» режим движения.
6. Исправлен алгоритм выкладывания рандомной еды — вишнеяблоки больше не падают друг на друга и червя.
7. Вставлен экспериментальный саундтрэк.
Добавлено 01.09.2011: Реализовал какую-никакую обработку столкновений с препятствиями и краями карты, сделал отладочный вывод на спрайтах. Пока для релиза изменений маловато, поэтому просто скрин и работать дальше.

Альфа 2.0 — запасаемся попкорном
Добавлено 02.09.2011: В этот раз никакого интерактива, просто запускаем и смотрим, как два червяка (допустим Вася и Боря) соревнуются в поедании яблок! Кнопочки 2 и 4 включают и отключают отладочный вывод, проливающий свет на природу ИИ.
1. Реализован режим редактора карт (только в девелоперской версии), добавлены разноразмерные тестовые препятствия.
2. Автоматические избегание препятствий как для игрока, так и для ИИ (в этой версии самим вам поиграть не получится).
3. К червям и яблокам теперь рисуются полупрозрачные тени, мультяшность немного выпятилась.
4. Реализована логика ИИ для преследования целей и выхода из сложных ситуаций.
5. Реализована возможность нахождения в игре любого разумного количества червей.
6. Часть отладочного вывода реализована на спрайтах и выглядит приятнее прежних линий.
Бета 1.0 — выжить среди смертной любви
Добавлено 03.09.2011: Время бессердечно утекает, а нужно успеть столько всего! Всем, кто силен духом (я честно говоря, сам стремаюсь в это играть) и не может дождаться завтрашнего общего финиша посвящается этот релиз.
Времени нет расписывать — очень много. Кратенько опишу основное, что нужно знать для выживания.
1. Черви появляются из яиц, когда те достигнут определённого размера.
2. Овечки появляются из ферм (желтые круги), их можно есть. Они растут, но медленно.
3. Червь может откусить у другого червя любые звенья, которые меньше его головы.
4. Черные черви жрут яблоки, овечек и падаль, а красных следует опасаться больше — они любители откусить свежего мяса прямо «с куста».
5. Кнопка «4» поможет узнать о намереньях ИИ.
6. Если червю отожрали хвост, то пока он не наест столько же, сколько потерял, то дальше не растёт.
По умолчанию сделал полноэкранный режим, если нужно в окошке, то запускайте файлик Sateless_Windowed.bat в папке игры.
Боюсь, что ответить на все комментарии не смогу — надо релиз готовить. Но если у вас появится какое-то очень важное предложение или типа того, то пишите, я обязательно всё прочту. Всё, пошел работать дальше.
Кстати! Если за вами уцепился красный червь — повернитесь к нему головой, голову обычно он откусить ещё не может. Берегите хвостики!
- 24 августа 2011, 01:37
- 012
Ненасытная утроба приглашает тестеров для близкого знакомства!
Выложил первую тестовую версию.
Это ЯБЛОКО? оО
А по теме:
:( Ты бы не мог попробовать обновить DirectX? Боюсь, что нужен какой-то из последних - я использую D3DX, чтобы через Direct3D выводить 2D графику.
P.S. Будем считать, что это гранат - степень сходства приблизительно такая же, как и с яблоком или вишней. :)
9.0c
На ХР круче вроде некуда. Нетбук же.
Хе-хе, большое спасибо за обратную связь! Я нашел описание проблемы: вот оно, если интересно. Не хватает дебажной dll'ки, она только в полном SDK есть. Активно ищу пути правильной компиляции...
Скачал d3dx9.dll, противный Sateless.exe (твой, твой) потребовал к нему в нагрузку MSVCP100.dll и MSVCR100.dll
Вот, скачай, замени exe-шник, я поправил: фикс. Скажи, а можешь удалить твою скаченную d3dx9.dll и просто оставить в папке с игрой мою D3DX9_43.dll из папки с фиксом - будет работать?
Все работает ;)
Что не понравилось: при зажатии кнопки "вниз" червь отчего-то резко останавливается, с какой бы скоростью ни полз.
А в остальном супер) Ждем противников
А что за информация по единичке? Маска столкновения?

И еще, чем крупнее червь, тем больше конец хвоста похож на жало. Ну несерьёзный хвостик какой-то.
UPD: обнаружил проблему с отрисовкой: конец хвоста рисуется то над серединой, то под ней.
Кнопка назад - отладочная, скриншоты делать постановочные. :)
По единичке габаритные окружности. У меня не реализована функция выводящая окружности, поэтому я просто помечаю границы окружности сверху-снизу-слева-справа.
Проблему с отрисовкой решаю, Electronic нашел её чуть раньше.
C d3dx9.dll это действительно необходимо, у меня не дебажную требует, просто 43, это версия библиотки, у дебажных постфикс d.
А вот последние две - требование для CLR (.NET и всё такое). Это я пытаюсь убрать. Спасибо тебе за терпение! :)
Да завсегда пожалста :)
Зря ты экзешник ненасытным назвал, имхо :)
Как вы судно назовёте, так оно и поплывёт. :)
Забавный glitch, см. картинку.
При врезании в стену, к слову, есть возможность изогнуть змею под любым углом, а не только кругленько.
И музыка классная. Мне, правда, скорее Neverhood напоминает, чем Гигера :).
О, поздравляю, ты занял третье почётное место среди тестеров - ещё одна бага! Я звенья вывожу отдельно, собрав их в отсортированный контейнер (std::set), вот только полноценный оператор сравнения перегрузить поленился - у меня вроде и тупо сравнение указателей работало, а у тебя видимо память выделялась не из большого линейного куска, а то там, то сям. Короче надо каждому звену присваивать номер и учитывать это при сравнении звеньев. Спасибо!
Я ничего не говорю, но зачем std::set? У них же порядок чёткий.
Почему было не покидать их в linked list? Это будет тормозить отрисовку?
У меня тайловая карта объектов - каждый объект привязан к крупной ячейке(один из отладочных выводов её рисует) для сокращения перебора при обработке столкновений. При рендере я пробегаю по ячейкам карты объектов, поэтому звенья червя перебираю не по их порядку. Вот тут и нужен сортирующийся контейнер, в который запихиваешь как придется, а вынимаешь уже по порядку. :)
Для вдохновения тебе :).
Мокрицы. Секреты отвращения.
Я потом звенья перерисую, чтобы при сгибе не вылезали углы - как кости в коленке должны соответствовать друг-другу. Тогда будет отвратительней выглядеть. А вот дыры между звеньями наверное оставлю - общий стиль минималистский придется выдерживать, на большее в остальной графике не потяну.