Introductie GameEngine. Inhoud  De Game Package  Speelveld aanmaken  GameObjecten met plaatjes neerzetten  De Game-loop  Besturing door de speler.

Slides:



Advertisements
Verwante presentaties
Het maken van presentaties voor op de computer.
Advertisements

Het doen van eigen onderzoek
WORKSHOP. EEN CPU MAKEN VAN UW COMPUTER. Dinsdag 05 / 04 / Door; Tom Roef, bestuurslid. Sodipa Computerclub.
De bezoeker maakt een keuze tussen de verschillende monsters en locaties door op een monster te klikken.
Minecraft.
Sander Mager Roel Lafeber CE2A. Sinds een aantal maanden ben ik erg fanatiek de game ‘’Candy Crush’’ aan het spelen. Een klasgenootje van mij speelde.
Veilig Internet Geef antwoord op de vragen en ontdek of jij veilig gebruik maakt van het internet!
De Kracht van Facebook games
Instructie Programmeren Task 8 5JJ70. PAGE 2 Task 8: Double Linked List Het doel van deze opdracht is: Het opbouwen van een tweetal klassen, die samen.
Van domeinklasse tot implementatie
INSTRUCTIE 1: Verzamel zoveel mogelijk verschillende soorten gekleurd papier en pakpapier. Vergeet geen zwart en wit papier. Zorg dat ieder van jullie.
Lesgeven en begeleiden
Klassen en objecten.
Handleiding Cency.nl Versie april De openingspagina toont foto’s van mogelijke voornemens.
Stijn Van Wonterghem1 ALICE Een inleiding. Alice - Een Inleiding2 Wat is ALICE? Een moderne programmeeromgeving –Visuele voorstelling, opgebouwd uit drie-
Leven zoals het leven je is gegund
Idee Generatie Wit Papier, Warcraft 3, Thrall, Hoofdpijn, denken, rare les, Karel aan het ijsberen, Schrijven, Opdracht, Schaken, Stappen, Oplichten, Vooruit.
Hulp op afstand Presentatie door Kick de Wolff Hulp op afstand Hulp op afstand Hoe kom ik van mijn SPAM af (afhankelijk van de beschikbare tijd) Hoe kom.
Handleiding ClassDojo
Les 2: Interactie in je space door middel van klikbare objecten en actionscript. Wat is actionscript en programmeren?
Welkom bij Immersive space, de flashles Tijdens deze lessen, leren wij je werken met het programma adobe flash.
Wikiwijs.
Hoorcollege 14 Vijanden, excepties. Overzicht programmaconstructies Opdrachten Toekenning Aanroep void-methode return-opdracht while-opdracht for(each)-opdracht.
Welkom bij digiDUIF! Jouw school heeft gekozen om gebruik te maken van digiDUIF. Deze korte animatie helpt je met het aanmaken van jouw account en het.
Java Objectgeoriënteerd Programmeren in Java met BlueJ
Docentinstructie: Het is aan te bevelen de eerste dia’s klassikaal te tonen en met uitleg te bespreken. Als na zes dia’s een korte demo van Celsius/Fahrenheit.
Java Objectgeoriënteerd Programmeren in Java met BlueJ Hoofdstuk 7 Polymorfie en overerving © 2014, Gertjan Laan, versie 2.
Java Objectgeoriënteerd Programmeren in Java met BlueJ Hoofdstuk 8: Gebruikersinterface © 2014, Gertjan Laan, versie 2.
Let’s go! ›Beginnerspresentatie ›Starten met prospero ›Verschil CMS en web navigator ›Nieuwe content > nieuwe folder aanmaken ›Bestanden uploaden ›Linkobject.
 C++ heeft een inheritance mechanisme  Manier om functionaliteit te ‘erfen’ van een parrent class ◦ Polymorphisme ◦ Zoals we het ook in C# kennen.
Hoe maak ik een PowerPoint presentatie?
C++ Les 1: introductie. Programmeren Programma’s scripts Websites libraries (Sound, GUI, netwerking…)
Trimester 2. Hfdst 1: e-Presentatie, master! e-Presentatie Met de hulp van Powerpoint gaan we leren hoe we een elektronische presentatie kan maken.
RoboCup Junior Bouwen van een robot voor de RCJr lessen Versie
De definitie van een object. Een object is een verzameling van eigenschappen en bewerkingen. Veel voorkomende objecten zijn: D (display) Gui (user interface)
Training: Inloggen en Zoeken
Gebruiksaanwijzing Hoi stelletje gozerts, dit is allemaal onzin over een computer. Veel plezier ermee.
Game Object Structuren
Training: Inloggen en Zoeken
Objectgeoriënteerd Programmeren
Gameprogrammeren: Objecten en geheugen
Gameprogrammeren: Game Assets
Gameprogrammeren: Lists en interfaces
Training: Inloggen en Zoeken
Gameprogrammeren: Animatie
Gameprogrammeren: Overerving in Painter
Gameprogrammeren: Platform-games
Gameprogrammeren: Game Basics
5 tips om eenvoudiger te werken
Loopbaan en burgerschap les 2
Gameprogrammeren: Tiles en File I/O in Tick Tick
Game: omgaan met tijd (Jewel-Jam)
Gameprogrammeren: Klassen en objecten
GAME MAKER ONLINE Les 2 / Breakout Michel Fiege.
Veilig Internet Geef antwoord op de vragen en ontdek of jij veilig gebruik maakt van het internet!
GAME MAKER ONLINE Les 1 / Sokoban Michel Fiege.
GAME MAKER ONLINE Les 3 / Pac-Man Michel Fiege.
Workshop 2D Spelontwikkeling
GAME MAKER ONLINE Les 6 / Super Mario Michel Fiege.
GAME MAKER ONLINE Les 5 / Snake Michel Fiege.
Hoofdstuk 1 Wie ben je? Wat kun je? Wat wil je?
Level 1 is de basistraining, waarin je een begin maakt met GTD
Software Development fundamentals
Hoe speel je de Pizza Game?
Loopbaan en burgerschap les 3
Gameprogrammeren: Enemies in Tick Tick
Software Development fundamentals
Leren programmeren met Scratch
EEN SPEL MAKEN MET SCRATCH
Transcript van de presentatie:

Introductie GameEngine

Inhoud  De Game Package  Speelveld aanmaken  GameObjecten met plaatjes neerzetten  De Game-loop  Besturing door de speler  Een timer gebruiken  Events in het spel, waaronder collisions

Structuur van een spel Een spel bestaat in het algemeen uit een aantal 'onderdelen':  Een 'wereld' (rooms, levels) met achtergrond waarin het spel zich afspeelt.  GameObject dat door de speler bestuurd wordt.  Andere GameObjecten die met elkaar interacteren.  Geluid, Menu, Formulier, Scorebord...  Spel 'loopt'.....!

De Game Package De game-package bevat allerlei zaken, die je helpen een spel te bouwen:  'Tile environment', wereldgrenzen, image...  GameObject: statisch object in het spel.  MovableGameObject: bewegend object in het spel (de gameplayer is ook van dit type)  Timer, Geluid, Formulier, Dashboard...  Besturing (Touch screen, Motion Sensor..)  GameEngine: laat het spel lopen, beheert lijst van GameObjects, MovableGameObjects, achtergrond, etc.

De Game Loop (eerste keer) De GameEngine start het spel en komt dan in een loop: maak speelveld met achtergrond plaats initiële GameItems en GamePlayer Initialiseer variabelen (punten, etc) while ( gameRunning ) { doe spelacties teken spel opnieuw }

Het speelveld (1) Het speelveld kan zo groot zijn als je scherm en stil staan (bijv pacman). Het speelveld kan ook groter dan je scherm zijn. Er is dan een viewport, een venster waardoor je een deel van het speelveld ziet. speelveld viewport speler

Het speelveld (2) In platform games en shooters zorgt de game- package ervoor dat viewport met de speler mee beweegt. Je kunt dan de positie van de speler in de viewport instellen. In dit voorbeeld: horizontaal: midden. verticaal: beneden speelveld viewport speler

Het speelveld (3) Achtergrond kan leeg zijn, maar je kunt deze ook vullen met plaatjes: tiles int[][] map = { { -1, -1, 0, 2, -1, -1, -1, -1, -1, -1, -1, -1 }, { -1, 0, 3, 3, 2, -1, -1, -1, -1, 0, 1, 1 }, { 0, 3, 3, 3, 3, 2, -1, -1, 0, 3, 3, 3 }, { 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 } };

Game Objects (1) GameObjecten kunnen statisch of bewegend zijn. Voor beide bevat de game-package standaardklassen, die je uitbreidt met je eigen functionaliteit. class Flesje extends GameObject { // eigen plaatje, gedrag... // bijv: punten als speler het pakt } class Kogel extends MoveableGameObject { // eigen plaatje, gedrag... // bijv: snelheid geven, botsen met vijand }

Game Objects (2) Statische objecten:  maak je (constructor)  geef je een positie  laat je door de GameEngine op het speelveld zetten  hebben 1 of meer plaatjes (sprite)  kunnen zichtbaar/onzichtbaar zijn  hebben een methode update() die elke gameloop wordt aangeroepen Plus het gedrag dat je erbij maakt!

Game Objects (3) Plaatjes zijn ingedeeld in frames. Die frames zitten in één image-bestand. Je geeft het aantal frames op, en de game-engine knipt dat plaatje op in frames. Animatie kan, zelf frame kiezen ook.

Game Objects (4) Bewegende objecten: hebben alles wat statische objecten ook hebben, plus:  snelheid  botsingen  wrijving

Game Objects (5) GameObjecten hebben een methode update() die elke gameloop wordt aangeroepen. De standaardinvulling van deze methode zorgt voor essentiële basisacties als rendering, verplaatsen van bewegende objecten e.d. Door deze methode te overriden voeg je gedrag toe, bijvoorbeeld het afhandelen van botsingen, verwerken van input. Begin deze override altijd met super.update(), anders gebeuren de basisacties niet meer!

De speler Er is geen speciaal object voor de speler. Dit is soms een gewoon GameObject, soms geen enkel. Je kunt wel een GameObject in de rol van speler aan de game toevoegen. De viewport volgt dan dit GameObject. NB. Tetris is een voorbeeld van een spel zonder zichtbare speler.

De Game Loop (tweede keer) De GameEngine verplaatst de bewegende objecten:.... while ( gameRunning ) {update() van alle GameObjects (standaard: sprite-animatie, verplaatsen van Moveables...) (niet-standaard in eigen override van update()).... pas zonodig viewport aan (bij bewegende speler) teken viewport opnieuw }

Collision (1) De GameEngine kent twee manieren van collision detection: - MoveableGameObjects met andere GameObjects - MoveableGameObjects met tiles De afhandeling van deze botsingen gaat op zeer verschillende wijze (vanwege de performance van de GameEngine)

Collision (2) In de methode update() van een MoveableGameObject kun je opvragen met welke andere objecten je gebotst bent. Je krijgt een ArrayList van objecten terug: ArrayList gebotst = getCollidedObjects(); Je kunt deze lijst nu aflopen en actie ondernemen. Zie bijvoorbeeld de klasse Vis. NB: Alleen bewegende objecten (onderling + met stilstaande)!

Collision (3) Wanneer je in de achtergrond 'tiles' hebt, detecteert de GameEngine ook botsingen met die tiles. Dit is automatisch voor de MoveableGameObjects die de interface ICollision implementeren. Bij botsingen met tiles wordt dan aangeroepen collisionOccurred(List collidedTiles) In de parameter krijg je een lijst van speciale objecten mee: TileCollision

Collision (4) Een TileCollision is een simpel object met twee variabelen: - De Tile waartegen je botste - een getal (0,1,2,3) dat aangeeft tegen welke kant je botste. Deze informatie kun je doorgeven aan methoden die het object laten ‘bouncen’ of stilzetten: - bounce(TileCollision tc) - MoveUpToTileSide(TileCollision tc)

De Game Loop (derde keer) De GameEngine detecteert botsingen :.... while ( gameRunning ) {update() van alle GameObjects (standaard: sprite-animatie, verplaatsen van Moveables, detecteer tile-collisions voor ICollision-objecten...) (niet-standaard in eigen override van update() met: vraag object-collisions op).... pas zonodig viewport aan (bij bewegende speler) teken viewport opnieuw }

Aansturing op tijd (1) Soms wil je dingen met een vertraging laten gebeuren. Je kunt dan bij de GameEngine een wekker (alarm) zetten, met het verzoek om een seintje te krijgen na een bepaalde tijd (een aantal stappen in de game-loop. Bijv 1: Speler schiet en kan pas opnieuw schieten na verloop van een korte tijd. Bijv 2: Na een tijdje verschijnt er een nieuw hapje of power-up Objecten die Alarms willen gebruiken, moeten de interface IAlarm gebruiken om wake-upcalls te ontvangen. Alarms kun je hergebruiken door ze te ‘restarten’. Voorbeeld: StrawberryControler.

Timers Werking timer: new Alarm(tijd, id-nummer, this) startAlarm() GameEngine Object implements IAlarm Object implements IAlarm (na stappen van de game-loop:) triggerAlarm(id-nummer)

De Game Loop (vierde keer) De GameEngine laat alarms afgaan:.... while ( gameRunning ) {update() van alle GameObjects (standaard: sprite-animatie, verplaatsen van Moveables, detecteer tile-collisions voor ICollision-objecten...) (niet-standaard in eigen override van update() met: vraag object-collisions op) update Alarms en laat ze zonodig aflopen.... pas zonodig viewport aan (bij bewegende speler) teken viewport opnieuw }

De Game Loop (vierde keer) De GameEngine detecteert botsingen: while ( gameRunning ) {verplaats bewegende objecten detecteer tile-collisions voor ICollision-objecten pas zonodig viewport aan (bij bewegende speler) roep methode update() van GameObjects aan (in update: vraag object-collisions op) laat Alarms tikken en zonodig aflopen.... teken viewport opnieuw }

En nu aan de slag! •Geen game-idee? Pak je favoriete Nintendo-spelletje, of kijk eens rond naar Flash-spelletjes op internet •Maandag nog geen idee? Paul komt paar spel-ideeën laten zien.

Samenstelling groepje •Naar eigen inzicht duo’s kiezen, maar… •Docent kan veto uitspreken •Samenstelling uiterlijk maandag om uur doorgeven per mail: