Jump to content

Humbled (homebrew NES game)


Recommended Posts

Goedemiddag forum! Op verzoek :) Bij deze een topic over Humbled, een homebrew NES game die ik met een online vriend van mij heb gemaakt voor de NESmaker Byte-Off competitie. Het spel is nog in de demo-fase, maar kan wel al gespeeld worden. We willen nog extra werelden en functionaliteiten toevoegen, het level design verfijnen (vooral het eerste level maakt bijvoorbeeld nog onvoldoende duidelijk dat de heldin ook naar links kan lopen) en bugfixes doorvoeren. Hieronder volgt wat achtergrondinformatie over het spel en de wedstrijd. Links naar de demo ROM en andere assets vind je onderaan deze post.

 

Wanneer we het spel gaan doorontwikkelen, zal ik dit topic gebruiken om periodiek updates te plaatsen over de status.

 

Het verhaal
Humbled vertelt het verhaal van Lyndsia, de heldin van het koninkrijk van Herxodus. Na het redden van het koninkrijk is zij dermate arrogant geworden, dat ze zich te goed voelt om kleinere heldendaden te verrichten. De Goden van Herxodus, die haar de speciale krachten hebben gegeven die haar tot held hebben gemaakt, besluiten daarop in te grijpen door deze krachten van Lyndsia te ontnemen, en in acht heilige artefacten over het koninkrijk te verspreiden. Lyndsia's opdracht is om deze krachten - samen met haar bescheidenheid - terug te vinden.

 

Het proces
Het idee voor dit spel komt voort uit het thema van Byte-Off III, "Revival" (opwekking, herleving, herstel). Byte-Off III is de derde NESmaker competitie, georganiseerd door The New 8-bit Heroes. NESmaker is een tool (gemarket als een Nintendo game maker, maar eigenlijk een IDE) waarmee men een eigen NES game kan ontwikkelen.

Oorspronkelijk begon het spel als een solodev project; halverwege het proces is een vriend van mij (Joey, aka Jollyshadow) aangehaakt om te helpen met het verhaal en de grafische elementen. Ikzelf heb het concept, het programmeerwerk en de muziek voor het spel gemaakt. De totale ontwikkeltijd voor deze demo is zes weken. Wanneer de wedstijd is afgelopen, zullen we het project verder oppakken, het spel afronden en de mogelijkheden verkennen om het fysiek, op een echte cartridge, uit te brengen.

 

Screenshots
intro.png kingdom.png artefact.png temple.png

 

Speel het spel
Het spel kun je downloaden op mijn itch.io pagina (klik op "No thanks, just take me to the downloads"), of online spelen op The Retroverse. De online emulator is niet de meest stabiele, dus ik raad aan om de rom te downloaden.

Om de rom te spelen, heb je een emulator nodig die Mapper30 ondersteunt, ik raad aan om hiervoor Mesen of Fceux te gebruiken.

 

Meer links

Op YouTube kun je ook de trailer zien, en een longplay video (met spoilers, dus als je zelf wil spelen, zou ik deze nog even niet kijken).
De soundtrack kun je luisteren op Soundcloud.
Meer informatie over NESmaker en Byte-Off III vind je op de website van The New 8-bit Heroes.

Link to post
Share on other sites
  • 2 weeks later...

Graag gedaan! :)

 

Misschien niet heel verrassend, maar de grootste uitdagingen hebben te maken met de limitaties van de hardware. Je bent behoorlijk beperkt op vele gebieden:

  • Kleurgebruik: de NES heeft een palet van 54 kleuren, waarvan je maar 13 achtergrond- en 12 voorgrondkleuren op een scherm kunt gebruiken.
  • Graphics: de grafische chip van de NES is opgebouwd uit tegels van 8x8 pixels, waarvan je er maximal 256 kunt gebruiken op een scherm. Daarbovenop kun je per metategel van 16x16 pixels maar drie kleuren plus één globale achtergrondkleur gebruiken.
  • Snelheid: de NES heeft een processor van 1.79MHz, waardoor je dus zuinig om moet gaan met resources. Zo is er een scherm waarbij rotsblokken naar beneden vallen; deze werden in een eerdere testfase niet opgeruimd, waardoor het spel vertraagde en uiteindelijk zelfs bevroor.
  • Geluid: er zijn vijf vaste sporen voor de muziek, waarvan vier sporen een vast "geluid" hebben. Deze sporen worden ook gebruikt voor geluidseffecten, waardoor een geluidseffect de achtergrondmuziek uitschakelt op het betreffende spoor. Het vijfde spoor wordt gebruikt voor samples, wat meteen de volgende uitdaging introduceert:
  • Geheugen. Een ROM kan in theorie onbeperkt geheugen gebruiken, maar de NES hardware kan op elk moment maximaal 32kB aan code aan. Dat zorgt ervoor dat je creatief moet omgaan met je scripts en op voorhand al moet plannen / na moet denken over welke gegevens je altijd nodig hebt, en welke uitwisselbaar zijn.

Wat we daarnaast geleerd hebben tijdens het project, is dat een testgroep enorm helpt met de kwaliteit van de game. We hebben een week voor de deadline een kleine groep spelers het spel laten testen en zijn zo op verbeteringen gekomen waar we zelf als ontwikkelaars blind voor waren geworden. Vooral op het gebied van level design: sommige delen van het spel waren te moeilijk, onduidelijk of inconsistent.

 

Al met al was (of eigenlijk: is) het een leuk en leerzaam proces, waarbij we een hoop hebben geleerd over de ins en outs van de NES hardware!

Link to post
Share on other sites

Klinkt heel interessant!

Maar je hebt gebruik gemaakt van een soort WYSIWYG-editor? Daarmee wil ik niet zeggen dat dat minder goed of knap is hoor, maar het werkt wel drempelverlagend voor mensen die dit ook willen gaan doen.

Misschien kun je een korte uitleg geven over het maakproces. Het lijkt mij bijvoorbeeld best leuk een heel simpele game te maken, gewoon om te zien hoe dat werkt, maar van assembly heb ik geen kaas gegeten en ik ben bang dat dat hem voor mij niet wordt. Als er laagdrempeliger tools zijn dan is dat zeer interessant.

Link to post
Share on other sites

Ik heb NESMaker gebruikt om de game te maken. Dit zou je inderdaad een WYSIWYG editor kunnen noemen, hoewel dat misschien iets teveel eer is. Het is eerder een IDE met asset manager voor NES development. NESMaker biest onder andere een pixel editor, object manager, script manager/editor en screen editor. Standaard bevat het programma een aantal modules, gebaseerd op speltype (zoals bijvoorbeeld platformer, horizontale shooter, top-down adventure). Met deze modules kun je in principe je eigen spel maken zonder dat er een letter assembly code aan te pas komt, hoewel je daarmee wel gelimiteerd bent tot de mogelijkheden welke de module biedt. De modules zijn wel flexibel in die zin dat je de codes kunt aanpassen naar je eigen smaak; dat betekent wel dat hoe meer custom functionaliteit je wil toepassen, des te meer assembly code je zult moeten aanpassen of toevoegen. Voor Humbled heb ik de standaard platformer module gebruikt en deze vervolgens zelf uitgebreid met aanvullende functionaliteiten, zoals bijvoorbeeld een custom heads-up display, double-jump functionaliteit en cut scenes. De leercurve hierbij is vrij steil, maar de uitgebreide tutorialvideo's en zeer behulpzame community (op Discord en het forum) maken het al een stuk gemakkelijker.

 

Ikzelf vind assembly redelijk te begrijpen. De grote uitdaging zit 'm vooral in hoe deze communiceert met de NES hardware. In dat opzicht ontneemt NESMaker wel veel kopzorgen: je hoeft bijvoorbeeld niet meer na te denken over de interface tussen de cartridge (of ROM) en de console (of emulator), dat is allemaal gedekt door de basisscripts. Je kunt NESMaker ook gebruiken zonder deze basisscripts, maar dan moet je echt alles van de grond af aan zelf schrijven, van bijvoorbeeld het boot/resetscript, het grafisch opbouwen van schermen en de sound driver. Daar heb ik mij in ieder geval nog niet aan durven wagen :)

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...