Game maken in een uur!

Ik doe elke week mee met One hour game jam. In een game jam moet je in een korte periode een game maken met een thema. Meestal tussen 2 dagen en een week. Met One Hour Game Jam moet je in een uur een game maken. Dit is een stressvolle en super leuke game jam en heel leerzaam. Maar meestal heb je te weinig tijd om de leuke dingen toe te voegen. Maar dit ga je wel kunnen met deze tips!

Wat heb je nodig om mee te doen met OneHourGameJam?

  • Browser
  • Discord
  • Weten hoe je een game maakt. (Voor dat je een game in een uur kunt maken moet je eerst weten hoe je een game maakt)

Wat heb je nodig om deze tips te kunnen gebruiken?

  • Verstand hoe je git gebruikt
  • Een linux of MacOS standaard terminal. (Je kan ook een terminal krijgen voor Windows met git bash maar daar heb ik geen verstand van.)

Laten we beginnen…

Als je games maakt zijn heel vaak dingen het zelfde. In heel veel games zit er een speler in je game. Dus in heel veel games heb je een PlayerMovement script nodig. Om nu in een uur script een script te programmeren die je eigenlijk toch nodig had kost veel tijd. Bij One Hour Game Jam gaat het niet om uren of minuten maar om seconden. Daarom is het handig om alvast zo’n script klaar te hebben. Je hebt ook heel vaak een script nodig voor je camera die de speler volgt. Daarom is het handig om altijd een CameraFollow script te hebben. Je wilt best vaak een simpel menu hebben zodat de speler zelf kan kiezen wanneer hij wil spelen en zodat hij kan kijken wie het spel heeft gemaakt en de titel kan lezen van het spel zodat hij weet wat hij kan verwachten. Ik noem hier maar een paar en er zijn nog veel meer dingen die je vaak zou gaan gebruiken. En met programmeren wil je jezelf niet gaan herhalen. Zeker niet als je maar een uur de tijd hebt.

Daarom heb je een project nodig met handige scriptjes die je makkelijk kan aanpassen zodat je meer tijd hebt om de unieke dingen toe te voegen inplaats van jezelf steeds te herhalen.

Hoe begin ik?

Ik werk met Unity, dat is een game engine maar je kan natuurlijk ook met Unreal werken of met Godot maar dit kan ook met simpelere dingen zoals Javascript. Dit is jouw keuze. Ik zou iets kiezen wat jij fijn vindt werken en waar je natuurlijk snel mee bent. Deze tips kan je voor bijna elke manier van games maken gebruiken.

Je maakt een project aan:

Je kan zelf kiezen of je werkt met 3D of 2D. Ik vind het prettig om met 2D te werken omdat ik snel in 2D kan tekenen. Als jij snel kan tekenen in 3D moet je daarvoor kiezen. Dit is wel een BELANGRIJKE keuze. Want je volgende een uur games en andere games die je gaat maken met dit project worden dan wel 2D of 3D. Je kan niet makkelijk veranderen. Je kan natuurlijk ook dit project 2 keer maken. Eentje geoptimaliseerd voor 2D en de andere voor 3D. Als je nog niet 3D kan teken raad ik aan voor 2D te kiezen. Omdat je veel sneller kan leren 2D tekenen dan 3D.

De naam. Namen kiezen is altijd lastig met programmeren. Ik heb FastGame genoemd, omdat ik er snel een spel er mee kan maken. Maar dit is jouw keuze. Andere suggesties: FastPrototype. 1hgjToolKit, GameToolKit, PrototypeGameFast, QuickGame. TestGameIdea enz.

Vergeet ook niet om het project op een goede plek op te slaan.

Dit is erg belangrijk en handig:

Zorg dat je dit project ergens online hebt opgeslagen zoals op Github, Gitlab of Bitbucket enz. Als je dit project ergens online hebt staan kan je hem clonen en makkelijk mee aan de slag. Als je niet weet hoe je git en Github en al die andere rara dingen werken zal ik het vragen aan een begeleider bij DJO, zij kunnen het beter uitleggen dan ik. Deze stap is wel echt nodig. Als je dit niet wil. (Ik verdrietig) kan je je mapje ook dupliceren maar ik zou dit NIET doen en werken met git. Ik heb mijn project niet publiek want er zit ook zelf gemaakte muziek bij en zelf gemaakte sprites en ik heb liever niet dat mensen mijn dingen gaan gebruiken. Keuze.

Nu heb je een project en je hebt hem ergens gehost. Wat nu?

MAPJES!!! Als je in een uur een game gaat maken wil je weten waar wat is en niet alles op een hoop hebben. Dit zijn de mapjes die ik heb:

In elk mapje zijn dingen die ik vaak zou kunnen gebruiken.

Ik begin bij Fonts. Arial is lelijk. In je game wil je geen arial gebruiken. Ik ging naar google Fonts en koos 3 Fonts uit die ik mooi vond en stopte ze in dat mapje. Dit is een aanrader.

In Prefabs zit niks maar tijdens het maken stop ik daar veel in. Ik vind het fijn om dat te hebben.

In Scenes zitten al mijn Scenes en tijdens het maken voeg ik soms scenes toe voor een level 2 bijvoorbeeld.

In Scripts zitten Scripts. Ik heb hier lang nog niet alles in, maar ik vertel zo meer waarom dat zo is.

Bullet is een simpel script. Hij laat het object waar het script op zit omhoog gaan met een snelheid die je zelf kan instellen. Je kan hem roteren om hem naar een andere kant op te laten gaan. Ik gebruik dit script meestal voor kogels.

CameraFollow stop je op de camera en je geeft hem het object dat hij moet volgen.

ChangeStateOnCollision veranderd de State als je een object aanraakt met een tag. Dit stop ik bijvoorbeeld op de lava. Als de lava dan de speler aanraakt veranderd de State naar bijvoorbeeld PlayAgain en dan je kan je dus niet meer spelen.

Dan gaan we naar het mapje Destroy:

ChangeStateToWhenAllObjectsWithTagAreDestroyed doet precies dat: Hij veranderd de Game State wanneer alle objecten met een tag vernietigd zijn. Dit is bijvoorbeeld handig als een spel maakt waar je alle zombies moet vernietigen.

DestroyAfterXSeconds vernietigd het object waar de script aan vast zit naar X seconde. X is hier een variabel die je zelf kan instellen. Dit is handig om de prestatie van het spel te verhogen.

DestroyWhenCollideWithTag. Die vernietigd een object wanneer hij tegen een object komt met de juiste tag. Dit is handig als je een muur hebt die moet verdwijnen als je er met een kogel tegen aan schiet.

We gaan weer een laag naar boven:

Managers:

Dit zijn scripts waarbij het lang duurt om het uit te leggen.

De GameManager is verantwoordelijk voor het verloop van het spel. Hij bevat een type met verschillende states. De hele game is afhankelijk van die een variabel gemaakt van dat type. Als bijvoorbeeld het type InGame is moet de speler kunnen bewegen, maar in de state menu niet. Als de state PlayAgain is moet de DisplayManager in het canvas een knop laten zien met playAgain. En bij menu een knop met Credit, Titel en Play. Ook bevat het functies zoals shortcuts om het spel opnieuw te laden en nog meer functies waar ik nu geen tijd voor heb om uit te leggen. De audioManager zorgt ervoor dat de goeie muziek op het juiste moment word gespeeld. En DisplayManager zorgt ervoor dat de goeie UI elementen worden laten zien op het juiste moment afhankelijk van de GameManagerState. Dit hoef je niet allemaal te begrijpen.

We gaan weer een laag naar boven:

MoveObjectBetweenTwoPoints beweegt een object tussen 2 punten.

MoveToObject beweegt een object naar een ander object met een snelheid. Handig voor slechteriken.

PlayerMovement is heel belangrijk en moet een script zijn die in je game maak project zit. Ik kan makkelijk wissen tussen topDown movement en sideView movement.

RandomSprite kiest een random sprite van een reeks.

Rotate draait een object rond met een snelheid. Dit is handig voor platformers.

SpawnBetweenTwoPoints Plaats een object in de wereld op een willekeurige positie tussen 2 punten. Handig als je bijvoorbeeld lava regen wilt maken.

SpawnObject plaatst een object vanaf het punt waar het script aan zit. Handig voor een pistool of een snoep automaat bijvoorbeeld.

We gaan een laag naar boven:

SFX. daar zitten allemaal sound effects in. Ik heb 10 verschillende spring geluiden. 10 op pak geluiden. 10 Explosie en 10 Schiet geluiden. Als je de geluiden al hebt opgenomen kan je ze snel toevoegen aan je game wat het leuker maakt om te spelen. Hier zij alle soorten die ik tot nu toe heb gemaakt:

We gaan weer een laag naar boven:

In Sound zit alle muziek die ik heb gemaakt. Ik moet hem eigelijk hernoemen naar Music.

In Sprite zitten alle sprites die ik heb gemaakt. Munten en spelers en kogels en bomen enz.

Zo ziet het mapje eruit:

En we gaan weer een laag naar boven:

En in Text zitten dingen zoals WASD to move en YOU WIN! en YOU LOSE 🙁 Eigelijk moet ik die zetten in Sprites.

Ook is het handig om kleuren palletten bij de hand te hebben.

Deze kleuren passen goed bij elkaar en die kan ik zo gebruiken en dan ziet het er mooi uit. Ik zou hier van een paar in je project gooien. Dan ziet het er mooier uit. Ik heb hier een voorbeeld van:

Zonder kleuren pallet ?
Met kleuren pallet ?

Het kost weinige moeite en het laat je game stralen.

Ik hoop dat je van mijn project hebt geleerd van wat je in jouw project moet toevoegen.

Tips voor OneHourGameJam

  • Haast! Een uur is weinig dus schiet op.
  • Stress niet. Als je gestresst bent functioneert je brein slechter. (Bij mij dan)
  • Heb plezier! OneHourGameJam is echt het leukste uurtje in de week. Je maakt een volledige game en je hebt snel resultaat.
  • Heb je een idee? Doe het dan ÷ 10. Je hebt echt weinig tijd dus zorg dat je het klein houd.

Ik hoop je te zien bij OneHourGameJam. Hier is de website met ook een link naar de Discord.

OneHourGameJam: https://onehourgamejam.com

MAAR VOOR JE GAAT!!!

Voordat je jouw maak een snel spel project bij iedere project gaat gebruiken mag dat niet zomaar. Bij OneHourGameJam mag je alles voorbereiden en scripts van internet en sprites van 3 jaar geleden en scripts van 3 jaar geleden zonder een probleem gebruiken. MAAR, bij sommigen game jams mag dit niet. Dan speel je vals en dat is niet leuk voor de mensen die alles in de tijdperiode gingen maken dus LEES DE REGELS.

Nu je dit project eenmaal hebt ben je gezegend voor de rest van je leven met games maken. Je kan niet opeens het beste idee ooit hebben. Je moet eerst kijken of het idee wel leuk is. Met dit project kan je makkelijk je idee binnen 1 dag produceren en kijken of het leuk is. Dit is een gigantisch voordeel en bespaard je tijd en als je dan een groot project gaat beginnen weet je zeker dat je idee leuk is waardoor je weer tijd bespaard.

Dat was dit artikel. Ik hoop dat je hier iets aan hebt gehad en dat ik een game van je zie bij OneHourGameJam

Sem