Administrátor Ewwe 437 Odesláno: 5. Červenec Administrátor Share Odesláno: 5. Červenec 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! 1 Link to comment Share on other sites More sharing options...
Globální moderátor Hip 207 Odesláno: 6. Červenec Globální moderátor Share Odesláno: 6. Červenec 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. 1 Link to comment Share on other sites More sharing options...
Administrátor Ewwe 437 Odesláno: 7. Červenec Author Administrátor Share Odesláno: 7. Červenec 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? 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. 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. 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 More sharing options...
Globální moderátor Hip 207 Odesláno: 7. Červenec Globální moderátor Share Odesláno: 7. Červenec 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? 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. 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. 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 More sharing options...
Jiu 310 Odesláno: 7. Červenec Share Odesláno: 7. Červenec 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. 1 Link to comment Share on other sites More sharing options...
Fakerko_ 204 Odesláno: 10. Červenec Share Odesláno: 10. Červenec (upraveno) 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 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 10. Červenec by Fakerko_ Link to comment Share on other sites More sharing options...
Administrátor Ewwe 437 Odesláno: 10. Červenec Author Administrátor Share Odesláno: 10. Červenec 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 More sharing options...
Globální moderátor Hip 207 Odesláno: 24. Srpen Globální moderátor Share Odesláno: 24. Srpen jak to vypada? Docela se na to tesim Link to comment Share on other sites More sharing options...
Majitel ffredyk 192 Odesláno: 3. Září Majitel Share Odesláno: 3. Září 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 More sharing options...
Administrátor Ewwe 437 Odesláno: 7. Září Author Administrátor Share Odesláno: 7. Září 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 ) 1 Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now