Uvod Flashcards
(11 cards)
Kaj je delta time?
Čas med dvema izrisoma (frameoma). Uporablja se za normalizacijo simulacij in gibanja.
Razlika med igralnim pogonom (engine) in ogrodjem (framework)?
- Engine: Specializiran za razvoj določenega tipa iger in vključuje orodja, kot so vizualni urejevalnik scene
in level editor. Bolj povezan nabor knjižnic in funkcionalnosti. - Framework: Bolj generičen in fleksibilen, omogoča razvoj raznovrstnih iger, vendar zahteva več dela za
implementacijo specifičnih funkcij
Glavna zanka igre, vse!
Glavna zanka igre ime vlogo sinhronizacije vseh komponent igre
1) Input Handling: Preberi uporabniške vnose (npr. tipke).
2) Update: Posodobi logiko igre na podlagi vnosa.
3) Render: Izriši trenutni okvir igre.
While (!stopGame) {
handleInput();
update(deltaTime);
render();
}
Opisi mi batch draw (paketni izris), zakaj je uporaben?
Batch draw je proces, ki zdruzi vec nalog v en skupen ukaz in jih izvede naenkrat
Prednost: ni bottlenecka pri komunikaciji med GPU in CPU (npr. izris 10000 objektov)
Med batch.begin() in batch.end() dodajamo vse objekte:
batch.begin();
batch.draw(texture1, x1, y1);
batch.draw(texture2, x2, y2);
batch.end();
Napisi funkcijo update in render!
public void update(float deltaTime) {
handleInput();
player.update(deltaTime);
checkCollisions();
}
public void render(SpriteBatch batch) {
batch.begin();
player.draw(batch);
obstacles.draw(batch);
batch.end();
}
Kako bi nacrtoval WHATEVER GAME?
DINAMIKA: opises gameplay loop (what the game is about)
MEHANIKA: nastejes funkcije (zacetek, konec, premik…)
ELEMENTI: nastejes elemente (cas, st_potez, sahovnica, prikaz odigranih potez)
Kako bi implementirali ucinek slow-motion?
Učinek slow motion bi implementiral tako da bi povečal delta time in povečan delta time množil z velocitijom.
Kako bi implementiral velocity?
public void updateVelocity(float deltaTime, Vector2 velocity, Vector2 acceleration) {
velocity.x += acceleration.x * deltaTime;
velocity.y += acceleration.y * deltaTime;
}
Kako bi implementiral odboj?
if (position.x <= 0 || position.x >= screenWidth) {
velocity.x = -velocity.x; // Odboj levo-desno
}
if (position.y <= 0 || position.y >= screenHeight) {
velocity.y = -velocity.y; // Odboj gor-dol
}
Kako bi implementiral detekcijo trka?
public boolean checkCollision(Rectangle rect1, Rectangle rect2) {
return rect1.overlaps(rect2);
}
Principi DRY, WET, KISS, YAGNI, IOC, kako si implementiral koncepte v svoji igri
Principi so splošnješa pravila, ki se jih držimo pri načrtovanju in/ali implementaciji.
- DRY: Don’t Repeat Yourself – Preprečimo podvajanje kode.
- WET: Write Everything Twice – Ponavljamo podobno logiko, če se zahteva.
- KISS: Keep It Simple, Stupid – Ohranjamo preprostost.
- YAGNI: You Aren’t Gonna Need It – Ne implementiramo nepotrebnih funkcij.
- IoC: Inversion of Control – Ločimo logiko in podatke z uporabo injekcij odvisnosti.