.[ ČeskéHry.cz ].
Herní principy - Simcity

 
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: 4

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: 139
Bydliště: Krkonose a okoli

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: 121

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: 139
Bydliště: Krkonose a okoli

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: 121

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: 4

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: 139
Bydliště: Krkonose a okoli

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: 4

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: 185
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
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
Strana 1 z 1

 
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