Нещодавно я вирішив почати писати движок для карткової гри. Я не великий гравець на "картках", але друг познайомив мене з грою (це спіна на грі Датська), і я закохався.
Я хочу розвинути гру в 3 сегментах:
- Основний двигун, обробляє карти / колоди / іграти тощо.
- Інтерфейс користувача (у формі веб-програми для мобільних пристроїв / настільних ПК)
- Штучний інтелект з різними стратегіями / труднощами тощо.
На мій погляд, це дуже чіткі проекти ... і я намагаюся бачити, як вони всі разом поєднуватимуться в довгостроковій перспективі. Спочатку я навіть не хочу мати можливість "грати" в гру за допомогою двигуна. Двигун буде в основному випробовуватися за допомогою його тестових агрегатів. Тестування на ігри не розпочнеться, поки клієнт не існує. Отже, тут є щось із стосунків клієнт-сервер.
Двигун - це дуже великий шматочок головоломки. Що я хотів би знати: це як би ви вирішили розробити "публічний API" для цього двигуна?
Я думав, що двигун може бути дуже базовим веб-сервісом, який повертає свій стан за допомогою запитів до API RESTful, але я переживаю, що розробка самого двигуна як веб-програми може призвести до поганих програмних рішень. (Наприклад, якщо я вибрав мікрорамку MVC, ну, цей API насправді не матиме переглядів ... це просто повернення серіалізованих об'єктів через JSON чи щось для цього. Чи погано використовувати MVC для такої послуги, як це?)
Моя інша ідея полягала в тому, що двигун буде просто консольним додатком, і я пізніше напишу якийсь містку для передачі даних між ним та веб-додатком. (Міст справді може бути будь-яким. Я маю на увазі, веб-сервер та ігровий движок можуть працювати в режимі очікування на сервері IRC і ділитися своїм станом у каналах.)
Який підхід ви б застосували (розробляйте як веб-сервіс або розробляйте як окремий додаток і перетворюйте його пізніше), і чому?
Спасибі, Роббі.
EDIT: Тож я думаю, що це належить до розробки ігор. Для уточнення я збираюся написати двигун карткової гри. Я намагаюся знайти найкращий спосіб розкрити API двигуна, щоб він міг бути інтегрований у майбутньому із веб-клієнтом та AI-клієнтом.
У мене навіть тут не було облікового запису, отже :)