Skip to content

Pipeline

Mitchel Klijn edited this page May 23, 2025 · 39 revisions

Algemeen

Software

Engine:

  • Unity 6000.0.42f1
    • Android Build Support
    • iOS Build Support
    • Windows Build Support
  • Plugins
    • Netcode for GameObjects
    • Multiplayer Widgets
    • Multiplayer Services
    • Multiplayer Play Mode
    • Multiplayer Tools

IDE:

  • Visual Studio Community 2022

Versiebeheer:

  • GitHub Desktop
  • Sourcetree

3D:

  • Blender

2D:

  • Adobe Substance Painter
  • Adobe Photoshop

Audio:

Scrum:

Scrum

Stand-Ups

Wij maken gebruik van een gecombineerde SCRUM methode. Aan het begin van de dag vertellen we omstebeurt wat we de vorige dag/keer hebben gedaan (i.p.v. stand-down) en daarna meteen wat de vandaag gaan doen. In onze ervaring van onze stageperiodes bleek dit veel efficiënter te zijn, aangezien iedereen aan het einde van de dag een beetje op is.

Sprints

We werken in sprints van 3 weken, aan het eind van een sprint hebben we een sprint review met een presentatie. Na de presentatie houden we een retrospective waarin we reflecteren op de sprint/het project en maken we afspraken. Na de retrospective doen we een sprint refinement.

Planning

Voor het plannen volgen we de Trello scrum conventies.

Taal

Alles op de wiki, trello en in issues en pull requests word geschreven in het Nederlands. Alle Git commits zijn geschreven in het Engels.

Mappenstructuur

In Unity splitsen we alle bestanden op in mappen. Dit behoudt de overzichtelijkheid en maakt het zoeken van bestanden makkelijker.

Legenda
---
title: Legenda Mappenstructuur
---
flowchart TB
    basis{{Basis Map}}
    map[Map]
    mappen@{shape: procs, label: "Meerdere Mappen"}
    Bestanden@{shape: docs}
Loading
Mappenstructuur
---
title: Mappenstructuur in Unity
---
flowchart TB
    assets{{Assets}}-->art[Art]
    art-->audio[Audio]
    audio-->audioonderdeel@{shape: procs, label: "Onderdeel Namen"}
    audioonderdeel-->audiofiles@{shape: docs, label: "Audio Files"}
    art-->shaders[Shaders]
    shaders-->shaderonderdeel@{shape: procs, label: "Onderdeel Namen"}
    shaderonderdeel-->Shaders@{shape: docs}
    shaderonderdeel-->subshaders[SubGraphs]
    subshaders-->SubGraphs@{shape: docs}
    art-->ui[UI]
    ui-->uionderdeel@{shape: procs, label: "Onderdeel Namen"}
    uionderdeel-->Sprites@{shape: docs}
    uionderdeel-->uitextures@{shape: docs, label: "Textures"}
    art-->artonderdeel@{shape: procs, label: "Onderdeel Namen"}
    artonderdeel-->subartonderdeel@{shape: procs, label: "Subonderdeel Namen"}
    subartonderdeel-->animations[Animations]
    animations-->Animations@{shape: docs}
    subartonderdeel-->materials[Materials]
    materials-->Materials@{shape: docs}
    subartonderdeel-->models[Models]
    models-->Models@{shape: docs}
    subartonderdeel-->textures[Textures]
    textures-->Textures@{shape: docs}
    assets{{Assets}}-->plugins[Plugins]
    plugins-->Plugins@{shape: procs}
    assets{{Assets}}-->prefabs[Prefabs]
    prefabs-->prefabsonderdeel@{shape: procs, label: "Onderdeel Namen"}
    prefabsonderdeel-->Prefabs@{shape: docs}
    assets{{Assets}}-->scenes[Scenes]
    scenes-->testing[Testing]
    testing-->testscenes@{shape: docs, label: "Test Scenes"}
    scenes-->Main@{shape: doc}
    assets{{Assets}}-->scripts[Scripts]
    scripts-->scriptsui[UI]
    scriptsui-->stylesheet[StyleSheets]
    stylesheet-->StyleSheets@{shape: docs}
    scriptsui-->uxml@{shape: docs, label: "UXML Files"}
    scripts-->scriptsonderdeel@{shape: procs, label: "Onderdeel Namen"}
    scriptsonderdeel-->data[Data]
    data-->ScriptableObjectScripts@{shape: docs}
    scriptsonderdeel-->MonoBehaviours@{shape: docs}
    assets{{Assets}}-->scriptableobjects[ScriptableObjects]
    scriptableobjects-->scriptableobjectsonderdelen@{shape: procs, label: "Onderdeel Namen"}
    scriptableobjectsonderdelen-->ScriptableObjects@{shape: docs}
Loading

Development

Functioneel Ontwerpen

Voordat we beginnen met het maken van een feature maken we een functioneel ontwerp. Hierin leggen we uit wat onze feature doet vanaf het perspectief van de speler. Dit doen we voor elke feature.

Technisch Ontwerpen

Na het maken van een functioneel ontwerp maken we een technisch ontwerp. Hierin laten we zien hoe onze feature gaat werken vanaf een developers perspectief. Dit doen we alleen voor features die veel functionaliteit toevoegen.

Code Conventies

Tijdens het programmeren volgen we de code conventies. Als we ergens tegenaan lopen tijdens het programmeren wat niet goed uitgelegd is. Bedenken we samen een goede conventie en voegen we het toe aan de code conventies.

Documentatie

Als de feature af is documenteren we hoe deze feature werkt. Per systeem documenteren we elke class, waarvan we elke field, property en method met een omschrijving neerzetten. Daarna geven we voorbeelden van hoe je de methods kan gebruiken. Voorbeeld documentatie wiki

 private static type naam

Omschrijving


Art

Doel

Doel is dat beide spelers zo door gericht te raden proberen als eerste de volledige locaties van alle schepen van de tegenstander te raden en zo de vloot van de tegenstander "tot zinken" te brengen. Wanneer alle coördinaten van een schip zijn geraakt, is het schip gezonken.

Core game mechanics

  • Zeemijn(en) plaatsen
  • Torpedo’s plaatsen en gebruiken
  • 5 schepen kunnen plaatsen en roteren
  • Multiplayer (eigen lobbies starten, en andere joinen)
  • Zeemijnen ontmantelen
  • Torpedo kunnen gebruiken bij een achterstand

VFX lijst

  • Explosie
  • Vuur
  • Rook
  • Water shader
  • Water Explosie
  • Torpedo trail

SFX lijst

  • Achtergrondgeluid
  • Explosie (hit geluid)
  • Water explosie (mis geluid)
  • Verlies geluid
  • Win geluid
  • Raket geluid
  • Title screen

Overeenkomsten

Uitbesteding

Department Verantwoordelijk voor Medewerkers
3D models Het maken van alle 3d assets Fiona, Romy, Lino en Levy
2D Verantwoordelijk voor UI. Lino, Fiona
Animation Het animeren van de beweging schepen en steve Romy
Development Het spel speelbaar maken en de gebruikersinterface laten werken door code te gebruiken in de Unity. Mitchel en Daan
Technical art / VFX Het maken van de explosie, rook en de water shader en grid shader Romy, Levy, Fiona en Lino
Sound design Elk geluid in het spel: bijvoorbeeld een goed explosie geluid Lino en Levy
Marketing Logo voor onze game en een mascotte, Video van het spel Fiona, Romy
Documentatie Documentatie van gezamenlijk document en het bijhouden van styleguide en pipeline Fiona, Romy

General agreements

(Dit zijn afspraken voor iedereen in het team over hoe we werken,hoe we exporteren en wat je doet als je ziek bent.)

  1. Als je ziek bent, laat het team op Discord in het algemene tabblad weten dat je ziek bent en meld jezelf vervolgens ziek in Magister.
  2. Je geeft aan op trello aan welke taak je bezig bent en wat de progress is daarvan.
  3. Zorg dat wanneer je een file export de naam klopt volgens de name convention. ( Dit vind je op de wiki )

3D artists:

Fiona, Levy, Lino en Romy gebruiken Photoshop of clipstudio paint om een ​​ontwerp te maken van de schepen, zodat we dat later in Blender als model kunnen uitwerken.
Als je een ontwerp of model af hebt, vraag je eerst feedback voordat je het in GitHub zet of zegt dat het af is.

Character artist

Voor het maken van een character beginnen we eerst met het maken van concepten. Daarop wordt feedback gegeven door het team. Feedback wordt vervolgens verwerkt en dan kan er gewerkt worden aan een model sheet. Daarmee wordt het model van de character makkelijker, sneller en accuraat naar de model sheet. In blender gaan we het hele proces door, van modellen tot het animeren van de character (Modellen, Uven, Texturen, Riggen en Animatie). Als allerlaatst worden de animaties in unity geïmplementeerd.

UI artist:

Lino gebruikt Photoshop voor de UI. Hij begint met de concepting fase. Na wat verschillende concepten hebben gemaakt. Kiest Lino met behulp van het team het beste uit en werkt hij die uit.

VFX artist

We houden ons aan de styleguide, we gebruiken Unity shader graph om shaders te maken.

Clone this wiki locally