Thibaut Platet
View of the Mystic Minigolf island: a temple, a minigolf course, a wooden bridge over the water and, in the foreground, the blue mascot with its smiling face.

At a glance

Dates
–
Context
virtual reality · built as a pair · ENSIM
Technologies
  • VR
  • Unity
  • C#
  • Blender

Overview

VR minigolf on an island of ancient temples, built as a pair.

Problem

Build a virtual reality minigolf game in a peaceful world: an island surrounded by the sea, where a mascot welcomes players and shows them the moves.

Role

Built as a pair. My part: the island, the menus and their interfaces, the C# scripts (score, menus, ball physics) and the mascot’s animations.

Decisions

Merge our two initial ideas into a single world; have an animated mascot demonstrate the swing; have the ball struck with a real movement, club in hand.

Result

A game in two scenes: a start menu, then the island and its three courses, all playable to the end: you pick up a club, strike the ball and track your number of strokes.

The game

A virtual reality minigolf game, on an island off the coast of Korea. The planet is covered by the seas: only the summits emerge, with their ancient temples. The player appears on an islet, crosses a bridge and reaches the main island, where a mascot is waiting to show how to play.

The concept merges our two initial ideas: minigolf courses in settings from around the world, and a futuristic world where small sea creatures have replaced humans.

Scenery, sounds and music: assets from the Unity Asset Store, including Korean temple models from the Korea Heritage Service.

My contribution

  • The island, in Unity: terrain, water, trees, buildings, bridges and props, sky, invisible walls at the edges.
  • The menus and their interfaces: the start scene and the in-game menu.
  • The C# scripts: score, menus, ball physics on contact with the club.
  • In Blender: the mascot’s animations and the rework of part of its skeleton.
  • Importing the assets and tidying the project.

About 50 hours of development on my side. My teammate built the minigolf courses and modelled the mascot.

Specification

ExpectedAnswer
WorldA peaceful island surrounded by the sea: temples, trees, traditional buildings, and ambient music from the moment you arrive.
MascotA creature made of “sea molecules”, with arms and legs. It welcomes the player and repeats the move to make, in a loop.
CoursesThree courses, winding between the buildings. All three can be played to the end.
MovingWith the left joystick; you look around by really turning your head.
Grabbing the clubAim at it, arm outstretched, and press the trigger. A blue halo shows it can be picked up; once released, it falls to the ground.
StrikingAim at the ball with the club head and make a real swing.
ScoreThe number of strokes stays on screen, to make players want to try again with fewer strokes.
MenusStart: play, credits, quit, volume. In game: volume and quit.

The mascot, from sketch to engine

Drawn and modelled by my teammate, the mascot is anything but humanoid: its one-block body holds both the head and the torso. The skeleton created with Mixamo therefore distorted it with every arm movement: I reworked part of its bones in Blender and worked on its animations (Blender and Mixamo). Its material did not carry over from Blender to Unity: it was recreated there.

Pencil sketch of a creature with a square body, two large eyes, a smile, small arms and small legs.
The concept, on paper.
3D model in Blender: a translucent blue-green cubic body, arms stretched out horizontally, blue legs and white shoes.
The model in Blender, before the face.
The mascot in Unity: a blue cubic body, a white face with black eyes and a smile, white shoes.
The mascot in Unity.

The start scene

The game opens on a floating menu, operated with the trigger.

Floating menu against an orange sky: ENSIM logo, Start, About and Quit buttons, volume slider.
The start scene: play, credits, quit and volume control.

Method

  • To locate a bug: change a value, comment out a line, test again.
  • Ball physics: a script applies a force to the ball on contact with the club, tuned so that the stroke stays playable.