Сохранен 24
https://2ch.hk/gd/res/134045.html
24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!

Каноничный игровой движок

 Аноним 15/09/14 Пнд 01:55:25 #1 №134045 
14107317258210.jpg
Вечер в хату, геймдев.

Я пишу очередную игру, и дело именно в том, что она очередная.

Я постоянно реализую общеизвестные паттерны и алгоритмы, поэтому стало как-то уныло, захотелось чего-то вроде стандартизации. Причем, мне не нужна собственно реализация движка, а больше интересно посмотреть на архитектуру, интерфейсы (типа 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
Аноним 15/09/14 Пнд 01:57:10 #2 №134046 
P.S. вообще-то необязательно опенсурсный движок, можно какой-нибудь коммерческий анально огороженный, но с хорошей документацией, описывающей API.
Аноним 15/09/14 Пнд 02:30:28 #3 №134048 
14107338283540.png
>>134045
> inb4 Quake engine
Давай лучше попросим хорошо Кармака и он откроет нам ид тек 5.
Аноним 15/09/14 Пнд 06:50:16 #4 №134051 
14107494164840.jpg
>>134048
Аноним 15/09/14 Пнд 08:03:23 #5 №134053 
LibGDX
/thread
sageАноним 15/09/14 Пнд 10:25:25 #6 №134059 
>>134053
> Java
Аноним 15/09/14 Пнд 11:13:09 #7 №134065 
>>134059
Какая разница?
[погнали!] Аноним 15/09/14 Пнд 11:27:32 #8 №134067 
>>134045
Ну хуй знает. ты перемешал серверную логику, AI и прочее в одну кучу.

Есть проект ace of spades. И у него есть клон https://github.com/yvt/openspades
Есть teeworld
Wormux
Аноним 15/09/14 Пнд 14:51:24 #9 №134095 
>>134065
Разница в том, что ты не понимаешь разницы между фреймворком и игровым движком, который строится на его основе. Не был бы джава-дебилом, может, понимал бы.
Аноним 15/09/14 Пнд 20:02:55 #10 №134136 
>>134053
>LibGDX
Спасибо, анон, посмотрю.

>>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 и кого-то ещё.
Но кроме статей, ничего про эти вещи я найти не смог, а жаль, поэтому и создал тред.

ОП
Аноним 16/09/14 Втр 01:55:36 #11 №134166 
>>134136
Libgdx помогает графикой, набором утилит и кроссплатформенностью. Для твоих нужд вряд ли подойдет.
Информации по механике игровых движков и вправду маловато. Если что найдешь - кидай в тред.
Аноним 16/09/14 Втр 04:00:28 #12 №134170 
>>134166
> Если что найдешь - кидай в тред.
ОК.

Первая подборка статей про архитектуру MMOG.

The design of multiplayer online video game systems
http://sites.google.com/site/hsuchiachun/SPIEitcom03.pdf
Немного также есть про синхронизации клиента и сервера (TWS, TSS)

Matrix: Adaptive middleware for distributed multiplayer games
http://www.cs.cmu.edu/~rajesh/papers/rc23764.pdf
Тот самый Matrix, который я упоминал.

A Distributed Multiplayer Game Server System
http://citeseerx.ist.psu.edu/viewdoc/similar;jsessionid=1D8F50AD8ECE5CE7B1C3FB99FFCD616C?doi=10.1.1.23.2459&type=sc
Тут чуть более подробнее про TSS

По Real-Time Framework:
http://www.researchgate.net/publication/221391460_RTF_a_real-time_framework_for_developing_scalable_multiplayer_online_games/file/d912f50c201c2c0792.pdf

ОП
Аноним 16/09/14 Втр 04:07:08 #13 №134171 
Ещё статьи про TSS в движках id Software:

The DOOM III Network Architecture
http://www.mrelusive.com/publications/papers/The-DOOM-III-Network-Architecture.pdf

Quake III Arena Game Structures
http://caia.swin.edu.au/reports/110209A/CAIA-TR-110209A.pdf

ОП
Аноним 16/09/14 Втр 04:19:25 #14 №134172 
14108267652420.jpg
Есть ещё вот эта книжка: http://eu.wiley.com/WileyCDA/WileyTitle/productCd-0470018577.html

Она немного устарела, да и по содержанию там довольно поверхностная информация. Книжку лучше листать, останавливаясь на интересующих абзацах. Для себя отметил более-менее полезными главы 6 и 7, ну и до кучи 5, 9 и 10.

ОП
Аноним 16/09/14 Втр 04:24:01 #15 №134173 
Также есть вот эти популярные статьи про движки Doom и Quake:
http://fabiensanglard.net/doom3/
http://fabiensanglard.net/quake3/

Вот этот документ особенно доставляет, по теме AI:
http://fd.fabiensanglard.net/quake3/The-Quake-III-Arena-Bot.pdf

Ну, и файлы .plan от Кармака:
Тут часть: http://fd.fabiensanglard.net/doom3/pdfs/
Тут, вроде, побольше: http://floodyberry.com/carmack/plan.html

На этом у меня всё из того, что лежало на виду. Глубже пока не копал.

ОП
Аноним 16/09/14 Втр 04:25:58 #16 №134174 
Ну, и вообще, можно залезть на http://scholar.google.com и нарыть научных статей по интересующему вопросу. Очень эффективный способ.
sageАноним 16/09/14 Втр 22:13:14 #17 №134247 
>>134174
Кому-нибудь вообще эта литература показалась полезной, или я зря старался?
Аноним 17/09/14 Срд 15:13:52 #18 №134305 
>>134247
Да, добра. Схоронил.
Аноним 17/09/14 Срд 18:08:56 #19 №134322 
>>134247
Сложно это все переварить в короткий срок, но я тоже схоронил.
Аноним 18/09/14 Чтв 13:19:37 #20 №134395 
>>134247
про сеть там все ни о чем или для начинающих. Посмотри сорцы майнкрафта, начиная от пакетов.
Аноним 18/09/14 Чтв 16:25:05 #21 №134404 
>>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 и время вообще будет уходить только на игровую логику и оформительство.
Аноним 18/09/14 Чтв 16:42:21 #22 №134408 
>>134404
в майнкрафте юдп.
>>134170
>>134171
Это не про сеть?
>>Для себя я использую WAMP-over-WebSocket (http://wamp.ws/) с реализациями autobahn (http://autobahn.ws/). Поэтому я пишу на готовом PubSub и RPC с аутентификацией WAMP-CRA (с использованием PBKDF2). И мне вообще насрать на эту сетевую ебатню, я могу просто кодить движок.
набор слов. Какие-то RPC (может они и по rest работают?). Сериализация (например, в json) - это самый хуевый и быстрый способ реализации сети. Я не приебаться хочу, просто ты сам должен понять выбор
Эффективный обмен данными входит в часть движка (если ты будешь с сетью ебаться офк). Ты должен передавать не объекты, а действия юзера, и принимать от сервера инфу, которая нужна юзеру, интерполировать данные и т.п.

sageАноним 22/09/14 Пнд 12:46:14 #23 №134715 
>>134408
> в майнкрафте юдп.
ORLY?
TCP: https://www.google.com/search?q=site%3Ahttps%3A%2F%2Fgitorious.org%2Fopencraft+tcp
vs UDP: https://www.google.com/search?q=site%3Ahttps%3A%2F%2Fgitorious.org%2Fopencraft+udp
UDP только для опроса сервера: https://forums.bukkit.org/threads/minecraft-server-protocol.46840/
Найди мне "both" или "udp" в мане по настройке iptables для Minecraft: http://minecraft.codeemo.com/mineoswiki/index.php?title=Iptables

> набор слов. Какие-то RPC
Для тебя - возможно

> может они и по rest работают?
В WAMP/Autobahn нет REST.

> Сериализация - это самый хуевый и быстрый способ реализации сети
Ты сам-то понял, что сказал? Нет, я ожидал, что кто-то возразит по поводу JSON. Сериализация в JSON имеет достаточно большой оверхед по размеру отправляемых по сети данных, поэтому можно было меня упрекнуть в этом, но это... Ты вообще понимаешь, что такое сериализация?

> Ты должен передавать не объекты, а действия юзера
Я и передаю действия юзера, а "объекты" - это абстрактное понятие, даже не знаю, что ты имел в виду. Может, ты намекал на JSON-объекты?

> принимать от сервера инфу, которая нужна юзеру
Тащем-та я знаком с понятием interest of management и его реализацией в Quake в виде Field Of View
Аноним 22/09/14 Пнд 12:49:56 #24 №134716 
>>134715
> interest of management
interest management
sellfix
comments powered by Disqus

Отзывы и предложения