xspectorx Опубликовано 28 апреля Поделиться Опубликовано 28 апреля (изменено) Привет, друзья! Сегодня хочу поделиться с вами информацией о моем проекте – космической многопользовательской стратегии в реальном времени под названием Project_cosmo. Об игре Project_cosmo предоставляет игрокам возможность заниматься исследованиями, добычей ресурсов, строительством, колонизацией и торговлей в космической среде. После регистрации каждый игрок получает свою планету, на которой начинает развивать свою цивилизацию, исследовать технологии, строить верфи и корабли, а также взаимодействовать с другими игроками. Особенности механики игры 5 типов планет с различными параметрами (температура, размер, расстояние от солнца) Генерация планет, учитывающая их расположение относительно солнца Добыча ресурсов с помощью шахт и хранение их в специальных хранилищах Строительство различных построек, позволяющих развивать технологии и производить корабли Верфи для строительства кораблей и отправки их в космос Дерево технологий для исследования Возможность исследования солнечных систем других игроков Квесты как одиночные так и массовые Торговля меду игроками Ограбление караванов и многое другое! Технологии Серверная часть (бекенд): Node.js + MySQL Реализованы HTTP и WebSocket подключения. Данные хранятся и обрабатываются в памяти приложения, периодически сохраняясь в MySQL для обеспечения надежности. Клиентская часть (фронтенд): Construct 3 Обо мне До создания Project_cosmo я много раз начинал и затем бросал разработку подобного проекта из-за разных причин. Но в конечном итоге я собрался с силами, взял себя в руки и начал реализовывать свою мечту. Касательно клиентской части, мне помогает мой друг и житель форума cliva , который консультирует меня по вопросам Construct 3 и помогает в реализации сложных задач, там где у меня не хватает знаний и опыта. О процессе разработки На данный момент я работаю над проектом около 4 месяцев, уделяя ему по 4-5 часов ежедневно. Хотя я специализируюсь в другой сфере и считаю себя скорее любителем, нежели профессионалом, усиленно тружусь над игрой. В результате, некоторые решения в коде могут, быть сделаны без оптимальной оптимизации, но я верю, что с опытом придет и улучшение. Текущий статус разработки На данный момент в игре реализованы: Регистрация и авторизация Генерация планет для игрока и нейтральных планет в системе Дерево технологий 3 типа шахт и хранилищ 2 типа электростанций 7 видов построек 15 видов технологий 3 типа верфей 15 кораблей с различными параметрами (щиты, здоровье, скорость, урон) Механика управления кораблями и юнит-система Первая реализация боевых действий между кораблями Расчет движения и боя кораблей на стороне сервера в реальном времени Множество других механик, которые уже успел забыть Ближайшие планы на будущее В ближайшее время планирую разработать галактическую систему для связи планет и возможности коммуникации между игроками. Если я продолжу двигаться с тем же темпом, то прототип игры будет готов к сентябрю. Затем последует долгий период отлова и исправления багов, которых, я уверен, будет немало. Связь и обратная связь Приглашаю всех желающих присоединиться: к телеграм-каналу там больше информации о процессе и состоянию проекта. к ютуб-каналу где я регулярно делюсь новостями и прогрессом в разработке игры. Если у вас возникнут вопросы или предложения, буду рад пообщаться и ответить на них! Медиа информация Изменено 28 апреля пользователем xspectorx менял медия 4 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Nagval333 Опубликовано 28 апреля Поделиться Опубликовано 28 апреля Вау, прикольно, маштабно... Ясно конечно что такие проекты пилят долго и наверное еще много работы итд. На скринах где все близко (старшипы, GUI и иконки итд) очень красиво. А видос с боем все какоето малюсенькое, но тут хз я вобще не играл в ткие игры (не любитель стратегий в космосе) А еще по самому ролику хочу сказать что вид окружения класный и этот паралакс при движение экрана очеь круто итд. Но мне окружение напомнило больше подводный мир чем космос Туманности как какие-то гиганские водоросли Солнце некрасивое вобще, статичное и плоское Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
xspectorx Опубликовано 28 апреля Автор Поделиться Опубликовано 28 апреля (изменено) 1 час назад, Nagval333 сказал: Вау, прикольно, маштабно... Ясно конечно что такие проекты пилят долго и наверное еще много работы итд. На скринах где все близко (старшипы, GUI и иконки итд) очень красиво. А видос с боем все какоето малюсенькое, но тут хз я вобще не играл в ткие игры (не любитель стратегий в космосе) А еще по самому ролику хочу сказать что вид окружения класный и этот паралакс при движение экрана очеь круто итд. Но мне окружение напомнило больше подводный мир чем космос Туманности как какие-то гиганские водоросли Солнце некрасивое вобще, статичное и плоское Спасибо за отклик :). По поводу малюсенькое и т.п. в игре есть зум, вы можете приблизить или отдалить я сделал зум так, чтобы влезло побольше пространства. Что касается солнца и вообще дизайна в целом. Это лишь прототип, т.е. черновик для того чтобы я понимал какие будут масштабы и устраивают ли они меня, в дальнейшем я либо закажу качественного дизайнера для отрисовки по уже имеющимся размерам либо буду думать как отрисовать их самостоятельно. Анимация планет и солнца тоже планируется. вообще анимация планируется. но пока статично сделано для того чтобы понимать приблизительно как что будет. Изменено 28 апреля пользователем xspectorx Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Nagval333 Опубликовано 28 апреля Поделиться Опубликовано 28 апреля А под какие платормы пилится игра, какое разрешение изначально в проекте и как с производительностью на данный момент? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
xspectorx Опубликовано 28 апреля Автор Поделиться Опубликовано 28 апреля 2 минуты назад, Nagval333 сказал: А под какие платормы пилится игра, какое разрешение изначально в проекте и как с производительностью на данный момент? Браузер и nwjs клиент (по сути тот же браузер). В плане разрешения пока под себя 1920х1080 делаю. Но и на более мелком разрешении впринцепе +- нормально смотрится. Для телефона не предусматриваю, в игре нет тача и пока нет желания его делать. Насколько я понял, под телефон нужно затачивать свои текстуры и часть функционала сильно урезать или же адаптировать, чтобы можно было с телефона играть. Честно сказать на текущий момент тащить это дело под телефоны нет желания/опыта и т.п. Хочется полнофункциональный клиент а не урезанный. Что касается производительности, это отдельный вопрос который вероятно вскроется после открытого тестирования в массах. Клиент на текущий момент впринцепе вывозит несколько тысяч объектов на солнечную систему, т.е. вполне играбельно без просадки fps. но заметно кушает cpu и gpu в масштабных замесах. Для оптимизации я разделил зоны на солнечные системы, чтобы клиент не мог видеть и не рисовал вообще все объекты а только те которые находятся в его солнечной системе или на которую он смотрит. Что же касается серверной части, то сервер без особо труда вывозит просчет боев в десятки тысяч кораблей и делает это каждые 2 секунды (можно и быстрее). тут применяется библиотека quadtree, которая как раз разработана для расчет колизий между объектами. Расчет боя ведет сразу для всех кораблей во всех системах Также сервер без особо труда вывозит расчет передвижения кораблей в десятки тысяч единиц, опять каждые 2 секунды. (можно и быстрее). расчет движения происходит сразу во всех системах а не только там где клиент смотрит. Но опять же, все выяснится уже на реальных тестах под нагрузкой пользователей. По моим прикидкам клиентских мощностей должно вполне хватить обваривать солнечную систему под те цифры что я озвучил выше 2-3-4-5к объектов. Не думаю что будет столько обьектов в системе разом (возможно в редких исключениях) Касательно сервера, то думаю что и до 100к объектов должен нормально обваривать. Но тут есть простор масштабирования как вертикального так и горизонтального + время просчетов можно занизить чтобы успевало обваривать все, но на клиенте это не должно как то сильно сказаться. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
xspectorx Опубликовано 28 апреля Автор Поделиться Опубликовано 28 апреля (изменено) Также можно регулировать ситуацию и балансом игры (в игре нет пока что балансировки, цифры вообще подобраны от потолка посмотреть вообще как это работает на практике). Я думаю что при отлаженном нормальном балансе будет сложновато в одно лицо настроить десятки тысяч кораблей. а раз такое будет сложно достижимо то 2-3-4 тысячи кораблей на каждого игрока вполне обваримо для клиента будет. Что же касается сервера то обсчет он не будет делать для кораблей которые не двигаются или не находятся в бое, соответственно нагрузок и не будет. сценарий где весь флот всех пользователей РАЗОМ едут и воюют маловероятен. Так что все вполне должно быть более менее чем играбельно. Самые тяжелые куски связанные с флотом и обсчетами уже реализованы и тесты приемлемые. Массивного уже чегото такого не будет делаться, поэтому сверх какойто нагрузки не будет. Калькуляция добычи ресурсов, построек и прочего тоже сделана особым образом только когда пользователь обращается к этой планете или к вражеской планете, поэтому и там нет нагрузок. В общем в плане сервера я постарался продумать максимум, чтобы недопустить нагрузку. В плане клиента да, нужно будет еще позаморачиваться наверно, я уверен что там есть куда стремиться в оптимизации. Изменено 28 апреля пользователем xspectorx Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Nagval333 Опубликовано 28 апреля Поделиться Опубликовано 28 апреля Пипец. Ну я реально ни припомню такого проекта на С3 чтобы сразу тысячи кораблей да еще в онлайне... Я вобще как бы очень смутно представляю как работает бекенд (я вобщ из другой сферы) Ну еще могу как то представить сессионку где игрок против игрока, а сервер только для создания сессий (нахождения игроков и связи), но тру мультиплеер это уже слишком... Сервер в данном случае это реально комп что просчитывает и запоминает данные Где он будет нахолится - эти услуги стоят бабла, какя будет система монетизации... Будет интересно что получится в конце Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
xspectorx Опубликовано 28 апреля Автор Поделиться Опубликовано 28 апреля 46 минут назад, Nagval333 сказал: Пипец. Ну я реально ни припомню такого проекта на С3 чтобы сразу тысячи кораблей да еще в онлайне... Я вобще как бы очень смутно представляю как работает бекенд (я вобщ из другой сферы) Ну еще могу как то представить сессионку где игрок против игрока, а сервер только для создания сессий (нахождения игроков и связи), но тру мультиплеер это уже слишком... Сервер в данном случае это реально комп что просчитывает и запоминает данные Где он будет нахолится - эти услуги стоят бабла, какя будет система монетизации... Будет интересно что получится в конце хехе) значит буду первым. Уверен что другие игроделы могут последовать тому же маршруту который прокладываю я и вскоре мы можем увидеть очень много качественных масштабных игр. Жаль что я имею не так много опыта в разработке игр и вообще это не моя сфера думаю что более опытные люди смогут без особого труда повторить то что делаю я и тогда бдует годнота. Здоровая дружеская конкуренция это всегда хорошо! Что касается монитезации. На текущий момент она не предусмотрена. я не хочу вводить монетизацию ради выкачки бабла с клиента. такие игры мне не нравятся. Безусловно монетизация будет, какая я еще не придумал. но я постараюсь реализовать ее максимально безболезненной чтобы оно не ломало баланс игры и чтобы это была игра не ради доната. Покрайней мере буду стремиться к этому. Что же касается серверной части, вот тут как раз таки гораздо проще делать сервер чем что то делать на клиенте. construct 3 это муки для меня лично. потому что он во многих местах не логично работает как ожидается. На сервере все понятно все логично код есть код. а тут....)))) По поводу мощностей. нет не нужно супер мощного сервера для этой игры. Тут нет каких то супер сложных запросов и обсчетов. Поэтому и нагрузок сложных и долгих не будет. Я стараюсь делать максимально простые запросы и обсчеты. Иначе да, оно будет захлебываться. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
ViGaCi Опубликовано 29 апреля Поделиться Опубликовано 29 апреля 22 часа назад, xspectorx сказал: Что же касается серверной части, вот тут как раз таки гораздо проще делать сервер чем что то делать на клиенте. construct 3 это муки для меня лично. потому что он во многих местах не логично работает как ожидается. На сервере все понятно все логично код есть код. а тут....)))) Вау)) Чаще всего встречается обратная ситуация, т.е. клиент разработчику даётся проще, чем сервер. Я вот как раз один из таких разработчиков. Очень завидую людям, которые умеют кодить сервер для многопользовательских игр. Кстати, у меня вопрос: какую роль в этой игре будет играть клиент — только отображение того что рассчитывает сервер или часть игры будет обрабатываться клиентом и отправляться на сервер? Если второе, тогда как защитить игру от читеров? Ну то есть, что делать если игрок с помощью дополнительных программ будет менять, например, характеристики кораблей? P.S.: по описанию очень крутой проект! Желаю только не выгореть в процессе разработки)) Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
xspectorx Опубликовано 29 апреля Автор Поделиться Опубликовано 29 апреля (изменено) 8 часов назад, ViGaCi сказал: Вау)) Чаще всего встречается обратная ситуация, т.е. клиент разработчику даётся проще, чем сервер. Я вот как раз один из таких разработчиков. Очень завидую людям, которые умеют кодить сервер для многопользовательских игр. Кстати, у меня вопрос: какую роль в этой игре будет играть клиент — только отображение того что рассчитывает сервер или часть игры будет обрабатываться клиентом и отправляться на сервер? Если второе, тогда как защитить игру от читеров? Ну то есть, что делать если игрок с помощью дополнительных программ будет менять, например, характеристики кораблей? P.S.: по описанию очень крутой проект! Желаю только не выгореть в процессе разработки)) клиент будет просто как бы проигрывать стрим от сервера, главный тут сервер. Я не доверяю клиенту вот как раз из-за того что вы говорите. К примеру клиент выделяет корабли и показывает место куда он хочет отправить их. Сервер расчитывает этот момент, проверяет реально ли это корабли пользователя или же вражеские (дада я уже проверял этот момент, можно и вражеским флотом летать развлекаться), и потом отправляет команду типа вот этой пачке кораблей лететь в эти позиции и начинает высчитывать полет периодически отдавая актуальные данные о фактическом месте какого либо корабля. В общем все критически важные расчеты, делает сервер. Клиент будет также считать, но только те вещи которые вообще никак не влияют на игру. К примеру анимацию ресурсов. т.е. сервер прислал данные о ресурсах и клиент зная за сколько наберется к примеру 1000 единиц ресурсов просто начинает делать анимацию подсчета этих ресурсов. Ну т.е. такое что никак не повлечет читерство. 8 часов назад, ViGaCi сказал: Вау)) Чаще всего встречается обратная ситуация, т.е. клиент разработчику даётся проще, чем сервер. Я вот как раз один из таких разработчиков. Очень завидую людям, которые умеют кодить сервер для многопользовательских игр. Поверьте в серверной части все гораздо проще. Судя по вашим словам вы разбираетесь в констракте а значит понимаете логику. А значит и напилить серверную часть вам будет не сложно. Просто нужно с чегото начать простейшего (прям вообще примитивного) и понять как что маршрутизировать и все. логика таже самая только более правильная 4 месяца назад про nodejs я не знал от слова совсем. сейчас могу расчитывать боевку, передвижения, калькуляции ресурсов и так далее и тому подобное. Работать с базой ну в общем тот минимум что требуется. Поэтому вы себя не дооцениваете. Изменено 29 апреля пользователем xspectorx Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.