.[ ČeskéHry.cz ].
Herní principy - Simcity
Jdi na stránku 1, 2  Další
 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Obecné
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
mochr



Založen: 13. 07. 2017
Příspěvky: 11

PříspěvekZaslal: 25. červenec 2017, 06:50:04    Předmět: Herní principy - Simcity Odpovědět s citátem

Ahoj,
jako občasného "programátora" mě zajímá, jak fungují principy v budovatelských hrách, typu simcity , možná i Age of empire. Myslím původní 2D (2,5D) verze. Jsou data ze hry uložena v databázi typu:
kód:
  ID  |  pozX  |  pozY  |  pozadi  |  elektřina  |  voda  |  zona  | silnice | ...
   1  |  12    |  12    |     5    |        1    |    0   |     3  |    0    |...


s tím že:
ID, pozX,pozY je jasné - souřadnicový systém
pozadí - vykreslení obrázku ?
elektrina - jestli je v bunce zavedena elektrina 0 = false, 1 =true
voda - jestli je v bunce zavedena voda 0 = false, 1 =true
zona - 1 = prumyslova,2 = nakupni,3 = obytna
silnice - 0,1 (2,3,4,5) typy silnice

v rámci tréninku jsem zkusil udělat jednoduchý prográmek kde se generuje mapa, stromy a je možnost pokácet strom a postavit studnu. ukládání mám do txt souboru jako indexove pole + soubor s aktualní pozici a surovinama:
kód:

10;10;10;10;12;12;12;11;11;11;12;11;11;11;11;
12;12;12;12;12;12;12;12;10;10;13;13;12;11;17;
10;10;12;12;12;12;12;12;12;12;12;12;12;12;17;
10;10;10;10;12;10;12;12;10;10;10;12;12;12;17;
10;10;10;10;10;10;10;10;10;10;10;12;12;12;12;
10;10;10;10;10;10;10;10;10;10;12;12;12;12;12;


stáhnout: http://mochr.cz/Debug.zip
Exclamation pozor VB.net - nekomentujte prosím že je to nepoužitelný jazyk, mě vyhovuje a nehodlám se živit tvorbou her
pro tento účel by to asi stačilo, ale případě zmiňováneho Simcity jsem ztracen Laughing .
Je uvažovaný databázový systém správná cesta, nebo jsem úplně mimo? S herní tvorbou nemám zkušenosti, a spíš mě zajímá jak to vlastně funguje než abych to tvořil. s mým volným časem by to bylo na pár desetiletí...

Děkuji za reakce Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
satik



Založen: 06. 05. 2010
Příspěvky: 161
Bydliště: Krkonose

PříspěvekZaslal: 25. červenec 2017, 10:03:23    Předmět: Odpovědět s citátem

+- by to odpovidalo, akorat pozice se neuklada.
Budovy mas ulozeny v 2D poli a uz samotna souradnice do toho pole ti dava pozici budovy.

Pokud tam pak jsou jednotky, tak ty se obvykle ukladaj zvlast a maji u sebe pozici, protoze jednotky uz nepasujou do gridu, resp. by ten grid musel bejt tak velkej, ze uz by to zralo moc pameti.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
JC



Založen: 06. 10. 2007
Příspěvky: 137

PříspěvekZaslal: 25. červenec 2017, 12:15:10    Předmět: Odpovědět s citátem

Ale to by to 2D pole budov muselo mít stejné rozměry jako mapa/grid? To je docela zbytečné. Stejně jako u těch případných jednotek to je lepší mít v nějakém dynamickém seznamu a dílek mapy pak obsahuje pointer na daný objekt.

V případě, že by herní objekty byly komplikované a měly spoustu shodných parametrů, můžou se tyto parametry brát z databáze.

Pak by struktura, např. u domů mohla být zhruba taková:
Map[ x, y].PointerHouse -> ListHouse[ 0 .. n - 1].DB_ID -> DBListHouse[ DB_ID ]

Tj. dílek mapy odkazuje na objekt v dynamickém seznamu a dále tento objekt odkazuje na parametry v databázi. V tom dyn. seznamu jsou jen nezbytné proměnné pro herní logiku - např. zda je budova poškozená nebo silnice přecpaná, kolik má budova pater a kolik se do ní vejde lidí se bere z databáze.

Záleží samozřejmě na složitosti hry, co vše by se mělo simulovat a jak by to mělo být rozšiřitelné nebo modifikovatelné. SimCity 1 bude jednoduchá záležitost co se týče struktury a dost věcí tam je "napevno".
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
satik



Založen: 06. 05. 2010
Příspěvky: 161
Bydliště: Krkonose

PříspěvekZaslal: 25. červenec 2017, 14:01:21    Předmět: Odpovědět s citátem

JC: j, takhle to mám ve strategii teď, to bylo myšlený třeba pro to Simcity, kde pokud vím budovy už žádný další hodnoty ukládat nepotřebovaly.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
JC



Založen: 06. 10. 2007
Příspěvky: 137

PříspěvekZaslal: 25. červenec 2017, 14:47:14    Předmět: Odpovědět s citátem

@satik: chápu, ovšem je to takový zrádný, člověk začne s jednoduchou tilemapou, ale většinou to nikam moc nevede a z jednoduché struktury se stane peklo Smile

Také to mám tak, políčko mapy obsahuje pointery na 4 hlavní druhy objektů a ty mají ještě další vrstvy. Celkem by mě zajímalo jestli to je např. v Dwarf Fortress udělané jinak, pokud má mapa více Z - vrstev (defaultně 50) a políčko může držet hromadů různých objektů, tak těch dat je už hodně.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
mochr



Založen: 13. 07. 2017
Příspěvky: 11

PříspěvekZaslal: 26. červenec 2017, 08:28:19    Předmět: Odpovědět s citátem

diky za odpovedi
aha, takže se na začátku vytvoří prázdné pole mapa(100,100), vygeneruje se zakladni teren. ( mapa(50,50)=trava )
pri stavbe domu se zmeni mapa(50,50) = dum1(dum2,dum3)
a ted abych mel v poli seznam domu: poledomu(0)=50,50,dum1(dum2,dum3),...
to je asi blbost se odkazovat hodnotama 50,50 zpet na mapu..

v minihre co je vprvnim prispevku to mam v jedom dvojrzmernym poli, s hodnotama od 10 do 99 s tim ze:
' 10 = voda
' 11 = pisek
' 12 = trava
' 13 = strom
' 14 = studna
' 15 = sekera
' 16 = parez
' 17 = ovocny_plny
' 18 = ovocny_prazdny

kdyz zasadim strom :
pole_stromy(0,0) = pozX
pole_stromy(0,1) = pozY
pole_stromy(0,2) = 10 (plodiny)

coz v pripadne vetsiho poctu objektu bude slusnej chaoz a moc prommenych. ukladam si index_pole_stromy jako pocet stromu, coz by slo udelat dynamickym polem nebo seznamem.


pointery slysim prvne, to uz je vyssi divci
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
satik



Založen: 06. 05. 2010
Příspěvky: 161
Bydliště: Krkonose

PříspěvekZaslal: 26. červenec 2017, 09:09:51    Předmět: Odpovědět s citátem

mochr napsal:
diky za odpovedi
aha, takže se na začátku vytvoří prázdné pole mapa(100,100), vygeneruje se zakladni teren. ( mapa(50,50)=trava )
pri stavbe domu se zmeni mapa(50,50) = dum1(dum2,dum3)

Teren klidne nech oddelenej od budovy.
Udelej si tridu pro policko mapy, ktera bude mit treba teren a id budovy, ktery bude odkazovat do seznamu budov (nebo bude -1, pokud tam zadna budova neni).

Kdyz zasadis strom, jen vytvoris do seznamu budov strom a jeho id ulozis na jeho pozici v tom dvourozmernym poli hernich policek.

mochr napsal:
pointery slysim prvne, to uz je vyssi divci

to nemusej bejt primo pointery, staci indexy do pole Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
mochr



Založen: 13. 07. 2017
Příspěvky: 11

PříspěvekZaslal: 21. srpen 2017, 13:06:08    Předmět: Odpovědět s citátem

Tak mi to přece jen nedalo, a ve volných chvilkách zkouším vytvořit takove male minisimcity. prepracoval jsem system z prvni 2D verze do 2,5D , u cehos jsem se trochu zapotil,ale nakonec jsem to vyresil myslim ze dobre. navic funguje posun mapy, z cehoz mam fakt radost:).
zatim me funguje:
pridavani domecku-na zkousku vic druhu, nachystano pro vic obrazku
nemocnice, elektrarny - zatim bez funkce
kresleni silnic a krizovatek (UFF!) - tady jsem si pomohl jednoduchy dvojrozmernym polem s hodnotami 0,1 kde je cesta a kde ne a tim se zvolil obrazek silnice.
bourani - Smile
oznacovani poli - ne uplne pekny ale jaks taks to funguje


pic upload

uvidime ja kto pujde dal, ale nejakou ideu mam, bude to zjednoduseny a zalozeny na 2D polich.
dalsi krok bude vytvorit elektrinu a vodovod s oznacenim dosahu - tusim jak na to

ale co vubec netusim jak na to,tak jak vytvorit auticka aby jezdili po cestach, samotne generovani cesty asi jo, pojede po hodnote 1 v poli array_road , ale nevim jak udelat pohyb, nyni cela hra bezi v timeru 100ms...,pridat dalsi timer a pohyb generovatv nem? no uvidime

odkaz ke stahnuti http://www.mochr.cz/debug1.zip kdyby se chtel nekdo podivat
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Peto



Založen: 01. 08. 2007
Příspěvky: 206
Bydliště: Košice

PříspěvekZaslal: 21. srpen 2017, 19:16:17    Předmět: Odpovědět s citátem

A ake auta tam chces, take co budu len vizualizovat preplnenost cesty ako to bolo napr v SimCity 2000 alebo chces normalne auto ktore pojde z policka A do policka B ako napr Transport Tycoon alebo novsie SimCity 3000 ?

Inak super dalsia strategia tak nech sa dari Wink
_________________
Code or die!
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
mochr



Založen: 13. 07. 2017
Příspěvky: 11

PříspěvekZaslal: 23. srpen 2017, 13:46:54    Předmět: Odpovědět s citátem

uplne bych se spokojil se systemem jako v simcity 2000, nahoda trasa, aby to trochu ozilo Smile
do super strategie to ma hodne daleko, beru to spis jako trenink a uceni se Smile

udelal jsem dalsi postup, zjednoduseni kodu na par mistech, a vytvorene podzemi s trubkama a hranici kam saha zavodneni - zatim jen graficky, ale pro dalsi pouziti by bylo vhodne to supnout taky do pole. je to vubec v poradku mit ve hre XX dvojrozmernych poli? zatim si vystacim s 5-6, ale kdyz si tak predstavuju co bych tam chtel udelat, tak 2D pole se me zda jako nejjednodusi napad. i kdyby melo byt s hodnotami 1,0, jako mam ted pro trubky a silnice.
asi neresitelny problem mam ale s vykreslovanim, pri tahnuti mysi a drzeni tlacitka se to pekne seka a nemuzu prijit na to cim to je. vykreslovani mam do pictureboxu. asi me nezbude nic jinyho nez to predelat nejspis do XNA, pro ktery je i par navodu pro VB.net.
objevil jsem hru factorio a naprosto nechapu jak se muze naraz hybat tolik veci Very Happy





soubory: http://www.mochr.cz/Debug3.zip
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
satik



Založen: 06. 05. 2010
Příspěvky: 161
Bydliště: Krkonose

PříspěvekZaslal: 23. srpen 2017, 14:45:02    Předmět: Odpovědět s citátem

To pole bys mel mit jedno a v nem tridu policko, na kterym bude teren, treba ta postavena budova, stav zavodneni, hustota dopravy apod.

XNA je mrtve, budto vem Monogame (nastupce XNA) nebo SharpDX, ten ve sve strategii pouzivam ja, viz vlakno http://www.ceske-hry.cz/forum/viewtopic.php?t=5172 Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
nou



Založen: 28. 07. 2007
Příspěvky: 1047

PříspěvekZaslal: 24. srpen 2017, 07:12:17    Předmět: Odpovědět s citátem

Factorio je uzasna hra ktora je dokonca ceska. Treba si precitat na ich strankach FFF kde casto opisuju optimalizacie ktore robia. Zakladom je ale ze robia update iba tych entit ktore treba a nie vsetky kazdy tick.
_________________
Najjednoduchšie chyby sa najtažšie hľadajú.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Peto



Založen: 01. 08. 2007
Příspěvky: 206
Bydliště: Košice

PříspěvekZaslal: 25. srpen 2017, 13:53:33    Předmět: Odpovědět s citátem

Na Visual Basicu (pixture boxy a timery) som zacinal aj ja, je to fakt dobry jazyk na ucenie sa programovat hry - odporucam kazdemu. Na druhej strane je to fakt špatny jazyk pre hry Very Happy (ako ked sa bavime robit hry s picture boxami a timermy), ked chces robit serioznejsie hry tak radsej prejst na nieco ine az budes citit ze uz si pripraveny.. Ja som presiel na Revolution3D co je uz nejaky mrtvy 3D engine pre Visual Basic. Pre teba by to co spominal nou by mohlo byt fajn Smile
_________________
Code or die!
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
mochr



Založen: 13. 07. 2017
Příspěvky: 11

PříspěvekZaslal: 25. srpen 2017, 22:21:37    Předmět: Odpovědět s citátem

Díky. Zkusil sem nahodit monogame ale nějak se mě nezadarilo jej rozjet. Zvolil sem tedy mrtvý XNA ????. Je pro něj stále docela dost návodu a některé i v češtině. Většina sice pro C#, ale to už si dokážu přepsat do VB, většinou teda????.
No musím říct že od pictureboxu a buttonu a timeru je to pěkné skok. . Musí se řešit spoustu věcí navíc a toho programování a podmínek je o hodně víc a přibývají věci o kterých zatím nemám tušení jak vlastně udelat????. Zatím mám nějaké kusy kódu prekopirovane do nového XNA projektu, a funguje mě stavení silnic s křižovatkách, stavení domečku a bourání. Programování je tam fakt hodně, a začínám se v tom trošku ztrácet narodil od čistého VB. A jako bonus sem si nakreslil svoje tlačítka v pěkným retro stylu. Uvidíme jak to půjde dál a jak moc mě to bude bavit. Zatím to beru jako malou výzvu a trénink programovani(nejsem programátor, jen pár základu že školy ve VB net před pár lety a pokusy s arduina a PHP).
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Mnemonic



Založen: 28. 07. 2007
Příspěvky: 93

PříspěvekZaslal: 26. srpen 2017, 11:51:28    Předmět: Odpovědět s citátem

Mrtvého XNA se neboj, kód napsanej pro XNA by měl být později 1:1 přenositelnej do Monogame (teoreticky; prakticky tam nějaké drobné rozdíly být samozřejmě můžou). Ale proti pictureboxu je to určitě krok správným směrem, protože to je bližší "opravdovému" hernímu programování. Jen to jen věc zvyku.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Obecné Časy uváděny v GMT + 1 hodina
Jdi na stránku 1, 2  Další
Strana 1 z 2

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna