1

Тема: Сервер для онлайн гри, загальні питання

Доброго дня, шановні реплейсяни. Зовсім недавно я взяв життєвий квест - написати покрокову стратегію (чи тактичну гру) в котру люди зможуть грати онлаєн.
У кожного гравця буде свій власний кабінет в онлайн грі, де він зможе купувати/модернізувати своїх бійців за ігрову валюту, а потім випробовувати то все на полі бою. Зараз я на самому початку.
Для написання серверу обрав бібліотеку Netty, тому що вже користувався нею, та й взагалі, люди добре відгуються про неї. А от в якості бази даних обрав postgresql. Раніше я використовував лишень MySql, не скажу, що я  так круто розібрався з нею, що помітив якісь проблеми в роботі, і проаналізувавши декілька баз даних обрав postgres. То я просто читав, що розробники деякої онлайн гри то все зробили, і postgresql їм підійшла.
Так от. Питання.
Як взагалі "краще" організувати роботу серверу? Я десь чув про якісь сервіси, типу - сервер складається з якихось сервісів, котрі спілкуються піж собою, але я от не зовсім, точніше, зовсі не розумію, що то за сервіси, які переваги між сервісами і не сервісами, і т.д.
Наразі сервер уявляється мені однією прогою, котра приймає в себе дані і щось з ними робить. Для роботи з базою даних напишу окремий клас, котрий буде працювати в іншому потоці, аби не тормозити прийняття й обробку нових повідомлень.
До речі, інформація про ходи гравців не буде проходити через сервер, для цього я буду використовувати один сервіс. Тобто мій сервер повинен займатись реєстрацією, логіном, збереженням та поверненням даних, і ще він повинен буде реалізовувати поведінку ботів, якщо гравець захоче пограти проти комп'ютера.
Ой, щось я наговорив тут багато всього, а конкретних питань так і не написав.
1. Що таке ті "сервіси", і як працює сервер, що побудований "сервісами"?
2. Які загальні поради можете дати при написанні подібного серверу?

2

Re: Сервер для онлайн гри, загальні питання

Завжди уявляв собі архітектуру ігрового серверу десь та - є задачі які виконуються у різних потоках(мабуть це ваші "сервіси"),наприклад взаємодія з сітью з бд інш., зі стандартизованим механізмом взаємодії наприклад - черги).Тобто у кожного "сервіса" є черга в яку постить задачі керуючий "сервіс", у свою чергу якщо звичайний "сервіс" хоче запостити задачу для іншого він це робить через керуючий "сервіс".Така собі клієнт/сервверна концепція де кожний клієнт("сервіс") крутиться  в окремому потоці.
Моя думка , це не думка професіонала.Тому краще б вам якусь літературу пошукати)

3

Re: Сервер для онлайн гри, загальні питання

я вже був загуглив, і ота сервісна архітектура зветься SOA https://uk.wikipedia.org/wiki/%D0%A1%D0 … 1%80%D0%B0

4

Re: Сервер для онлайн гри, загальні питання

Я б радив спочатку не зазирати на такий великий проект, з огляду на те, що це є Ваш перший досвід у моделюванню систем і у тому ігрових.
Спробуйте спочатку написати простий квест, без багатокористувацького режиму. Якусь консольну гру, щоб відчути як варто будувати ігрову логіку, бо це не те ж саме, що й бізнес-застосунки.

Подякували: Regen, leofun012

5

Re: Сервер для онлайн гри, загальні питання

1. Ну от наприклад ви вирішите організувати ігровий аукціон, на якому гравці зможуть торгувати лутом. Аукціон це доволі незалежний від решти системи кусок, тому його логічно якось відділити від усього іншого. Такий відокремлений кусок - це і є сервіс. Застосування сервісів значно збільшує розмір коду, який необхідно написати, але має багато інших бонусів. Наприклад сервіс легко покрити тестами, а тести в свою чергу гарантують, що вносячи зміни, наприклад, в механізм випадання луту з мобів, ви не поламаєте аукціон. В разі потреби сервіс можна буде легко перекинути на сусідній сервак, щоб розвантажити основний. Коротше кажучи, для простенької іграшки типу веселої ферми у контактику, з сотнею відвідувачів на день, робити сервіси немає ніякої потреби. Але SkyForge або WoW просто не можуть без них існувати.
2. Пишіть як зможете, усе одно першу версію коду усі згодом відправляють у смітник.

Подякували: FakiNyan1

6

Re: Сервер для онлайн гри, загальні питання

iovchynnikov написав:

Я б радив спочатку не зазирати на такий великий проект, з огляду на те, що це є Ваш перший досвід у моделюванню систем і у тому ігрових.
Спробуйте спочатку написати простий квест, без багатокористувацького режиму. Якусь консольну гру, щоб відчути як варто будувати ігрову логіку, бо це не те ж саме, що й бізнес-застосунки.

Трусік вже має такий досвід

7

Re: Сервер для онлайн гри, загальні питання

0xDADA11C7 написав:
iovchynnikov написав:

Я б радив спочатку не зазирати на такий великий проект, з огляду на те, що це є Ваш перший досвід у моделюванню систем і у тому ігрових.
Спробуйте спочатку написати простий квест, без багатокористувацького режиму. Якусь консольну гру, щоб відчути як варто будувати ігрову логіку, бо це не те ж саме, що й бізнес-застосунки.

Трусік вже має такий досвід

Отже цей досвід трохи більше від нуля, бо я не уявляю собі розробника, що колись щось моделював і навіть не чув що таке SOA.
Що за Трусік :) ?

8

Re: Сервер для онлайн гри, загальні питання

те відчуття, коли хтось каже, шо не знає когось, ким ти теж являєшся, хто не міє, або не знає про щось, чого ти не вмієш і не знаєш