Next Station
Voor project Vrij moesten wij een game maken gebasseerd op een ervaring van de studiereis naar Berlijn. Tijdens de Berlijn reis zijn we naar een park geweest rond 21:35, echter toen we bij het park aankwamen stond er dat het om 22:00 dichtging. We hebben getwijfeld en besloten om kort te gaan kijken en dan weer terug te gaan. Er was maar beperkt licht in het park en na wat verder te lopen werd het donkerder en donkerder. We hadden als doel om naar een van de oude FLAK torens te gaan in Berlijn. Daarvoor moesten we van het hoofdpad af van het park naar een onverlicht stuk. We liepen met een zaklamp rond. In de schaduws maakte raren vormen en soms leek het op een beweging van een dier.
Wij hebben deze ervaring en nog wat kleine ervaringen in Berlijn omgezet in Next Station. Next Station is een escape room type game, waarbij de speler 2 puzzles moet oplossen om te ontsnappen. Er is alleen iets raars aan de hand. Als de speler 1 rondje loopt, loopt hij eigenlijk 0,5 rondje. De speler moet 2 rondjes lopen om 1 rondje lopen. Als de speler vooruit beweegt gaat de tijd naar voren en als de speler achteruit loopt naar achter.
De speler moet naar zijn vriend op station zuid toe, daarvoor moet hij een ticket kopen als hij deze koopt valt alle stroom in het station uit. De speler moet vervolgens op een andere manier een ticket krijgen. Als de speler een ticket heeft moet hij zorgen dat de trein aankomt op de juiste tijd. Wanneer de trein aankomt op het station en de speler heeft een ticket dan kan hij ook instappen. Het einde van de game is een grappig einde door de speler te laten denken dat de game klaar is, maar deze net iets later te laten eindigen.
Project Info:
Teamleden: Louiza der Kevorkian, Isabella van den Dungen
Project tijd: HKU Jaar 1 Periode 4
Engine: Unity
Code Languages: C#



Looping Station System
Het station bestaat uit 8 segmenten van een kwart. Elke keer dat een speler een segment kruist wordt er een stuk verderop geladen. De speler loopt 2 rondjes om 1 rondje te lopen. Hiermee willen we de speler verwarren. De speler kan in beide richtingen oplopen, dit heeft ook gevolgen voor de aankomst puzzle. Bij de aankomst puzzle moet de speler zorgen dat de tijd gelijk is aan de tijd is op het bord, zodat de trein aankomt.
public void NextPart(int checkpoint)
{
if ((lastCheckpoint > checkpoint && !(lastCheckpoint == 4 && checkpoint == 1)) || (lastCheckpoint == 1 && checkpoint == 4))
{
currentIndex--;
lastCheckpoint = checkpoint;
if (currentIndex < 0) currentIndex = mapSections.Count - 1;
OnNextPart?.Invoke(SectionDir.MIN);
}
else if (lastCheckpoint < checkpoint || (lastCheckpoint == 4 && checkpoint == 1))
{
currentIndex++;
lastCheckpoint = checkpoint;
if (currentIndex >= mapSections.Count) currentIndex = 0;
OnNextPart?.Invoke(SectionDir.PLUS);
}
OnSectionUpdate?.Invoke(currentIndex);
Load();
}
Laad een nieuw segment van het metro station.
Einde
Voor de tijdspuzzle moet de trein aankomen op de correcte segment, omdat de tijd met increments werkt gebasseerd welke kant je oploopt voor hoelang. Weten we niet waar de trein moet aankomen. Dit was na een kleine berekening niet heel moeilijk om te doen. Alleen de animatie van de metro ging soms de verkeerde kant op. Voor het wegrijden moest de metro en zodra hij aan de andere kant was despawnen.
public void DriveAway()
{
int currentRotationIndex = SectionManager.Instance.GetCurrentCheckpoint() - 1;
transform.DORotate(new Vector3(0, currentRotationIndex * 90 - 45 + 179, 0), 6f, RotateMode.Fast).SetEase(Ease.InQuad).OnComplete(() =>
{
metroObject.SetActive(false);
blockDespawn = false;
});
}
private void DriveToPlatform()
{
int currentRotationIndex = SectionManager.Instance.GetCurrentCheckpoint() - 1;
transform.rotation = Quaternion.Euler(new Vector3(0, currentRotationIndex * 90 - 45 - 179, 0));
Sequence sequence = DOTween.Sequence();
sequence.Append(transform.DORotate(new Vector3(0, currentRotationIndex * 90 - 45, 0), 6f).SetEase(Ease.OutQuad))
.AppendInterval(2f)
.AppendCallback(() => OpenDoor(true))
.Play();
}
Het wegrijden en aankomen op het peron