Software ontwerp in C/C++: Project opdracht


« Terug naar Software ontwerp in C/C++

Project opdracht

Om jullie recent bijgeslepen object-geörienteerde technieken te laten zien gaan jullie een GBA spel ontwerpen en ontwikkelen in C++11. De focus van de opdracht ligt niet op correcte low-level IO mapping maar op kritisch denken en testen zoals gezien in labo 7. Uiteraard komen zowel pointers en GBA programming technieken van de vroegere labo’s, als C++ class inheritance en abstractie lagen uit de latere labo’s aan bod.

Vertrek vanuit de gba-sprite-engine library die ik gebouwd heb op Github door een Fork te nemen met de knop rechtsboven. Op die manier bespaar je veel werk met een nieuw GBA project op te zetten en alle IO adressen opnieuw te mappen. Er is een README voorzien voor meer info. De engine gebruikt Tonc achterliggend.

Wat voor soort spel het moet zijn laat ik volledig aan jullie over. Het spreekt voor zich dat complexiteit (en originaliteit!) mee in rekening gebracht wordt: zie evaluatiecriteria. Inspiratie nodig?

Werk in groepen van 2 of indien oneven 3.

In het kader van onderzoek naar onderwijs vragen wij jullie je tijd gespendeerd aan het project bij houden in een bestandje. Dit mag niet veel administratie vragen: enkel in een simpele CSV bijhouden op welke dag jullie hoeveel tijd werk aan het project spendeerden is voldoende. De eenheid is in uren - een halfuur kan bijvoorbeeld met 0.5 uitgedrukt worden. Dit is een voorbeeld bestandje: https://github.com/wgroeneveld/gba-sprite-engine/blob/master/timespent.csv. Wanneer jullie het project in Github overnemen komt deze file automatisch mee. Werk dit tijdig bij, dat voorkomt moeten gokken. Dit is individueel dus als jullie samen aan een project werken, maak dan twee files aan!

Bedankt om mee te werken aan een beter onderwijs!

Minimumvereisten

Lees dit goed na: projecten die niet voldoen aan de volgende vereisten zullen niet geëvalueerd worden.

  1. De code leeft in een repository op Github onder jullie username met de MIT license.
  2. Je vertrekt vanuit gba-sprite-engine - zie hierboven. Daarbij blijf je binnen GBA MODE0 en werk je met sprites. C++11 is hiermee ook een vereiste.
  3. Indien je je baseert op andere bestaande code doe je aan bronvermelding! Plagiaat wordt zeer ernstig bestraft.
  4. Je voorziet minstens één extra unit test klasse waar je je logica in test zoals zwaartekracht en botsingen.
  5. Je project moet uiteraard minstens compileren.
  6. Je repository README.md bevat een kleine functionele beschrijving van jullie spel, gecombineerd met een schets van het domein model.
  7. Je repository timespent.csv bevat jullie individueel geregistreerde tijd in uren.

Het is niet de bedoeling om je te baseren op één van de engine demo’s en die simpelweg verder uit te werken. Dat biedt onvoldoende uitdaging en originaliteit.

Omdat als vereiste elk project op Github leeft kunnen jullie elkaar’s repository ook raadplegen. Of jullie daar gebruik van willen maken laat ik aan jullie over: onthoud sharing is caring en vergeet de bronvermelding niet. Het is geen race voor het beste waarbij je je code zorgvuldig moet afschermen: iedereen vertrekt vanuit dezelfde basis en iedereen kiest een ander soort spel.

Evaluatiecriteria

Punten worden op twee keer op /20 gegeven. Eenmalig een globaal cijfer, eenmalig een genormaliseerd cijfer, rekening houdend met de volgende subcriteria en gewichten:

  1. O.5 Abstracties
  2. O.5 Clean Code
  3. 0.3 Complexiteit
  4. 0.3 Originaliteit
  5. 0.2 Unit testing
  6. O.2 Domein model

Waarbij beide cijfers herleid worden tot één.
Criteria en gewichten onderhevig aan verandering tot 5 weken voor het laatste labo.

Inleverformaat

Datum te bepalen, evenals verdedigingsdata.

Praktische tips

 Top