Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

Pravljenje igara u VB-u -> The strashna Do-Loop 'petlja' (kako glupa rech)

  • 14 odgovora
  • 5.278 pregleda

Najnovija ↓

Pravljenje igara u VB-u -> The strashna Do-Loop 'petlja' (kako glupa rech) 02.07.2005. u 20:14 · pre 259 meseci #1
Krenuo sam da pravim svoj 2D tile-based game engine u basicu i odma' sam prvi dan naleteo na problem koji nije bash i problem ali dosta me nervira. Obicno za igre u basicu svi kazu: "Koristi Do-Loop PeTljU a ona ce ti proveravati KeyState, ona ce ti pokretati spritove i animirati ih..bla,bla..."

Pazi ovaj kod:
Code:

Private Sub Form_Load()

Do
DoEvents
Loop

End Sub


Ovaj obican kod ce zauzeti 99% sistemskih resursa(ali vi profesionalci to vec znate). Srecom pa imamo DoEvents. On omogucava da neki drugi program preuzme sebi resursa ako mu je potrebno(i sprechava tvoj program da zakuca). Testirao sam to na ovaj nacin: Pokrenuo sam prethodni kod 2 puta i resursi su se jednako raspodelili(50-50% - variranje 3-4%) na oba programa.

Da se vratim na temu. Ako napravim engine na ovom principu izgledace previse n00bovski zauzimajuci nepotrebno 99% res. Imam neke ideje i hocu da znam sta drugi misle o tome.

1. Multimedialni tajmer koji okida mnogo puta:
Timer koji okida prvo ce proveriti da li su sve messages na queue-u obradjene(GetQueueStatus = 0) a ako jesu onda pokrece code engina(koristeci SendMessage).

2. Multimedialni tajmer koji okida mnogo puta 2:
Timer koji okida mnogo puta ce da stavi message u queue od programa(PostMessage) pa ce program redom da ih izvrsava pokretajuci code od engina svaki put kad na to dodje red.

I u jedno i u drugom slucaju cu izbeci Do-Loop a mozda cak mi nece trebati ni DoEvents(a izbegavam i microsoftov glupi tajmer). Takodje ce igra i seckati ako korisnik nema dovoljno jak komp ali nece zakucati(barem u prvom slucaju). Ugavnom ce engine da cheka da se izvrse sve komande(matematika,iscrtavanje,...) pa ce tek onda ponovo krenuti.

Koji je bolji metod? Ili jos bolje ako znate jos neki nachin da pokrenem code a da ne njakam sistemske resurse?

P.S. Ovo je sve teorija, nisam nista od ovoga isprobao.
Re: Pravljenje igara u VB-u -> The strashna Do-Loop 'petlja' (kako glupa rech) 04.07.2005. u 09:50 · pre 259 meseci #2
Cela poenta igre je da zauzme sve sistemske resurse koji su joj potrebni. DoEvents služi baš da bi se izbegla zakrčenja i da se svim ostalim programima da šansa da odrade svoj posao, ali da se sva preostala procesorska snaga posveti tvojoj igri. Što znači, čak i ako praviš igru koja treba da radi u pozadini (npr. minesweeper klon) nema problema sa do-loopom. Napravi do-doevents-loop petlju i pokreni je. A onda pokreni 5 instanci Worda ili IEa i vidi da li će tvoja petlja da ih uspori ma i za promil.

Ukratko, nemoj mnogo da se zamajavaš oko nebitnih stvari, ovo je najmanji problem u programiranju igara. Slobodno koristi do-loop petlju.
Potpis
In a game of chess you must never let your opponent see your pieces - Zap
Brannigan
Re: Pravljenje igara u VB-u -> The strashna Do-Loop 'petlja' (kako glupa rech) 06.07.2005. u 03:59 · pre 259 meseci #4
da, ali on je pisan u c++u :D

sto se tice For-Loop petlje slobodno je koristi, ja je koristim svaki put kad pravim neku igru (a nijednu nisam zavrsio dosad :p - zbog grafike) da bi ogranicio fps i da bi se igra istom brzinom odvijala na svim masinama (koristim Dark Icarus-ov kod :p)...
Potpis
rafforum.rs - Forum Računarskog Fakulteta
Re: Pravljenje igara u VB-u -> The strashna Do-Loop 'petlja' (kako glupa rech) 06.07.2005. u 14:33 · pre 259 meseci #6
Pa oko 90% (po mojoj slobodnoj proceni) komercijalnih igara je pisano u C\C++u ali ako si pocetnik u njemu (ili tek treba da ga ucis) ja ti ne bih preporucio da odmah ides na C++, mozda pokusas (da vezbas malo) sa Basicom (ako ga vec dobro znas, kako rece) ili eventualno sa Delphijem (mada ga ja nesto i nevolim...)
koju vrstu igre pravis uopste? ako je rpg pogledaj na psc tamo ima dosta primera (mada, moram da priznam da mi se nijedan ne svidja :p) a i rpg je jedna od laksih igara za napraviti (samo ti treba dobar AI protivnika ;p)...
Za rad sa grafikom pogledaj vbAccellerator tamo ces naci odlican AlphaDIB sample koji ja koristim u svim igrama (anti-aliasing, alpha-blending!!!)
Potpis
rafforum.rs - Forum Računarskog Fakulteta
Re: Pravljenje igara u VB-u -> The strashna Do-Loop 'petlja' (kako glupa rech) 06.07.2005. u 23:48 · pre 259 meseci #8
kada sam rekao "lako" mislio sam na to da u rpg-u nema dinamike (tj. matematike :p) potrebna ti je samo inteligencija (da bi napisao dobar AI).

sto se tice legalizovanja C++a pretpostavljam da imas M$ C++, ja ti preporucujem da skines DevC++: radno okruzenje uz koje dolazi MinGW compiler, proguglaj --> :D
Potpis
rafforum.rs - Forum Računarskog Fakulteta
Re: Pravljenje igara u VB-u -> The strashna Do-Loop 'petlja' (kako glupa rech) 07.07.2005. u 14:53 · pre 259 meseci #9
Ako hoce da zaradjuje, bolje da to ne radi sa DevCpp

Citat:
Bloodshed Dev-C++ is distributed under the GNU General Public License.


Najbolje da koriste besplatne MS Alate koji su dostupni sa njihovog sajta, ili Borlandov Free CommandLine kompajler.
Re: Pravljenje igara u VB-u -> The strashna Do-Loop 'petlja' (kako glupa rech) 07.07.2005. u 18:21 · pre 259 meseci #11
nisam te bas najbolje razumeo; hoces da pises kod u basicu a da ga kompilujes sa cpp kompajlerom?!?! (verovatno sam ja pogresno protumacio)

verovatno si mislio da pises kod u vb a da ga kompilujes sa nekim drugim BASIC kompajlerom? pa evo nasta sam malopre naleteo: Free Basic Compilers
mada ni jedan nisam probao i verovatno ni jedan u potpunosti ne podrzava vb kod koji je pun specificnih objekata, ali bi 70% kod (opet slobodna procena :p) trebalo da bude isto
Potpis
rafforum.rs - Forum Računarskog Fakulteta
Re: Pravljenje igara u VB-u -> The strashna Do-Loop 'petlja' (kako glupa rech) 08.07.2005. u 02:34 · pre 259 meseci #13
naravno da bi mogao da zaradjujes na njemu ali ne postoje dva ista kompajlera (za bilo koji jezik) tako da ima malih (nekad i ogromnih) razlika izmedju jednog programa pisanog za jedan kompajler i istog tog programa pisanog za drugi kompajler (najcesce su razlike u tipovima varijabli) ali za cpp treba da bude pretezno slicno, ja ti preporucujem da ako pises u vb-u kompajliraj ga sa vb comajlerom i slobodno zaradjuj na njemu (prvo krenes sa nekim malim programima, tako nakupis para i kupis licenciran VB :p) a ako radis u cpp-u slobodno pisi u vcpp-u a kompajliraj ga sa nekim drugim freeware compilerom...
Potpis
rafforum.rs - Forum Računarskog Fakulteta
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme