Jump to content

ukázka [Alfa verze] Projekt Orion: OGame klon v moderním kabátě s kulovým vesmírem


Ewwe

Recommended Posts

  • Administrátor

Ahoj všichni,

chci se s vámi podělit o projekt, na kterém v poslední době pracuju. Vždycky mě bavily klasické vesmírné textovky typu OGame, ale říkal jsem si, že by si tenhle koncept zasloužil modernější technologický základ a trochu jiný přístup k samotné mapě vesmíru.

Rozhodl jsem se proto postavit vlastní klon, který staví na nejnovějších technologiích a mění zajetá pravidla lineárních souřadnic.

🚀 V čem je to jiné? (Hlavní rozdíl oproti OGame)

Zapomeňte na klasický systém Galaxie [1-9] -> Systém [1-499] -> Pozice [1-15]. Vesmír v mém podání je plně trojrozměrný a kulový:

  • Kulové galaxie: Celý vesmír je generován v kulovém prostoru, kde mají galaxie náhodné 3D souřadnice.

  • Kulové systémy: Jednotlivé solární systémy jsou náhodně rozmístěny uvnitř těchto kulových galaxií.

  • Náhodné systémy planet: Samotné planety obíhají v náhodném počtu v kulovém prostoru daného systému.

Díky tomu má vzdálenost a poloha úplně jinou dynamiku a vizuální rozměr, což se promítá i do samotného létání a plánování.

 

🛠️ Technologický Stack

Chtěl jsem, aby hra byla bleskově rychlá, běžela v reálném čase bez nutnosti neustálého mačkání F5 a stála na moderním webovém ekosystému:

  • Backend: Laravel 13 & PHP 8.5

  • Databáze: MySQL 8.4

  • Frontend: Inertia.js + Vue.js (hladký SPA zážitek bez přeblikávání stránek)

  • Reálný čas: Laravel Echo + Laravel Reverb (WebSocket server pro instantní aktualizace)

⚙️ Co už aktuálně funguje (Alfa status)

Projekt je v rané fázi, ale "core loop" hry už stojí a dá se klikat:

  • Generování: Generuju náhodný vesmír s rozložením systémů. Hráč pak dostane náhodnou volnou planetu
  • Ekonomika: Kompletní produkce surovin a jejich přepočty.

  • Budovy & Výzkum: Funkční továrny a hotový nástřel technologického stromu (výzkumů).

  • Stavební fronta (Building Queue): Klasické řazení budov za sebe, které se procesuje na pozadí.

  • Vesmírná mapa: Plně interaktivní mapa vesmíru (díky Vue a 3D logice generování).

  • Komunikace: Chat běžící v reálném čase přes WebSockets (Reverb).

  • Monetizace: Integrovaný systém prémiové měny.

🛠️ Na čem se dělá dál?

Dalším velkým krokem je kompletní implementace letové mechaniky (flotily), bojového enginu a obrany, aby se z toho stala plnohodnotná strategie. Určitě mě čeká rebalance produkce, například solární elektrárna na levelu 25 generuje 10 miliard jednotek energie :D Každopádně je toho ještě spousta co dělat. 

Hledám zpětnou vazbu! Zajímá mě, co říkáte na nápad s kulovým generováním vesmíru místo klasických tabulkových souřadnic? 

Díky za názory!

image.png

image.png

image.png

image.png

image.png
image.png

 

  • Paráda! (+1) 1
Link to comment
Share on other sites

  • Globální moderátor

az to bude venku, tak to budu hrat. Kazdopadne tohle

On 5. 7. 2026 at 11:13, Ewwe said:

že by si tenhle koncept zasloužil modernější technologický základ

a tohle

On 5. 7. 2026 at 11:13, Ewwe said:

Backend: Laravel 13 & PHP 8.5

mi teda fakt nejde do hlavy, od kdy je v dnesni dobe php moderni a uz vubec od kdy je php moderni pro takovouhle hru.

  • Líbí se mi to! (+1) 1
Link to comment
Share on other sites

  • Administrátor

PHP mělo dlouho (a celkem zaslouženě) špatnou pověst. Ale doba, kdy to byl pomalý skriptovací jazyk na dynamické weby, je už tak 10 let pryč.

Od verze 8.0+ je PHP úplně jiná liga a verze PHP 8.5 s plnou typovostí, JIT kompilací (Just-In-Time) a brutálním výkonnostním posunem z něj dělá dospělý a extrémně rychlý backendový jazyk.

Proč je to ideální volba pro tuhle hru?

  1. Reálný čas bez Node.js: Díky Laravel Reverb, což je přímo v PHP napsaný high-performance WebSocket server, běží veškerý real-time stav (chat, interaktivní mapa, okamžité updaty fronty) bez nutnosti lepit k aplikaci Node.js, Socket.io nebo externí cloudové služby. Všechno držíš v jednom ekosystému.

  2. Rychlost vývoje: Jako solo vývojář potřebuju stack, kde nebudu polovinu času psát boilerplate kód. Spojení Inertia.js + Vue + Laravel mi dává to nejlepší z obou světů. Nemusím psát žádné API (REST/GraphQL) jen kvůli tomu, abych nakrmil frontend. Inertia předává data z PHP kontroleru přímo do Vue komponent jako props. Vývoj je tak 3x rychlejší než v kombinaci např. Node.js + React.

  3. Výkon na matematiku: Výpočty souřadnic v kulovém vesmíru nebo tiky produkce surovin jsou s moderním PHP procesovány v řádu jednotek milisekund. Úzké hrdlo moderních aplikací je skoro vždycky databáze, ne samotný jazyk.

PHP 13 (respektive Laravel 13) už dávno není "ten starej webovej skript". Je to robustní ekosystém, ve kterém dneska startupy staví masivní real-time platformy. 


Sám dělám v PHP přes 10 let. Za tu dobu jsem zažil portování obřích monolitů z verze 5.4 na 7, viděl jsem obrovské systémy, na kterých dodnes stojí banky, operátoři nebo státní správa, a spravoval systémy s terabajtovými databázemi. Stavěl jsem robustní CRMka nebo algoritmy na plánování rozvrhů, které musely počítat dojezdové doby lektorů k desítkám studentů. A víš co? Ani jednou jsem nenarazil na limit, kde by PHP nestačilo a bylo potřeba utíkat k jiné technologii. Bottleneck je v 99 % případů databáze a architektura, ne jazyk samotný. 

Link to comment
Share on other sites

  • Globální moderátor
před 9hodinami, Ewwe said:

Od verze 8.0+ je PHP úplně jiná liga a verze PHP 8.5 s plnou typovostí, JIT kompilací (Just-In-Time) a brutálním výkonnostním posunem z něj dělá dospělý a extrémně rychlý backendový jazyk.

Proč je to ideální volba pro tuhle hru?

  1. Reálný čas bez Node.js: Díky Laravel Reverb, což je přímo v PHP napsaný high-performance WebSocket server, běží veškerý real-time stav (chat, interaktivní mapa, okamžité updaty fronty) bez nutnosti lepit k aplikaci Node.js, Socket.io nebo externí cloudové služby. Všechno držíš v jednom ekosystému.

  2. Rychlost vývoje: Jako solo vývojář potřebuju stack, kde nebudu polovinu času psát boilerplate kód. Spojení Inertia.js + Vue + Laravel mi dává to nejlepší z obou světů. Nemusím psát žádné API (REST/GraphQL) jen kvůli tomu, abych nakrmil frontend. Inertia předává data z PHP kontroleru přímo do Vue komponent jako props. Vývoj je tak 3x rychlejší než v kombinaci např. Node.js + React.

  3. Výkon na matematiku: Výpočty souřadnic v kulovém vesmíru nebo tiky produkce surovin jsou s moderním PHP procesovány v řádu jednotek milisekund. Úzké hrdlo moderních aplikací je skoro vždycky databáze, ne samotný jazyk.

PHP 13 (respektive Laravel 13) už dávno není "ten starej webovej skript". Je to robustní ekosystém, ve kterém dneska startupy staví masivní real-time platformy. 

dik, ale priste by mi to stacilo napsat 5 slovy bez generovani pres ai...

před 9hodinami, Ewwe said:

Sám dělám v PHP přes 10 let. Za tu dobu jsem zažil portování obřích monolitů z verze 5.4 na 7, viděl jsem obrovské systémy, na kterých dodnes stojí banky, operátoři nebo státní správa, a spravoval systémy s terabajtovými databázemi. Stavěl jsem robustní CRMka nebo algoritmy na plánování rozvrhů, které musely počítat dojezdové doby lektorů k desítkám studentů. A víš co? Ani jednou jsem nenarazil na limit, kde by PHP nestačilo a bylo potřeba utíkat k jiné technologii. Bottleneck je v 99 % případů databáze a architektura, ne jazyk samotný. 

okey, fair enough. Podle me to ale stejne nikdy nepujded s dobou dlouhodobe. V zakladu je to poraad php a ten pristup je proste jinej nez treba API ve springu. A kdyz to vezmu z hlediska budoucnosti, pokud na to budeds shanet dalsi vyvojare, tak si myslim, ze na php se nebudou shanet tak jednoduse.

Link to comment
Share on other sites

Olala, offtopic.

A co napr. multi threading, async/await (green threads), mikro servisky, distribovane stateful servisky (actor pattern), event queue (kafka, rabbitmq), optimalizacie ako L1 cache fit, SIMD vektorizacia?

Neviem, ci si robil niekedy s modernym .NETom, prip. Javou, ale ak si iba PHPkar tak mozno si to obhajujes iba preto, ze to nemas s cim porovnat?

 

před 17hodinami, Ewwe said:

Výkon na matematiku: Výpočty souřadnic v kulovém vesmíru nebo tiky produkce surovin jsou s moderním PHP procesovány v řádu jednotek milisekund. Úzké hrdlo moderních aplikací je skoro vždycky databáze, ne samotný jazyk.

Ehm, tolko mi zabere vypocet neutronovej difuznej simulacie cca 50 000 parametrov v .NETu.

 

před 17hodinami, Ewwe said:

Vývoj je tak 3x rychlejší než v kombinaci např. Node.js + React.

Hey claude, create API endpoints and Angular service to consume it, make no mistakes.

  • Líbí se mi to! (+1) 1
Link to comment
Share on other sites

Měl bych dotaz, když říkáš, že si chtěl použít moderní technologie a vidím, že používáš Vue.js, tak proč si nešel cestou třeba Nuxt.js? Nebylo by lepší mít FE + BE v jednom a moci tak využívat typování pro obojí?

Jak si odpovídal výše, že nechceš lepit služby třetích stran, tak to je přeci volitelné, vše si můžeš vytvořit sám nebo použít odpovídající knihovnu, určitě alespoň jedna bude existovat.

Citace
  1. Rychlost vývoje: Jako solo vývojář potřebuju stack, kde nebudu polovinu času psát boilerplate kód. Spojení Inertia.js + Vue + Laravel mi dává to nejlepší z obou světů. Nemusím psát žádné API (REST/GraphQL) jen kvůli tomu, abych nakrmil frontend. Inertia předává data z PHP kontroleru přímo do Vue komponent jako props. Vývoj je tak 3x rychlejší než v kombinaci např. Node.js + React.

Tohle je přesně jeden z účelů NodeJS meta-frameworků. Nemusíš si psát API, abys nakrmil FE, ale rovnou BE funkce voláš na serveru (SSR) nebo na FE skrze SSA. Když bys pak v budoucnu potřeboval API, například pro komunitní nástroje, tak tu samou funkci jen obalíš do API endpointu + přidáš RL aj.

Naopak mi přijde, že Laravel + Vue.js + Inertia.js bude mít větší boilerplate, než meta-frameworky (Next.js, Nuxt.js, SvelteKit aj.)

Přeci jen, NodeJS je rychlejší jak PHP.

Edited by Fakerko_
Link to comment
Share on other sites

  • Administrátor

 

před 3hodinami, Fakerko_ said:

Měl bych dotaz, když říkáš, že si chtěl použít moderní technologie a vidím, že používáš Vue.js, tak proč si nešel cestou třeba Nuxt.js? Nebylo by lepší mít FE + BE v jednom a moci tak využívat typování pro obojí?

Částečně protože Nuxt nemám moc rád. A primárně šlo i o to si ten stack vyzkoušet. Čeká mě projekt kde je innertia laravel a vue vyžadovaný.  Každopádně u kódu pro api jsem skončil tak jako tak protože z toho dělám mobilní apku. 

 

On 7. 7. 2026 at 23:52, Jiu said:

Neviem, ci si robil niekedy s modernym .NETom, prip. Javou, ale ak si iba PHPkar tak mozno si to obhajujes iba preto, ze to nemas s cim porovnat?

 

Dělám SwiftUI, Flutter, PHP. S .NET ani s Javou jsem dělal jen hodně minimálně. 

 

On 7. 7. 2026 at 23:52, Jiu said:

Ehm, tolko mi zabere vypocet neutronovej difuznej simulacie cca 50 000 parametrov v .NETu.

Piča netuším co to je :D 

 

Link to comment
Share on other sites

  • 1 month later...
  • 2 weeks later...
  • Majitel

Taky se přikousnu k offtopicu :D 

Za mě ten AI reasoning pro PHP nemá pevný základ.. Přičuchnul jsem k vývoji monolitu generující terabajty dat a mohu říct, že ačkoliv je jedním s bottlenecků právě třeba ta DB a architektura - tak si nedokážu představit, že by to mělo jet na PHP místo na .NET :D Ačkoliv se PHP posunulo dopředu hodně, tak .NET se posunul mnohonásobně dále. A přeci jen už samotná migrace pracovního trhu vývojářů se přeorientovala primárně na Javu a .NET - PHP sice stále v blízkém závěsu, ale to jen z důvodu jeho setrvačnosti v prastarých řešeních a zajetých standardů. Přeci jen, kdyby si pod pojmem "webhosting" člověk nepředstavil PHP + HTML, ale dalo se pod to schovat i .NET - tak to ratio .NET vs PHP by dnes bylo úplně o ničem jiném. 

PHP je fajn pro malé projekty, pro malé týmy, malé cíle.. Nedá se však dobře škálovat a člověk musí v případě ambicióznějších projektů hledat mnoho workaroundů - naopak v .NET enviro už je solidní ekosystém jak pro modularitu tak i škálovatelnost..

Link to comment
Share on other sites

  • Administrátor

Ahoj,

před časem jsem obhajoval stack Laravel + Inertia (Vue) + PHP simulace na requestu. Pro účet, katalog, stavby a výzkum to dávalo smysl: jeden request, server spočítá produkci od last_sync_at, vrátí JSON a hotovo.

U živé mapy, letek v 3D a lišty surovin to přestalo stačit. Každý tick nebo pohyb flotily by znamenal buď reload stránky, nebo pořád dokola tahat Inertia props. PHP-FPM na 200ms smyčce pro všechny online hráče je špatný nástroj.

Takže se stack neruší PHP, ale dělí se odpovědnost.

 

Co běží kde

  • React SPA — UI. REST na Laravel /api/v1 (Sanctum), živá data přes WebSocket na Go engine.

  • Laravel — pořád zdroj pravdy pro účty, planety jako entity, katalog, fronty staveb/výzkumu/loděnice, shop, chat, admin. Combat/loot po doletu mise pořád řeší PHP (POST /internal/engine/missions/{id}/process).

  • Go engine — hydratuje hot planety z MySQL, v RAM sčítá těžbu (~200 ms), interpoluje letky, posílá WS (resources.tick, fleet.moved, fleet.arrived). Periodicky flushne wallet do MySQL. Příkazy z Laravelu bere z Redis streamu engine.commands (spend, hydrate, launch, recall).

  • Redis — hot wallet (res:{planetId}), pozice letek, command bus.

  • MySQL — trvalý stav. Ne každý tick.


     

    Řetězení enginů (vesmíry)

    Nejsou to vesmíry jako v OGame (oddělené servery, nový účet, žádný přechod). Je to jeden účet, jeden Laravel, paralelní vesmíry ve stejné hře. Late-game mezi nimi cestuješ misí universe_travel — po doletu se přepne current_universe_id, kolonii v tom druhém vesmíru pořád vlastníš.

    Engine se přesto dá rozřezat podle universe_id, protože každý paralelní vesmír má vlastní mapu, planety a letky a tick je drahý. To je provoz, ne herní izolace.

     

    Inertia je skvělá, když je UI = výsledek requestu. Hra teď potřebuje dlouhodobé spojení (WS) a API, které může používat i jiný klient. Vue Inertia app v Laravelu zůstává jako starší klient; nový FE je SPA.

    PHP zůstává tam, kde je silné: autorizace, validace, fronty, bojový výpočet, admin. Go tam, kde request-driven model bolí: 200ms tick a fan-out pozic.

    Rozdělaná je aktuálně i swiftui verze pro iOS, iPadOS a MacOS. 


    Brzy budu kupovat doménu ( až najdu nějakou co není zabraná a nebo vyděračská zlodějina ) 

    Screenshot 2026-09-07 at 17.49.01.jpeg

Screenshot 2026-09-07 at 17.49.37.jpeg

  • Děkuji (+1) 1
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...