24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
Я пишу очередную игру, и дело именно в том, что она очередная.
Я постоянно реализую общеизвестные паттерны и алгоритмы, поэтому стало как-то уныло, захотелось чего-то вроде стандартизации. Причем, мне не нужна собственно реализация движка, а больше интересно посмотреть на архитектуру, интерфейсы (типа API, набор функций), структуры данных.
Так вот, нет ли какого-либо более-менее каноничного опенсурсного игрового движка, желательно без 3D (чтобы не потонуть в коде рендеринга при чтении исходников), в котором были бы популярные вещи типа: игровые объекты (их иерархия или организация); разделение логики и рендеринга (ticksPerSeconv vs framesPerSecond); всякие алгоритмы для Path finding, Collision detection; концепты типа Interest management, Field of view; сетевая часть, синхронизация состояний между сервером и клиентами (trailing state synchronization, time warp synchronization, dead reckoning); интерполяция и экстраполяция состояний объектов; архитектурные решения, обеспечивающие zoning, instancing, replication.
Это нужно, чтобы можно было сделать, как у людей (у которых это выверено практикой, испытаниями на реальных серверах и т.п.), хотя бы интерфейсно и архитектурно, а не плодить своё мертворожденное говно.
>>134065 Разница в том, что ты не понимаешь разницы между фреймворком и игровым движком, который строится на его основе. Не был бы джава-дебилом, может, понимал бы.
>>134067 > перемешал серверную логику, AI и прочее в одну кучу Согласен, правда, ничего связанного с AI я, вроде, не упоминал (AI - это отдельная тема, и это можно будет прикрутить в любой момент). А вообще такие вещи, как консистентность состояний объектов (упомянутые TSS, TWS), затрагивают и сервер, и клиент, поэтому по-другому никак, я думаю. > openspades > teeworld > Wormux Большое спасибо, обязательно гляну.
>>134095 Я думаю, тут для моего запроса сойдёт как фреймворк, так и собственно готовый движок, ибо мне нужны в первую очередь идеи/архитектуры/интерфейсы/структуры данных.
Мне тут ещё вне этого треда порекомендовали Cocos2D (да, я нуб, ничего про него раньше не слышал).
Алсо я до этого начитался всяких научных публикаций по геймдеву, ибо структурированной информации в интернете нет, а книги либо устарели, либо скупы на информацию.
Мне особенно понравились публикации про The Real-Time Framework, который разрабатывали в немецком The University of Muenster: http://www.uni-muenster.de/PVS/en/research/rtf/index.html И ещё Matrix, совместная научная разработка IBM и кого-то ещё. Но кроме статей, ничего про эти вещи я найти не смог, а жаль, поэтому и создал тред.
>>134136 Libgdx помогает графикой, набором утилит и кроссплатформенностью. Для твоих нужд вряд ли подойдет. Информации по механике игровых движков и вправду маловато. Если что найдешь - кидай в тред.
Она немного устарела, да и по содержанию там довольно поверхностная информация. Книжку лучше листать, останавливаясь на интересующих абзацах. Для себя отметил более-менее полезными главы 6 и 7, ну и до кучи 5, 9 и 10.
>>134395 > про сеть там все ни о чем или для начинающих Непосредственно про сеть там почти ничего нет. Предполагаю, что ты глянул книжку "Networking and Online Games". Это единственный приведенный мной источник, в котором что-то более менее про сеть было (tcp, udp, ip multicast, CDN). Это же /gd/, тут в меньшей степени интересно, как ты используешь сокеты, сериализуешь данные и прочее.
> Посмотри сорцы майнкрафта, начиная от пакетов. Посмотрел, только это был OpenCraft. Ничего особенно интересного там нет, обычная сетевая байтоёбская проза: tcp, сессии, аутентификация, состояния протоколов, упаковка/распаковка полей. Для подобных задач (RPC, сериализация) я бы использовал, например, скоростной Google Protobuf, а не изобретал бы велосипед, как они. Кстати, в отличие от майнкрафта, в Quake используются UDP-пакеты, что гораздо интереснее и сложнее.
Для себя я использую WAMP-over-WebSocket (http://wamp.ws/) с реализациями autobahn (http://autobahn.ws/). Поэтому я пишу на готовом PubSub и RPC с аутентификацией WAMP-CRA (с использованием PBKDF2). И мне вообще насрать на эту сетевую ебатню, я могу просто кодить движок.
А сейчас я ещё заюзаю порекомендованный Cocos2d-x и время вообще будет уходить только на игровую логику и оформительство.
>>134404 в майнкрафте юдп. >>134170 >>134171 Это не про сеть? >>Для себя я использую WAMP-over-WebSocket (http://wamp.ws/) с реализациями autobahn (http://autobahn.ws/). Поэтому я пишу на готовом PubSub и RPC с аутентификацией WAMP-CRA (с использованием PBKDF2). И мне вообще насрать на эту сетевую ебатню, я могу просто кодить движок. набор слов. Какие-то RPC (может они и по rest работают?). Сериализация (например, в json) - это самый хуевый и быстрый способ реализации сети. Я не приебаться хочу, просто ты сам должен понять выбор Эффективный обмен данными входит в часть движка (если ты будешь с сетью ебаться офк). Ты должен передавать не объекты, а действия юзера, и принимать от сервера инфу, которая нужна юзеру, интерполировать данные и т.п.
> может они и по rest работают? В WAMP/Autobahn нет REST.
> Сериализация - это самый хуевый и быстрый способ реализации сети Ты сам-то понял, что сказал? Нет, я ожидал, что кто-то возразит по поводу JSON. Сериализация в JSON имеет достаточно большой оверхед по размеру отправляемых по сети данных, поэтому можно было меня упрекнуть в этом, но это... Ты вообще понимаешь, что такое сериализация?
> Ты должен передавать не объекты, а действия юзера Я и передаю действия юзера, а "объекты" - это абстрактное понятие, даже не знаю, что ты имел в виду. Может, ты намекал на JSON-объекты?
> принимать от сервера инфу, которая нужна юзеру Тащем-та я знаком с понятием interest of management и его реализацией в Quake в виде Field Of View
Я пишу очередную игру, и дело именно в том, что она очередная.
Я постоянно реализую общеизвестные паттерны и алгоритмы, поэтому стало как-то уныло, захотелось чего-то вроде стандартизации. Причем, мне не нужна собственно реализация движка, а больше интересно посмотреть на архитектуру, интерфейсы (типа API, набор функций), структуры данных.
Так вот, нет ли какого-либо более-менее каноничного опенсурсного игрового движка, желательно без 3D (чтобы не потонуть в коде рендеринга при чтении исходников), в котором были бы популярные вещи типа:
игровые объекты (их иерархия или организация);
разделение логики и рендеринга (ticksPerSeconv vs framesPerSecond);
всякие алгоритмы для Path finding, Collision detection;
концепты типа Interest management, Field of view;
сетевая часть, синхронизация состояний между сервером и клиентами (trailing state synchronization, time warp synchronization, dead reckoning);
интерполяция и экстраполяция состояний объектов;
архитектурные решения, обеспечивающие zoning, instancing, replication.
Это нужно, чтобы можно было сделать, как у людей (у которых это выверено практикой, испытаниями на реальных серверах и т.п.), хотя бы интерфейсно и архитектурно, а не плодить своё мертворожденное говно.
inb4 Quake engine