Niedawno postanowiłem napisać silnik do gry karcianej. Nie jestem wielkim graczem w karty, ale znajomy wprowadził mnie do gry (jest to gra duńska) i zakochałem się.
Chcę rozwinąć grę w 3 segmentach:
- Podstawowy silnik, obsługuje karty / talie / gamestate itp.
- Interfejs użytkownika (w formie aplikacji mobilnej / stacjonarnej).
- Sztuczna inteligencja z różnymi strategiami / trudnościami itp.
Są to bardzo różne projekty, moim zdaniem ... i mam problem z tym, aby zobaczyć, jak wszystkie będą pasować do siebie na dłuższą metę. Na początku nie chcę nawet „grać” w grę za pomocą silnika. Silnik będzie testowany przede wszystkim przez testy jednostkowe. Testowanie gry nie rozpocznie się, dopóki nie będzie klienta. Jest więc coś w rodzaju relacji klient-serwer.
Silnik to bardzo duży element układanki. Chciałbym wiedzieć: jak poszedłbyś opracować „publiczny interfejs API” dla tego silnika?
Myślałem, że silnik może być bardzo podstawową usługą internetową, która zwraca swój stan poprzez zapytania do API RESTful, ale martwię się, że sam rozwój silnika jako aplikacji internetowej może prowadzić do złych decyzji programistycznych. (Na przykład, jeśli wybiorę mikroukład MVC, cóż, ten interfejs API nie miałby naprawdę widoków ... po prostu zwraca serializowane obiekty za pośrednictwem JSON lub coś w tym rodzaju. Czy używanie MVC do takich usług jest złe to?)
Innym moim pomysłem było to, że silnik byłby po prostu aplikacją na konsolę, a później napisałem jakiś mostek, aby przesyłać dane między nim a aplikacją internetową. (Most może naprawdę być wszystkim. Mam na myśli, że serwer sieciowy i silnik gry mogą pracować bezczynnie na serwerze IRC i udostępniać swój stan na kanałach.)
Jakie podejście byś podjął (rozwinął się jako usługa internetowa lub rozwinął się jako samodzielna aplikacja i pomost później) i dlaczego?
Dzięki, Robbie.
EDYCJA: Myślę, że należy to do rozwoju gier. Aby to wyjaśnić, napiszę silnik gry karcianej. Próbuję znaleźć najlepszy sposób na ujawnienie interfejsu API silnika, aby można go było w przyszłości zintegrować z klientem internetowym i klientem AI.
Nie miałem tu nawet konta, więc cześć :)