Платформы пока только linux и windows, в перспективе планируется Android, MacOS и iOS ЯП: Java Движок: D2D2 - мой велосипедный движок, использующий OpenGL (LWJGL) Жанр: Арена
Практически все самописное.
Планируется множество персонажей с разными характиристиками. Стараюсь делать все максимально подробно настраиваемым и кастомизируемым. Планирую сделать возможность загружать контент на сервер, чтобы, затем он был скачан клиентами при запуске той или иной карты. Режимы: все против всех, захват флага, командный бой, спринт (гонка кто первее всех соберет все чекпоинты на пути к финишу) В комплекте присутствует редактор карт. Реализована так мной называемая система мапкитов - набор элементов, из которых можно собирать сколько угодно карт в редакторе. Есть разные игровые элементы, типа пикапов здоровья, оружия, ключей. А также, движущиеся платформы, крюки на которых можно висеть, двери, порталы, пружины, жидкости, "ветра", шипы и так далее. Все это пока не реализовано, по крайней мере в режиме сетевой игры, который будет, наверное, елинственным. Синглплеер пока не вижу надобности пилить, хочу сделать упор именно на мультиплеер. Планирую сделать NPC-ботов с мозгами +- как в Quake III Arena.
Можно писать собственные серверные моды на JavaScript. Мод представляет собой стандартную библиотеку и набор коллбеков типа function onPlayerConnect(playerId, playerName) { //... }
function onPlayerEnterRoom(playerId, roomId) { //... }
Вдохновили NES, Quake III Arena и GTA San Andreas Multiplayer.
Сейчас все написано на Java 17, соответственно, для запуска нужен 17-й Java Runtime Environment. Теоретически я мог бы сдаунгрейдить проект до популярной сейчас Java 1.8, но очень уж не хочется исключать возможность юзать прекрасные фичи языка 17-ой версии.
Тестовый превью-клиент: https://d2d2.ancevt.ru/ (пока только для windows и linux 64-ёх битной архитектуры) На данный момент, правда, вы там увидите только ровно то, что в видеорелейтедах, поэтому, похоже, качать клиент пока нет особой необходимости, поскольку на захощенном мной сервере запущена карта, в которой практически пусто.
Планирую, также, запилить YouTube-канал, возможно, с периодическими стримами.
Реквестирую любые идеи по теме, если есть желание, можете принять участие в разработке, с меня как всегда. Демо персонажа рисовал и анимировал один мой друг много лет назад. Совершенно не умею рисовать, все, что вы видите в видеорелейтедах рисовал не я, поэтому please welcome.
Сейчас, в виду обилия свободного времени, очень упорно взялся за этот проект. Буду стараться постить сюда репорты о проделанных успехах и беклоги.
- наконец доведен до ума (надеюсь) мой байтоебский велосипедный сетевой движок (реализован протокол); - появился какой никакой экран входа, в последствии думаю его улучшить, сделав возможность сохранять сервера в список; - улучшен чат, в протоколе появилась возможность задавать цвет сообщениям; - для сервера и клиента теперь можно использовать конфиги в формате .conf. Проперти можно оверрайдить, если при запуске передать аргумент -Pproperty-name=value; - введена проверка имени на невалидные символы и невозможность зайти на сервер с именем, которое уже в данный момет есть на сервере у какого-либо игрока; - сервером теперь можно управлять в реальном времени печатая команды ему в stdin; - появился rcon (remote control), можно из клиента залогиниться в ркон, передав ркон-пароль и также управлять сервером прямо из игры посредстввом команд чата; - теперь в одном жирном jar-е все нужные библиотеки для всех поддерживаемых платформ (windows, linux, macos); - появился загрузчик текста и картинок по HTTP; подгрузка списка тех кто помог проекту; - некоторые багфиксы;
Планируется в ближайшее время:
- поддержка передачи файлов в протоколе (нужно для загрузки НА и С сервера карт, макпкитов, ассетов, персонажей и прочего); - добавить еще одного персонажа, сделать пока на коленке первоначальный вариант экрана выбора персонажа; - реализовать стрельбу с основным оружием; - реализовать класс пикопав; - реализовать класс повреждающих объектов, таких как шипы; - синхронизация динамических объектов (не игроков), например пуль или пикапов; - расширить текущий мапкит и собрать новую карту, старая надоела глазу, да и вообще слишком маленькая и пустая; - переход между комнатами; - сделать так, чтобы между собой синхронизировались только игроки находящиеся в одной комнате; - сделать кэширование данных для HTTP подгрузчика; - табличка со списком всех игроков с их id, никами, фрагами и пингами (по нажатию TAB); - спроектировать работу с БД на сервере, для сохранения фрагов и регистрации игроков; в дальнейшем может пригодиться для чего-то еще; - при сборки runnable-билда атоматически создавать .exe-шник для windows при сборке; - сделать нескучную и симпатичную видеопрезентацию проекта с комментариями, пояснениями и туром по компонентам проекта; - более-менее оформить тележный канал и группу;
Думаю, что технической работы тут уже достаточно. Это беклог на неделю, но, возможно, все до единого пункты я выполнить не успею. В этом случае, перенесу часть пунктов на следующий "спринт". Вдруг у кого-то с маком есть желание и возможность помочь мне протестировать клиент на маке, тест на 2-3 минуты, пожалуйста, напиши мне. Или желание принять участие в это прекрасном, перспективном, молодом и динамично развивающемся проекте на самом его зарождении, пока делаю все один, что довольно таки потно. Мыло i@ancevt.ru или телега @ancevt
Страница с актуальным клиентом (и сервером) теперь здесь: https://d2d2.ancevt.ru/releases/ (теперь есть и exe-шник для винды, но Java 17 runtime все равно required)
Рабочтающий сервер захощен здесь 95.163.209.74:2245 к нему можно подключаться (адрес вписывать на стартовом экране клиента)
Я, правда, не слишком тщательно все тестировал, возможны проблемы, но это пока не релиз, а так, сырая выкатка, чтоб можно было почекать как работает дополненная синхронизация мультиплеера.
Следующий пост уже постараюсь написать с играбельным билдом с ареной, оружием и режимами.
Все так же в поисках компаньенов по разработке, если, вдруг, часом, кому интересно, телега: @ancevt
Ниже текущий длясебяшный "todo list", здесь и то, что сделано и что собираеюсь сделать на выходных. Многое, также, сделано чего в этом списке нет вообще, я все что сделал и не упомню уже, можно смотреть по коммитам.
✅ теперь в протоколе бинарнымы являются только синхронизация и передача файлов, все остальное в виде Java DTO объектов (фактически по сети гоняется JSON) ✅ варнинг/еррор окно на клиенте ✅ обрыв соединения при таймауте, если не было дто о заходе на сервер; ✅ наколеночный генератор Sceneries; ✅ асинхронная загрузка карты; ✅ сделать заполнялку конфигов значениями по умолчанию на сервере и клиенте ✅ убрать modules ✅ расставить лицензии ✅ починить логи для desktop ✅ разработать подпротокол синхронизации (минисообщения) ✅ unit-тесты сетевой подсистемы и file transfer-а;
Редактор: ✅ esc в редакторе должен отменять выбраный айтем; ✅ баг с копированием персонажа игрока, убрать возможность копирования/удаления/вырезания ✅ баг с появлением персонажа в палитре мапкита ✅ реализовать постраничность в палитре мапкита ✅ сделать локер слоев
✅ добавить поддержку скольки угодно мапкитов на карте; ✅ добавить возможность использовать сколько угодно атласов в мапките -- написать список всех динамических объектов на первый релиз; -- сделать нормальные контекстуальные исключения и повесить глобальные перехватчики на desktop и server; ✅ поддержка передачи файлов в протоколе (нужно для загрузки НА и С сервера карт, мапкитов, ассетов, персонажей и прочего); ✅ полный пайплайн передачи файлов от сервера; ✅ опциональное сжатие файлов GZIP ✅ ContentManager (maps, mapkits), подгрузка карт и мапкитов с сервера, если те изменены; -- весь мир теперь процессится на сервере как эталон без рендера, а клиенты только с ним синхронизируются on demand; -- добавить еще одного персонажа, сделать первоначальный вариант экрана выбора персонажа; -- реализовать стрельбу с основным оружием; -- реализовать класс пикапав; -- реализовать класс повреждающих объектов, таких как шипы; -- синхронизация динамических объектов (не игроков), например пуль или пикапов; -- расширить текущий мапкит и собрать новую карту, старая надоела глазу, да и вообще слишком маленькая и пустая; -- переход между комнатами; -- сделать так, чтобы между собой синхронизировались только игроки находящиеся в одной комнате; -- сделать кэширование данных для HTTP подгрузчика; ✅ табличка со списком всех игроков с их id, никами, фрагами и пингами (по нажатию TAB); -- спроектировать работу с БД на сервере, для сохранения фрагов и регистрации игроков; в дальнейшем может пригодиться для чего-то еще; ✅ при сборке runnable-билда атоматически создавать .exe-шник для windows при сборке; -- поддержка JavaScript для скриптинга поведения динамических объектов и ботов; -- ОТРЕФАКТОРИТЬ СУЩЕСТВУЮЩИЙ КОД НА ВЕРХНИХ УРОВНЯХ АБСТРАКЦИИ насколько хватит терпения;
>>796709 Не лучше ли крюк добавить, чтобы притягиваться к стене/врагу? При этом крюк не должен занимать слот оружия, просто встроенная способность. Геймплей будет намного динамичнее.
>>796714 Да, спасибо, я вот думаю добавить каждому персонажу (пока их два, но должно быть штук 20) свой скилл (не оружие). Типа когда накопилась энергия, можно ультануть.
>>796799 Ну это типа риск: либо прыгаешь и забираешься до пикапа, либо играешь без него. К тому же карты будут большие, а это всего лишь тестовая зона.
> Кстати, какие способности планируешь добавить? Пока список даже для себя еще не составлял, но, вероятно это будут: Левитация, двойной прыжок, вот тот крюк, раздвоение (бегают две модельки), увеличение (становится 2х размером и 2х ХП), ну в общем все на что хватит фантазии.
Плюс, у всех персонажей разные характеристики, такие как скорость, высота прыжка, макс хп и т.д.)
>>797397 За персонажей заплатил не помню сколько, тысяч 5, но это было давно. Передний план (объекты) сам рисовал (не умею, рисую очень долго и очень плохо). А фон взял из рандомного интернета, спросив разрешение, но не получив ответа. И, наверное, не получу, так как картинка была запощена 4 года назад.
>>797398 >За персонажей заплатил не помню сколько, тысяч 5, но это было давно. 5к за двух анимированных персонажей? "давно" это когда?
>Передний план (объекты) сам рисовал (не умею, рисую очень долго и очень плохо) приятные тайлы. единственный минус - повторяются. нужно рисовать несколько вариантов одного и того же тайла и пихать их рандомно (ну или вручную дизайнить) То, что очень много времени уходит - жопа конечно. Я поэтому и спросил. Хочется узнать сколько выходит по цене. Иногда проще заплатить денежку чем ебаться самому. На самом деле на начальном этапе тайлами лучше не заниматься - когда будет более менее готовый проект- тогда и тайлы рисуй.
Как давно занимаешься проектом? Сколько часов в неделю тратишь? Чому не на готовом движке пишешь? велосипедист? Не смотрел варики интеграции игры со стимом/гугломагазином? как я понимаю таблица рекордов/статистика/рейтинг в планах есть.
>>797493 > 5к за двух анимированных персонажей? > "давно" это когда? Это было так давно что я даже уже не помню, году в 2015-м, может я ошибся на пару косарей. Товарищь по другой сетевой игре рисовал.
> приятные тайлы. единственный минус - повторяются. нужно рисовать несколько вариантов одного и того же тайла и пихать их рандомно (ну или вручную дизайнить) > То, что очень много времени уходит - жопа конечно. Я поэтому и спросил. Хочется узнать сколько выходит по цене. Иногда проще заплатить денежку чем ебаться самому. > На самом деле на начальном этапе тайлами лучше не заниматься - когда будет более менее готовый проект- тогда и тайлы рисуй.
Согласен, хочется оставить рисование на более дальнюю по времени перспективу, и так, наверное, правильно, но чтобы кому-то показывать, включая потенциальных спонсоров и инвесторов, нужна хоть какая-то более менее приятная глазу картинка. Да и самого напрягает, когда при тестировании на экране бегает куча прямоугольников, хочется от работы получать если и не деньги, как в обычном профессиональном программировании, откуда я выкатился, то хотя бы эстетическое удовольствие чтобы вдруг не вскрыться однажды
> Как давно занимаешься проектом? Именно этот проект начал в январе 2021, взял для этого свои старые наработки и немного их подправил/переписал.
> Сколько часов в неделю тратишь? Занимаюсь проектом каждый день с утра до ночи, практически. Жалко что пока один, хочется работать в команде, но никто не хочет работать бесплатно, как я, поэтому я никого не осуждаю. На самом деле, я в январе решил все таки воплатить свою детскую мечту: в детстве играя в NES я понял, что когда вырасту стану программистом и напишу свой многопользовательский платформер. Программистом я стал, и даже относительно успешным, а вот теперь пришло время и для создания игры. Бросил работу, побираюсь на сигареты и дошик, и пишу игру целыми днями. Можно в любой момент снова начать работать на дядю или тетю, и зарабатывать, но меня просто убивает вот эта подневольная жизнь вместо воплощения мечты.
> Чому не на готовом движке пишешь? велосипедист? Да, именно.
> Не смотрел варики интеграции игры со стимом/гугломагазином? как я понимаю таблица рекордов/статистика/рейтинг в планах есть. С площадками вроде стима в России (откуда я) сейчас все плохо, говорят. Рейтинг, статистика в планах есть, и даже есть в планах турниры с розыгрышем блокчейн-токенов в качестве призов, но я глубоко об этом пока не думал, только в общих чертах.
>>797512 >Занимаюсь проектом каждый день с утра до ночи, практически. С января 2021? может таки 2022? запалу хватает?
>Бросил работу, побираюсь на сигареты и дошик, и пишу игру целыми днями. Можно в любой момент снова начать работать на дядю или тетю, и зарабатывать, но меня просто убивает вот эта подневольная жизнь вместо воплощения мечты. Етить, это ты зря. Лучше найти что-нить ненапряжное за мелкий прайс и сидеть прям на работе кодить игрулю. Или ты планируешь за пару месяцев релизнуть? у тебя опыт в геймдеве есть?
Я надеюсь ты планируешь возможность для игрока использовать редактор уровней... иначе такой велосипедище зря пропадёт
>>797513 > может таки 2022 Ой, да 2022. > Етить, это ты зря. Лучше найти что-нить ненапряжное за мелкий прайс и сидеть прям на работе кодить игрулю. Или ты планируешь за пару месяцев релизнуть? у тебя опыт в геймдеве есть? Хотелось бы где-то к лету что-то да релизнуть. На счет мелкого прайса, да, вот собираюсь аранжировщиком подрабатывать для другой геймдев-компании. Если это будет программирование то все равно так или иначе весь день на него будет уходить. ТО созвоны, то дебаг, то деплой, то еще что-то, я знаю как это бывает в продакшне. Опыта в геймдеве нет, кроме как в стол.
Редактор уровней планирую сделать френдли тоже, но когда-нибудь потом. Там в целом, чтобы этого добиться нужно просто завести UI, а то сейчас все только на мышке и хоткеях, которые знаю только я. Велосипедище зря не пропадет, потому что мне самому карты то на чем-то нужно делать, и чтобы все соответствовало специфике моей игры.
Подвез в редактор "brush mode". Не использую готовые навороченные редакторы тайлов за-за того, что они все имеют слишком общий формат карт. А здесь, в своем редакторе, я, во-первых, имею возможность сразу мгновенно побегать-потестить карту. Во-вторых, можно делать карты сразу в специфике игры без генерации избыточных данных и конвертации.
Напоминаю про канал в телеге, отчитываюсь в нем о текущих успехах практически каждый день: https://t.me/d2d2world
>>802677 Не пропал, работа идет, и еще как. Занимаюсь вещами, которые не шибко запишешь на видео, такими как: зашифрованное локальное хранилище, улучшение синхронизации (кля достижения лучшего клиент-сайд предикшна, и вообще комфортоной игры по интернету еще довольно много работы, но в голове уже все решения есть), отлов багов, написал заодно библиотеку дающую удобное API для управления конфигами, и прочее, всего уже не упомню. В общем, визуализировать пока нечего. Вот только сейчас в 8 утра иду спать после ночи программирования. Спасибо что спросил.