Silnik gry działa bardzo dobrze Całość jest bardzo lekka – cały tick gry dla mapy 100 na 100 pól wykonuje się w 0,3 ms na moim 8-letnim laptopie. Silnik gry napisany jest w Javie, z rdzeniem w C++ dostępnym przez JNI. Mam na ten moment napisanych około 200 testów jednostkowych, 200 integracyjnych i około 100 E2E. Zajęło mi to trochę czasu, bo głównie skupiłem się na optymalizacji. Jeden kafelek to dokładnie 4 bity pamięci. Chodzi o to, żeby móc budować ogromne światy do eksploracji z wieloma lokacjami, a całość ma działać na RPI

Na ten moment zużycie zasobów całej aplikacji wygląda tak:

Zużycie zasobów Coconut Game Stack:

Główne komponenty gry:

Game Server 0,63% CPU 401 MB eclipse-temurin:17-jdkJava Spring Boot + JNI Engine


Client0,20% CPU 84 MB node:18-slimReact + Vite dev server


Monitoring (opcjonalny):


Grafana 0,68% CPU 209 MB


PODSUMOWANIE:

Minimalna konfiguracja (tylko gra):

  • CPU: ~0,8% (server + client)

  • RAM: ~485 MB (401 + 84 MB)

Pełna konfiguracja (z monitoringiem):

  • CPU: ~1,5%

  • RAM: ~733 MB (401 + 84 + 209 + 36 + 3 MB)

Wydajność:

  • Game Server: Najbardziej zasobożerny (Java JVM + C++ engine)

  • Client: Lekki (tylko Vite dev server)

  • Monitoring: Średnio zasobożerny, ale opcjonalny

Na ten moment działa:

  • Multiplayer (wielu graczy)

  • Wiele mobów, AI

  • Poruszanie się, systemy kolizji i wiele typów terenu

  • Bardzo prosty interfejs graficzny z chatem (żeby mieć wizualizację)

  • Proste statystyki

Następnym razem udostępnię serwer – napisana jest już cała konfiguracja auto-deploymentu. Wystarczy wrzucić i uruchomić. Zrobię to w najbliższym czasie.

Później zajmę się rozwijaniem mechaniki gry, punktacją, rozwojem postaci :D

#chwalesie #programowanie

6409c396-a1ab-49c4-8b73-0ad294f0d5ce

Komentarze (14)

Deykun

@DexterFromLab widzę liquid glass. ;d

DexterFromLab

@Deykun nie zmyślam. Tak mi wyszło. Potem będę eksperymentował z większymi mapami. Ale obciążenie procesora będzie zależało od ilości graczy. Bo gracze generują chunki i ruchu mobów. To tak na prawdę zjada zasoby. Mapa to tylko ram. No i całość silnika to C++ to już nawet jak bym to napisał w asemblerze to by mi niewiele dało

kodyak

Nie znam się ale czy dla RPi te 700mb to jakoś sporo się wydaje?

DexterFromLab

@kodyak rpi 5 ma 8 GB ramu. Spokojnie pójdzie nawet na dużo starszych wersjach.

owczareknietrzymryjski

@DexterFromLab moje rpi5 ma 1gb ramu :<

DexterFromLab

@owczareknietrzymryjski wziąłeś najniższą wersję to teraz tak masz. Poszło by z bólem. Trzeba by swapa zrobić i wtedy by się zmieściło na Ubuntu server. Ale jak bym wylączyl statystyki serwera to by śmigało. Bo grafana trochę obciąża system.

owczareknietrzymryjski

@DexterFromLab najtańszą bo cebula motzna. Bez gui działa całkiem ok. Po co gui na malinie która jest serwerem

DexterFromLab

@owczareknietrzymryjski no nie wiem? Żeby odpalać kontenery?

owczareknietrzymryjski

@DexterFromLab kontenery nie z cli? wtf

DexterFromLab

@owczareknietrzymryjski są różne usługi. Zazwyczaj mocno zasobożerne. Co tam byś chciał, nie wiem immich, może coś do hostowania video? Jellyfin? Słabo z ramem. Raczej bym polecał jakiś używany terminal od della albo HP. Można za 100 zł wychaczyć fajne sprzęty dużo mocniejsze niz rpi z mniejszym poborem mocy.

Fausto

fajnie to wygląda, niezła robota.

DexterFromLab

@Fausto no napisanie silnika gry to jednak jest roboty dużo. Żona mówi że jestem uzależniony xD muszę chyba zrobić od tego przerwę.

Fausto

@DexterFromLab masz zamiar to jakoś zmonetyzować w przyszłości, czy dla samego fanu to piszesz?

DexterFromLab

@Fausto nie za bardzo. Takie gry przeważnie nie zarabiają. Jak bym miał 1000 aktywnych graczy to może z 200 zł dostanę na miesiac. Raczej otworze to jako open source i spróbuję dodać do repo Ubuntu. Wtedy będę miał wpis do portfolio poważny. I będę robił jakieś scenariusze do gry hobbystycznie jak ludzie będą grali.

Zaloguj się aby komentować