Nevím kam to mám zařadit, tak to píšu sem. Před nedávnem jsem začal programovat jednu online hru, ovšem nevím jaký mám udělat algoritmus bojů, když vím, že každý voják má svůj útok/obranou sílu, jsou zde také hradby které brání města, nějaké věže atd. Nevím jak to napsat aby to bylo vyrovnané jak pro stranu útočníka tak pro obránce. Možná by i stačilo algoritmus podobný Travianu
Fórum › Offtopic
Online hra - boje
Mno, tak rekneme, ze kazda jednotka ma urcity pocet bodu zastupujici utok a obranu... Secteme utok vsech jednotek utocnika a obranu vsech jednotek obrance.. Obrancum budeme trosicku nadrzovat a pridame 5% navic.. Dale vezmeme nahodne cislo od -20 do 20 a pricteme obrane opet % (to aby byl vysledek boje pokazde jiny) Nasledne body porovname a z vysledku urcime ztraty a % uspesnosti jednotlivych stran...
Dalo by se to samozrejme rozvest jeste daleko vic, ale to uz necham na tobe...
Co třeba něco takového:
if ( celkova_utocna_sila * random(80 az 100 %) > celkova_obrana_sila * random(80 az 100 %) ) {
vyhral = utocnik;
ztraty = celkova_utocna_sila - celkova_obrana_sila;
rozdelZtratyDleTypuAMnozstviObrannychJednotek(ztraty);
} else {
vyhral = obrance;
ztraty = celkova_obrana_sila - celkova_utocna_sila;
rozdelZtratyDleTypuAMnozstviUtocnychJednotek(ztraty);
}
To Zelenáč: A kteří umřeli vojáci to vyberu náhodně nebo jak? Když pošlu třeba jako v travianu Imperiány, Pretoriány,... a každý má jiný útok a obranu
Já teda nevim travian sem nikdy nehrál, ale musíš se rozhodnout, jestli má každá jednotka jinou výdrž (řek bych že jo-nějakej vidlák proti rytíři...). Tzn musíš mít (asi) nějaké pole, ve kterém bude druh jednotky a její kvantitu. Potom si chce pohrát s tím, který jednotky bojujou vepředu (pěšák) a který vzadu (třeba lučištníci) tak, aby to třeba zmasilo všechny pěšáky a eště něco k tomu. Znamená to, že sečteš výdrž všech pěšáku, odečtěš od nich celkový dmg a když něco zbyde tak dojde i na lučištníky.
Je to jenom takovej nástin, ale takle bych to dělal já. Doufám, že ti to aspoň trochu pomůže.
V čem to programuješ? Podle mě se chceš buď pustit do něčeho co je pro tebe zatím nesplnitelný sen. A nebo víš jak se to dělá, ale potřebuješ to nějak využít a na to jsi nepřišel.
Jestli děláš první hru tak bych ti doporučil udělat hru typu Tetris a podobné. Aby jsi udělal hru kde se hraje proti PC musíš naprogramovat umělou inteligenci a to bývá humus a myslim, že člověk co tohle zvládne nemusí zakládat místnosti tohoto typu :D.
Přesto ti odpovim: Nejdříve se zaměř na ty hradby, aby jimi postavička neprošla tak tam musíš dát aspoň jednoduchě kolize. Ty postavičky pak dej jako objekt kterým uživatel hýbe. Zallož nějaký proměnné jako healt. A pak si musíš vymyslet jak bude probýhat boj, jestli tam bude střílení, nebo mečování...... Třeba střela je objekt na poli a když se dotkne postavičky, tak mu ubere třeba 5healt.
Nevim co chceš vysvětlit, ale rád bych věděl jaký sis vybral způsob tvorby, jak děláš postavičky, vypisiješ čáry nebo používáš bitmapy?
Možná to děláš v něčem, kde se tohle vubec neřeší. Já dělám ve C++.
Doporučim ti server
ceskehry.cz
Je tam hodně článků o programování a forum zaměřeno přímo na vývoj her.
To Tomik512: Neboj, dělám to úplně jinak, chci z toho browser game. Takže to dělám v PHP se kterým už mám nějaké zkušenosti
(nevím jestli dostatečné). Prostě promýšlel jsem si a kreslil jak ta celá hra bude, ale na ty útoky jsem prostě nepřišel.
To pecan987: No, PHP není zrovna vhodné pro psaní online her. Né že by to v něm nešlo, ale oproti jiným jazykům je to takovej balast, co velmi zatěžuje server. Na stránky je v pohodě, ale na náročnější aplikace se nehodí. Pohledej na netu, ale myslím že např. oproti Pythonu je PHP 4x větší zátěž. Určitě chceš, aby tvoje hra byla úspěšná a hrála ji spousta lidí, a proto si myslím, že ušetřit na dalších třech serverech a jejich hostingu (s tak náročnou aplikací jako je hra tě vyhodí z každého webhostingu) při stejném počtu hráčů se vyplatí. Proto bych zvolil nějaký jiný jazyk, z interpretovaných Python, Ruby, nebo Perl. Ale nejlepší řešení je napsat tu hru jako modul serveru (nejlépe Lighttpd) v C/C++ a pak napsat jen jednoduché uživatelské rozhraní, které bude víceméně jen vypisovat data z databáze, třeba v tom PHP (tak je udělaný třeba Xchat, a tipoval bych že i Travian). Tím tě nechci nějak strašit a odrazovat, jen upozornit na možná úskalí, nad kterými jsi třeba nepřemýšlel. Vem si, že jeden server travianu (samostatný fyzický počítač) zvládne max. 30-40 tisíc hráčů. A to travian programovali jiní páni programátoři a ty servery maj jistě pěkně nabušený a optimalizovaný.
Mimochodem, taky se pouštím do programování online hry a zvolil jsem Python, MySQL (InnoDB) a server Lighttpd.
To Systém: To abych se začal učit teda, na toto jsem vůbec nemyslel, bohužel :(
To Systém:myslíš že by travian zvládl 30tis hráčů? já myslím že ne. jich sice je 50tisíc registrovaných ale online jsou cca 3-4tisíce. a myslím že kdybych jich bylo víc tak spadne
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Online hra — založil koldis
Online hra — založil PatriCZek
Hra Battleship online — založil Mutagen
Online hra + server — založil milanmichal
Mybrute, pěkná online hra. — založil pawlik
Moderátoři diskuze