1. Друзья, в это тяжёлое и непонятное для всех нас время мы просим вас воздержаться от любых упоминаний политики на форуме, - этим ситуации не поможешь, а только возникнут ненужные ссоры и обиды. Это касается также шуток и юмора на тему конфликта. Пусть войны будут только виртуальными, а политики решают разногласия дипломатическим путём. С уважением, администрация Old-Games.RU.

    Скрыть объявление
  2. Пожалуйста, внимательно прочитайте правила раздела.
  3. Если Вы видите это сообщение, значит, вы ещё не зарегистрировались на нашем форуме.

    Зарегистрируйтесь, если вы хотите принять участие в обсуждениях. Перед регистрацией примите к сведению:
    1. Не регистрируйтесь с никами типа asdfdadhgd, 354621 и тому подобными, не несущими смысловой нагрузки (ник должен быть читаемым!): такие пользователи будут сразу заблокированы!
    2. Не регистрируйте больше одной учётной записи. Если у вас возникли проблемы при регистрации, то вы можете воспользоваться формой обратной связи внизу страницы.
    3. Регистрируйтесь с реально существующими E-mail адресами, иначе вы не сможете завершить регистрацию.
    4. Обязательно ознакомьтесь с правилами поведения на нашем форуме, чтобы избежать дальнейших конфликтов и непонимания.
    С уважением, администрация форума Old-Games.RU
    Скрыть объявление

Space FRAGZ 2

Тема в разделе "Мастерская", создана пользователем MaxEd, 25 май 2009.

  1. MaxEd

    MaxEd

    Регистрация:
    5 авг 2004
    Сообщения:
    1.006
    Space FRAGZ 2 [UPD: Demo]

    В далёком 2004ом году, в ходе изучения в МГИУ курса какого-то предмета (название уже стёрлось из памяти) в качестве курсовой работы я написал мультиплеерную игру Space FRAGZ. В неё даже кто-то играл (на пустых парах) и даже был фан! Интерес к игре нехарактерно не остыл и после сдачи курсовой, была переделана графика, добавлено второе оружие, улучшен подсчёт статистики... Впрочем, к началу следующего семместра разработка всё-таки была заброшена, в частности - из-за отвратительного качества кода :) Поэтому игра не дождалась ни ботов, ни "подключения на лету", которого так хотелось всем.

    В этом году для поддержания старых навыков и освоения новых, я решил писать римейк, Space FRAGZ 2. В этой теме я буду выкладывать апдейты хода разработки.

    Немного о самой игре:

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

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

    Ссылка на последную версию: http://stream.ifolder.ru/12516686

    ----------------------------------------------
    А теперь, собссно, первый лог разработки:
    ----------------------------------------------
    Space FRAGZ Development blog #1

    Потрачено: ~13 часов

    За прошедшее время я, во-первых, составил приблизительный набросок майлстоунов, уточнил цели и подходы, которые будут использоваться в проекте, и сделал все задачи к первому майлстоуну. Итак, что у нас сейчас есть:

    Сервер:
    • Ловит в отдельном потоке соединения с клиентом и проводит процесс присоединения к игре (пока - только отсылает клиенту комманду с его ID и принимает комманду с его именем)
    • Ловит комманду от клиентов и обрабатывает комманду, в которой клиент описывает, что хочет сейчас делать
    • Считает перемещения для клиентов (пока - для одного объекта)
    Клиент:
    • Соединяется с сервером, ждёт от него приветственной комманды и отсылает комманду со своим именем (пока - захардкоженным)
    • Включает видео-режим и рисует задник космоса (звёздочки)
    • Читает клавиатуру и формирует на основании нажатых клавиш комманду для сервера
    • Принимает от сервера свои новые координаты

    Ниже есть скриншот и примерный Roadmap. Сроки в нём не проставленны, и содержание майлстоунов может меняться в любой момент в любую сторону.

    Скриншот версии Milestone 1

    Roadmap
     
    Последнее редактирование: 7 июн 2009
  2.  
  3. Dimouse King of Mice

    Dimouse

    Администратор Переводчик

    Регистрация:
    18 апр 2003
    Сообщения:
    34.670
    Что-то вроде плоского NetWars? Интересно! :)
     
  4. MaxEd

    MaxEd

    Регистрация:
    5 авг 2004
    Сообщения:
    1.006
    Space FRAGZ Development blog #2

    Потрачено: ~21 часов

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

    Визуально, главным достижением стало появление планеты (пока одной). Планета - это статический объект, который никуда не передвигается и не может быть уничтожен, но об него можно удариться. Пока, правда, столкновения в полной мере не реализованы, а энергии нет вообще. По хорошему, список планет (а также других статических объектов) должен передаваться клиенту только один раз: не имеет никакого смысла засорять сеть сообщениями о никуда не движущейся планете, у которой не меняется ни скорость, ни энергия! Пока, правда, я отсылки такого списка не сделал :) В будуем, можно будет сделать планетам гравитацию, чтобы они немножко притягивали истребители a la Star Control, но поскольку такой фичи не было в Space FRAGZ 1, то пока я не буду пытаться её делать, если только меня не занесёт.

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

    Список по пунктам того, что было сделано:

    Сервер:
    • Теперь создаёт новый объект-истребитель для каждого подсоединившегося игрока.
    • Создаёт перед началом игры объект-планету
    • Передаёт новому клиенту seed, число, используемое генератором случайных чисел для расстановки звёзд и других графических объектов-украшений. Это гораздо проще, чем генерировать такие объекты на сервере, а потом передавать их на клиенты, как было сделано в первой части игры.
    • Считает столкновения между объектами, представленными наборами окружностей. Пока при столкновении скорости тупо инвертируются.
    Клиент:
    • Получает от сервера параметры мира (размеры, seed) и генерирует звёзды
    • Правильно отрисовывает объекты, отличные от истребителя игрока
    • НЕ считает столкновения. Это нужно исправить, ждать результатов от сервера - слишком долго.

    Под катом - новый скриншот

    Скриншот версии Milestone 2 (1)
     
    Dimouse, SAS и kreol нравится это.
  5. heleo

    heleo

    Регистрация:
    6 июн 2006
    Сообщения:
    99
    MaxEd, если не секрет на чем пишешь и есть какие нибудь интересные особенности?
     
  6. MaxEd

    MaxEd

    Регистрация:
    5 авг 2004
    Сообщения:
    1.006
    Никаких секретов! :) Пишу на C++. За графику, звук и ввод отвечает бессменная Allegro версии 4.2.x (с нестабильной 4.9.x я в этот раз связываться не стал, хотя уже имею опыт общения с ней). Кроме того, я активно использую набор библиотек Boost (в особенности - тамошние сокеты (Boost.Asio) и сериализацию (Boost.Serialization) ). Данные и настройки, наверное, буду хранить в XML, а читать при помощи TinyXML, модифицированной моим начальником на прошлой работе (в репозиторий его патч не прошёл, потому что "не компилится под SPARC").

    Вот как-то так :)
     
    Гик нравится это.
  7. MaxEd

    MaxEd

    Регистрация:
    5 авг 2004
    Сообщения:
    1.006
    Space FRAGZ Development blog #3

    Потрачено: ~30 часов

    Дело двигается, несмотря на все препятствия, главным из которых, как всегда, является лень и нелюбовь к планированию :) Столкновения в игре терепь работают адекватно, благодаря позаимствованному с gamedev.net коду (в принципе, писать там особенно нечего, но придумывать в сотый раз велосипед было лениво). Точнее, они работают ПОЧТИ адекватно - иногда вы можете получить неожиданный вектор скорости :) Но это, скорее всего, последствия аппроксимации некруглого объекта окружностью.

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

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

    Важно: начиная с этого майлстоуна, вы имеете возможность поиграть в свежую версию игры Space FRAGZ 2!

    Ссылка на Space FRAHZ 2 Milestone 2: скачать (ссылка на ifolder, поэтому рано или поздно она исчезнет; чтобы скачать более свежие версии - смотрите более новые посты)

    Сообщения об ошибках, предложения и просто комментарии можно писать здесь.

    Список по пунктам того, что было сделано:

    Сервер:
    • Правильно вычисляются новые скорости после столкновения
    • Объекты теряют энергию при столкновениях и умирают
    Клиент:
    • Улучшена генерация задника
    • Отрисовывается лайфбар
    • При смерти своего корабля, показывается сообщение

    Под катом - новый скриншот

    Скриншот версии Milestone 2 (2)
     
    Последнее редактирование: 7 июн 2009
    SAS, heleo, Dark Savant и ещё 1-му нравится это.
  8. heleo

    heleo

    Регистрация:
    6 июн 2006
    Сообщения:
    99
    что то планеты друг не друга накладываются иногда, и вылетает =) при нажатии ESC, а иногда виснет хотя складывается впечатление что зависание есть результат зацикливания в расчетах, и если уж на то пошло галакти ниче так выглядят, ток цвета зеленый и желтый порой уж очень яркие получаются

    З.Ы. описание прочитал после того отправил пост
     
    Последнее редактирование: 7 июн 2009
  9. MaxEd

    MaxEd

    Регистрация:
    5 авг 2004
    Сообщения:
    1.006
    Оба бага известны и описаны в Space Fragz 2.txt. Первый будет исправлен в следующей версии, второй - ближе к финальной версии, ибо некритичный и связан с 3rd party библиотекой.

    А вот это уже интересней. Подробностей нет? Может, после более продолжительной игры виснет, или после каких-то действий? Мне пока повесить не удавалось :)
     
  10. heleo

    heleo

    Регистрация:
    6 июн 2006
    Сообщения:
    99
    ну как говорил на ESC происходит не совсем коректный выход, ка виснет просто в полете примерно через 10-15 секунд либо вообще не виснет. Конкретней сказать не смогу могу только если данные дебагера привести =)
     
  11. MaxEd

    MaxEd

    Регистрация:
    5 авг 2004
    Сообщения:
    1.006
    Я там утечку памяти нашёл, может, она виновата... Смотреть надо. А ещё у меня есть мысль попробовать прикрутить Dumper, чтобы можно было сбросить виндовый минидамп, хотя бы, в случае зависания, но на этот счёт я пока не уверен.
     
  12. heleo

    heleo

    Регистрация:
    6 июн 2006
    Сообщения:
    99
    MaxEd, я бы на твоем месте поставил бы логирование в файл на игровой цикл и постепенно сузил круг поиска до конкретных функций.
     
  13. MaxEd

    MaxEd

    Регистрация:
    5 авг 2004
    Сообщения:
    1.006
    heleo, да, можно и так. Жалко, что у меня не удаётся никак зависание повторить... Но я вчера, вроде, отловил все утечки, так что в следующей версии посмотрим, стало ли легче (текло там хорошо так - под 2Кб в секунду).
     
  14. MaxEd

    MaxEd

    Регистрация:
    5 авг 2004
    Сообщения:
    1.006
    Space FRAGZ Development blog #4

    Потрачено: ~35 часов

    Эта неделя, в основном, прошла под флагом исправления ошибок. Во-первых, я случайно заглянул в Task Manager, и с ужасом осознал, что в программе имеется жуткий memory leak на два килобайта в секунду примерно. Утечка оказалась в сокетах (где ж ещё?!), и была в конце-концов пофикшена, что может улучшить перформанс и стабильность следующей версии.

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

    Главным же достижением с визуальной точки зрения, стало появление астероидов. Это крайне раздражающие игроков объекты, носящиеся по космосу в случайных направлениях, и при столкновениях резко меняющие скорость и курс игрока (и, естественно, отнимающие энергию!). Астероиды в будущем можно будет расстреливать (в отличие от планет), но как показывает практика - проще от них уворачиваться, тем более, что после смерти они через некоторое время всё равно респавнятся. Пока что они случайно подбирают место возрождения, но в будущем я планирую сделать так, чтобы они выбирали место и скорость исходя из того, что они никого не должны задеть в первые несколько секунд своей очередной жизни.

    В плане ведения счёта столкновения с астероидом, как и столкновение с планетой, если оно привело к вашей смерти, засчитывается как -1 фраг!

    Сегодя я не буду выкладывать новую версию, так как до завершение всех задач по Milestone 3 ещё далеко. Но ожидание стоит того! M3 - первая версия игры, в которой игрок, наконец, сможет пострелять :)

    Список по пунктам того, что было сделано:

    Сервер:
    • Устранены утечеки памяти
    • Написана функция расстановки объектов без столкновений (без учёта скорости)
    • Добавлен класс объекта Астероид с специфическим поведением в полёте и при респавне.
    • Увеличен размер игрового мира
    Клиент:
    • Добавлены астероиды
    • Пофикшены некоторые мелкие графические баги

    Скриншот версии Milestone 3(1)
     
    Dark Savant, heleo, Master of the force и ещё 1-му нравится это.
  15. heleo

    heleo

    Регистрация:
    6 июн 2006
    Сообщения:
    99
    не проще респавнить их только в не пределах экрана?
     
  16. MaxEd

    MaxEd

    Регистрация:
    5 авг 2004
    Сообщения:
    1.006
    К сожалению нет, так как игра мультиплеерная :) Так что придётся постараться, чтобы он не столкнулся ни с одним из игроков сразу после появления... В первой версии игры это была довольно заметная проблема: летишь себе мирно, постреливаешь по одногруппнику лазером, и тут вдруг раз тебе в бочину астероид, появившийся из ниоткуда! :)

    Проблем же с определением "с кем столкнётся этот объект в течении N миллисекунд" нет - вся проверка столкновений на этом алгоритме, упёртом с gamedev.net, работает.
     
  17. Master of the force

    Master of the force

    Регистрация:
    21 ноя 2005
    Сообщения:
    1.028
    Надеюсь проект доживёт до пятой стадии ибо заинтриговал очень =)
     
  18. MaxEd

    MaxEd

    Регистрация:
    5 авг 2004
    Сообщения:
    1.006
    Спасибо, я тоже на это надеюсь :) Мало того, я надеюсь, что он потом проживёт ещё несколько стадий, поскольку Milestone 5 - это всего лишь восстановление того, что уже было сделано. А хочется большего :) Но - не будем загадывать, путь предстоит ещё долгий.
     
  19. MaxEd

    MaxEd

    Регистрация:
    5 авг 2004
    Сообщения:
    1.006
    Space FRAGZ Development blog #5

    Потрачено: ~46 часов

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

    Добавились новые кнопки управления: Z - выстрел (да-да, я знаю, это только мне так нравится; но переназначение управления я сделаю позже!) и Alt-S - показ статистики клиента (можно посмотреть, что тормозит).

    Кстати, выяснилось, что сетевая часть заметно тормозит, так что в ближайших моих планах стоит её оптимизация. Отсылка комманд может занимать до 20% времени работы клиента (физика даже никогда столько не занимает).

    На данный момент, мне не очень нравится визуальная составляющая игры, но следующая версия будет посвещена не ей: ближайшей целью является получение версии, пригодной для реальной игры по сети с другими игроками и её тестирования. Украшательства (а вместе с ними - перерисовка всех спрайтов) войдут в Milestone 5 или 6.

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

    Новая версия выложена на ifolder, и её можно скачать (Не забудьте прочитать Space Fragz 2.txt, как минимум - секцию известных багов).

    Как всегда, приветствуются предложения и багрепорты.

    Список по пунктам того, что было сделано:

    Сервер:
    • Устранены очередные ошибки в сетевом коде
    • Добавлен класс объекта Лазер, энергия которого в полёте убывает
    • Рассчёт результатов столкновения переписан, чтобы учитывать, например, что лазер наносит повреждения независимо от скорости и массы
    Клиент:
    • Добавлен лазер
    • Добавлена кнопка выстрела
    • Добавлен радар

    Под катом - новый скриншот
    Скриншот версии 3(2)
     
    Последнее редактирование: 22 июн 2009
    Master of the force, heleo и kreol нравится это.
  20. Киба

    Киба

    Регистрация:
    4 май 2009
    Сообщения:
    27
    MaxEd, SF2 не запустился ругнувшись на некорректную настройку, я глянул в ридми.
    При данной ошибке ты рекомендуешь скачать нечто с сайта Микров, но ссылка мертвая.
    Извини если не в тему.
     
  21. heleo

    heleo

    Регистрация:
    6 июн 2006
    Сообщения:
    99
    А ниче так прикольнее стало, ток если не трудно поставь рандом на различные скины планеток. И еще неплохо было бв уменьшить время жизни лазерного луча, а то мона задом летая себе в зад зарядить пучек протонов. Тем более что лазер после смерти на респавне может в тебя сразу влететь, да и при двоих игроках уже ахтунг будет, помимо бешеных астеройдов еще и лазеры. Кстати если врежешься в свой лазер и помрешь кому фраг запишут?

    И еще если есть желание то мона было бы учитывать при выстреле скорость коробля и ссумировать (вычитать) из скорости лазера.

    З.Ы. А память то утекает... так неспешно... литров по 45 за секнду.
     
    Последнее редактирование: 23 июн 2009
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление