Posts tagged 3d model animation

GamePlay

Multiplayer simulacija dirkanja z avtomobili: Dodajanje multiplayerja in ScreenManagerja v igro

Spet malo o razvoju lastne igre (dirkalna igra) na XNA platformi. Prejšnje prispevke si lahko preberete

  1. tukaj(prvi del – ladjica v prostoru in izris proge),
  2. tukaj(drugi del – proga, avtomobil in vožnja po progi in nagibanje – Ray Trace) in
  3. tukaj(tretji del – nova proga, manjši popravki) :) .

Po malo več kot tednu se je zopet premaknilo pri seminarski nalogi. Tokrat je bil uspešno dodan najprej Screen manager, pobran iz slednjega exampla(gameStateManagement), katerega osnovni koncept in flashy shiny thingies sem seveda ohranil notri.

Naslednji velik korak je bil Multiplayer(Večigralstvo po “FRIjevsko”), ki deluje na principu neodvisnega strežnika in dveh(ali večih, trenutno je omejitev 2 zavoljo testiranja ostalih parametrov) računalnikov. Vsak client izračuna naslednjo pozicijo, to sporoči strežniku, strežnik pa sporoči clientu, če je njegov premik dovoljen(collision detection z ostalimi vozili) ali ne, ter tudi vse podatke o ostalih vozilih(pozicije, nagibe, rotacije itd…).

Trenutno na LANu deluje pri 45FPS, kar je relativno dobro, glede na standardnih 65FPS na trenutnem laptopu(ko je ta na elektriki, na bateriji pade na 20FPS). Stvar NE deluje na eduroamu v pritličju(v 2. nadstropju deluje normalno =) ) in slednjemu podobnim omrežjem, kjer izgleda ping približno takole: 2ms, 3256ms, TimedOut, 2ms … V tem primeru ustrezno tudi pade Frame Rate, saj pred izračunom nove pozicije počaka na odgovor strežnika, ali je premik veljaven.

Sledijo sličice(opozorilo: FPS na sličicah ni realen, ker je bil multiplayer pognan na mojem laptopu (2 igri naenkrat + multiplayer), kar je precej obremenjujoče =) .

P.S.: Glede na delujoč multiplayer je potrebno spisati le še kratko dokumentacijo, in špil si boste lahko kmalu potegnili dol(na blogu bo objavljen link). Za tiste najbolj neučakane, kontaktirajte me na mail ali MSN ali gtalk(ali preko golobov pismonoš), pa dobite nekaj za se igrat :)

P.P.S.: Če bi radi karkol posebnega v igri, napište v komentarje in potrudil se bom dodat v igro :)

QED. :)

BigHood

Še malo igranja z igro in še ena proga :)

Po parih dneh (in pisnemu izpitu iz OTIja) sem še malo dodelal par stvari. Najprej se moram zahvalit Mihi Feušu za še eno hudo progo. Slednja je precej bolj razgibana in divja za vozit.

Poleg tega sem popravil tudi gravitacijo, ki ni več linearna :) Sprva sem imel s progo nekaj problemov na mestih, kjer se je prekrivala “v več nadstropjih”. Izgleda, da so žarki(Ray) dvodimenzionalni, kar mi je vračalo negativno višino avtomobila nad progo. Problem je rešen, ostaja pa še precej dolga todo lista:

  • Luči(avtomobilske, cestni reflektorji)
  • fizika(pri zavijanju, morda malo crash modela, animacija podvozja avtomobila …)
  • Multiplayer na enem računalniku
  • Multiplayer med računalniki(+dedicated server)

In še par sličic:

FellOffTheTrack

The game is a work in progress and it’s showing some results :)

Tale igra res dobro napreduje. V zadnjem tednu sem v igri zamenjal model ladje za dejanski avtomobil. Poleg tega je bil najtežji del simulacija vožnje po razgibanem terenu. Za pomoč sem vzel knjigo z recepti za programiranje v XNA, ki vsebuje par lepih rešitev problemov, ki se človeku na prvi pogled ne zdijo ravno trivialni.

Poleg nagibanja, teksturiranja proge in avtomobila ter obračanja koles na avtomobilu sem se ukvarjal tudi z realistično vožnjo avtomobila. Dodana je logaritemska funkcija za hitrost, prav tako avtomobil zavija obratno sorazmerno s hitrostjo premikanja(torej se avtomobil manj “obrne” pri višji hitrosti kakor pri nižji).

Največji problem pa je delal ravno teren po tem, ko se je avtomobil že gibal po sami progi. Nagib je namreč bil preveč očiten, tako da je avto občasno prav “skakljal” čez trikotnike na progi. Slednje je bilo rešeno na zelo preprost način. Dodal sem razred z bufferjem, ki si zapomne zandnjih nekaj vrednosti in vrača povprečje teh vrednosti. Tako sem dobil gladkejše prehajanje med ploskvami, ki so se lomile pod precej ostrim kotom(<170°).

Go to Top