Overview
During my tenure at Cosmico, I contributed to the development
of an innovative eLearning app/game designed for students in
years 1-6. The primary focus of Cosmico was to create engaging
mini-games that facilitated learning in various subjects. As a
Junior Unity Developer, I specialized in developing eLearning
mini-games for both maths and English.
One notable project was a multiplication maths game where
users navigated through space in a rocket, answering
multiplication questions to advance. Another project involved
a shape recognition game in which users maneuvered a basket to
catch shapes relevant to the given questions.
Multiplayer Character Controller on 3D Spherical
Worlds
For our open world multiplayer functionality at
Cosmico, I developed a sophisticated character
controller that allowed users to walk around a
spherical planet.
Users had the ability to enter a build-mode, where the
camera would seamlessly pan out to provide a
comprehensive view of their entire planet. In this
mode, users could swipe to rotate their planet and
strategically place objects. To achieve fluid camera
transitions and enhance the overall user experience, I
leveraged Cinemachine, a powerful tool within Unity.
To ensure smooth and responsive character animations,
I utilized a character animator combined with a state
machine. This setup allowed for the implementation of
relevant animations for different actions, such as
walking and idle states.
A Live-Ops Shop with Dynamic UI and Pricing
To enhance the flexibility and dynamism of our
eLearning app/game, I developed a live-updating shop
feature. This allowed us to add new items to the
in-game shop without needing to push game updates. We
achieved this by integrating a system where we could
update a spreadsheet stored on the server with new
items. These items were then uploaded to Unity's Cloud
Content Delivery (CCD) service. This seamless
integration meant that the shop could reflect new
additions instantly, providing players with fresh
content and maintaining engagement without the need
for frequent app updates.
Asynchronous Loading and Addressables
Multiplication and Division Rocket Mini-Game
I created an endless runner mini-game where players would fly
around a planet, answering a variety of math challenges. The
level design was entirely randomly generated, providing a
unique experience each time. This included the generation of
math questions, which varied in difficulty based on the user's
school year and their previous success with similar questions.
By analyzing the player's past performance, I could tailor
questions to their ability level, ensuring a balanced and
engaging gameplay experience that adapted to their learning
needs. The environment below the player was also randomly
generated, featuring blocks of land with random tree and prop
placement. To enhance the visual appeal and give the game a
planetary feel, I used a shader I created in Shader Graph to
curve the planes, creating the illusion of a spherical world
rather than a flat landscape.
Shapes and Angles Mini-Game
I also created a shapes and angles mini-game. To
support this, I developed an extensive catalog of all
the shapes we might need for this game and similar
mini-games. I then built a system that allowed
developers to input specific rules and pull out the
shapes and angles they needed based on a user's
ability and year group. For instance, we could specify
that we wanted to use only 2D shapes with up to six
sides, and the catalog would return all possible
shapes fitting that criteria.
After generating the appropriate shapes, I pooled
these objects and designed them to drop randomly from
the top of the screen with random color variations.
Some of these shapes represented correct answers,
while others were incorrect. Players had to catch the
correct shapes in their basket and avoid the wrong
ones, making the game both educational and engaging.