Divij Sood (Dyonisian)
Game Development Projects
(Click on images for videos/downloads)
I am a Gameplay Programmer with 2+ years of experience working with Games, AI applications, and VR experiences. I am passionate about using my programming skills to translate and execute Game Design into finished products. Applying creative problem-solving to technical challenges is at the core of what I do.
I am an expert user of Unity, C#, C++, and Unreal Engine 4.
I recently helped Sunnyside Games polish and release their latest game, Towaga: Among Shadows as a launch title for Apple Arcade. I worked primarily on Gameplay, which included new monsters and boss fights, a new game mode, and lots of bug fixing.
I was an AI Simulation Software Engineer for iStein Neural Networks, and created 3D Visualizations and Simulations in Unity to help represent their interest and work in Artificial Intelligence.
I have my own writing business - providing content writing and copywriting solutions to technology businesses.
I write Game Development blog posts for MAGES Institute - https://mages.edu.sg/blog
My writing business - www.dyonisianwriting.com
3rd Person Shooter Procedural Generation Prototype
Mechanics inspired by Fortnite and Horizon Zero Dawn February 2019
Unreal Engine 4, C++
Player character -
Camera and shooting mechanics inspired by Horizon.
Building system inspired by Fortnite.
Player can build walls, floors, and ramps. Built objects snap to a grid.
Player can edit a hole in one of 4 positions in a wall to easily shoot the enemy.
Procedural and Modular Enemy inspired by Horizon's early prototypes.
Starts with a core block. The final "assembled" enemy varies in shape and size.
AI controller allows the enemy to patrol or seek the player.
Core block (EnemyPawn) spawns pieces and attaches them to its faces.
If the core is destroyed, the whole robot goes down.
Module types -
Holder (grey) - Spawns and attaches more modules
Armour (black) - Protects the core
Weak spot (yellow) - Has low HP and may explode when destroyed, damaging modules near it
Weapon (red) - Machine gun - Fast, weak projectiles. Turns slowly to aim towards the player like a turret.
Weapon (red) - Missiles - Big, slow projectiles that explode and can blow up cover/obstacles
C. Elegans AI-Controlled Physics-based Worm
Games/AI Simulation Software Engineer at September 2018
iStein Neural Networks - Unity
Demonstration of AI controlled worm with realistic muscle-driven movement navigating a simulated Minecraft-like 3D environment towards a food source.
Realistic physics-based worm capable of multi-part, muscle-driven movement inspired by nature.
Machine learning applied using ml-agents library. AI's goal is to move the worm to its target. The complexity of the environment was increased step by step.
The AI can be trained to move the worm in 2 dimensions, 3 dimensions, and through dense "earth" in the form of blocks. The AI is trained to dig tunnels to get to its target.
The AI first wanders to find the "scent" of the food and then seeks the food.
Worked with different physics-based solutions for simulating a realistic worm.
Implemented voxels and grid-based manager for cubes.
C. Elegans Connectome Viewer
Games/AI Simulation Software Engineer at June 2018
iStein Neural Networks - Unity
Visualized complex biological neural activity data using Unity. Developed a visually appealing viewer for a worm connectome.
Data such as the positioning of neurons, connections between them, and other neurotransmitter data is read and parsed from XML files.
UI and Interaction - User can click on neurons to view data. One of 4 themes can be selected. Particles can be toggled on and off. Playback and cinematics can be controlled.
Graphics - Line renderers for connections. Particle systems and spheres for neurons. Particle systems for signals.
Shaders - Using Unity's variant of HLSL and Shader Graph. Shaders are used for animations, glows, holograms, and diffuse effects.
Playback - Data of signals between neurons is parsed and played in the viewer.
Pathfinding - All neurons are added to a graph as nodes. Programmed pathfinding to find the shortest path between 2 neurons. Pathfinding uses a separate thread for performance.
Procedural Generation and Noise prototypes
Games/AI Simulation Software Engineer August 2018
at iStein Neural Networks - Unity
Explored Procedural Generation with Value and Perlin Noise.
Explored some applications of Procedural Generation.
Used Procedural Mesh Generation.
Perlin and Value noise applied to textures, then used as heightmaps for planes and Unity Terrains.
Noise applied to particle systems.
Parameters tuned for landscape-esque results.
Applied procedural mesh generation for generating mazes.
Hack 'n' Slash Game with Machine Learning AI
Coursework - Honours Project 2016-17
4th Year Project and Dissertation - An analysis of the effectiveness of Machine Learning techniques in a combat-focused 3D action game to improve user gameplay experience.
Game available to download here - https://dyonisian.itch.io/talons-wrought-of-steel
1) Designed and Developed a 3rd person fighting game as a platform for the research. Game design is modelled based on Mount and Blade.
2) Applied Machine Learning techniques to create AI Agents. Used Reinforcement Learning (Q Learning) and Neuro Evolution (NEAT).
3) Arranged developed AI in increasing order of difficulty in the game
All players found the game highly enjoyable and immersive. All but 1 player preferred the Machine Learning AI. All players said the game had a very smooth difficulty curve.
Q-Learning AI performs consistently well and can learn in real-time. NEAT produces AI with more varied and interesting behaviours.
Documentation includes 2 articles on LinkedIn and several videos.
Virtual Reality Educational Games
Virtual Reality Developer at Gilded Mouse Media (1 year+) 2016-17
VR Game Development and Design - Educational games for employees/students in the oil industry. 14 applications for GearVR finished.
NOTE - The video is one of the 12 modules, recorded on PC. There are some distortions which are not present on the GearVR. Runs smoothly at 60 FPS on GearVR. The other modules are of similar design with different locations/equipment.
1) Programmed and designed applications and interaction for VR - UI based interaction, movable objects, etc.
2) Optimized applications to run at 60 FPS on GearVR with complex geometry.
3) Solved design challenges to create better games for education.
4) Pitched and pushed for better production quality and a larger emphasis on
5) Improved look/feel and developed smoother UX for some applications.
Additional research/development included -
1) Graphic techniques for performance - Volumetric rendering, Impostor geometry , combining meshes.
2) Day/night cycle with real-time dynamic lights on GearVR.
Vermin Scourge - 3D Sci-Fi FPS
UE4 Spring Jam and Advneture Jam 2018
Role - Team Leader and Programmer, some Game Design & Production work.
Made by Team VerminScourge for UE4 Spring Jam 2018.
Team - Divij Sood, Connor Barthelmie, Rebecca Tipler, Miroslaw Sieniewicz, George Garcia.
-First experience forming and leading a Game Jam team (With mostly people I had never met before) - involved a lot of planning and scheduling.
-First non-tutorial project with UE4 and C++.
-Features programmed - Rat enemies of 4 types, AI state machine, NavMesh pathfinding, combining blueprint and C++ programming, Spawn system with object pooling, particle systems, 2 power ups.
-Managed a considerably complex and well-featured, fully 3D game with high-quality graphics for a 5 day jam, then further improved it for 2 days for the next jam.
Mods for Divinity: Original Sin 2
Divinity Engine 2 - released on Steam Workshop and Nexus 2018
My first experience creating mods for a game. I have 4 mods available,
with a total of more than 1500 downloads on Steam and Nexus combined (Not amazing but decent for a "not too active" game community.)
My goal was to exercise my creativity and Game Design skills to add fun content
that suited the game, and to provide additions that were required by player.
Work mostly involved Game Design and balancing, through database editing and later on scripting in the Divinity Engine 2's own scripting system.
-Skill usability improvements - Changed 28 skills in the game and added 5 new ones.
-Origins/Racial skillbooks - Gives players a bit more flexibility by making some skills in the game more easily available.
-Apotheosis for everyone - Makes a useful skill more easily available.
-Tank/Defensive Warrior - A completely new class that gives a unique style of
gameplay not present in the original game.
-Shadow Mage class (In progress) - A more complex class addition for exploring
another archetype not present in the game with more complex and creative skills.
Unreal Engine 4 C++ Prototypes
Following Udemy Unreal Engine 4 C++ course 2017
-Worked on 2 Unreal Engine 4 prototypes using Blueprints and C++.
-Core mechanics are programmed with C++ and accessible through Blueprints for easier Game Design.
-Worked on basic gameplay features, such as movement, physics, collisions, triggers, physics handles, raycasting, automatic projectile aiming, AI.
-Good application of OOP throughout the projects.
SmartTome - Augmented Reality Android Game
Coursework - Professional Project - Unity 2015-16
Role - Programmer (Team of 8), Development Time - 8 Months
You're a modern day Wizard, and your phone is your Spell Tome. Players travel to popular locations in the real world to accept quests to take down monsters. Players draft their spells and go into battle.
The original idea was to make a game that allowed players to interact with the real world.
1) Researching suitable technologies and methods of implementing them to achieve our goal, including Augmented Reality features, UI, Networking, GPS, Google Maps, Augmented Reality
2) Implementing GPS, Google Maps and Remote Databases in Unity using C#
3) Programming C# scripts within Unity for Quest functionality
4) Programming and Designing UI
I contributed to the concept and design, including planned features for the future such as World Bosses, Competitive Multiplayer, Laser Tag like mechanics.
Car Steering AI using Fuzzy Logic
Coursework - Fuzzy Inference System in Unity 3D 2016
This demonstrates a car being steered by Fuzzy Logic based AI. I tested a Fuzzy Inference System in MATLAB and then programmed a Fuzzy Inference System in C# in Unity to demonstrate it working. The car steers smoothly and the rate of steering varies based on how far it is from the line and its current velocity. The Fuzzy Inference System makes a smooth and realistic steering system for the car. It could be implemented in a racing game.
Desktop Golf - Augmented Reality PS Vita Prototype
Coursework - Used C++ Framework for PSVita 2016
Augmented Reality Desktop Golf Game - Platforms extend from marker to marker to create a golf course based on user's placement of AR Markers. The game allows for flexible placement of markers, and innovative player Level Designs. The game is a tool for the player's creativity, and level flexibility improves replayability. Developed using a C++ framework (Game Education Framework- https://github.com/grantclarke-abertay/gef)
- Programmed a Game Object class, used for the golf ball and platforms. Includes Local Transforms for collision detection.
- Used all 6 PS Vita Markers.
- The platforms rotate, scale and position in a way to connect two markers in almost any position.
- Programmed Gravity and Velocity physics, and AABB collision detection.
- Game state is central to the game logic. The state moves forward when the ball lands on the next platform.
Level Editor - C++ Tools Programming
Coursework - Used C++ Framework, DirectX11, MFC 2017
Level editor intended for an MMORPG game. The purpose of the tool is to allow easy creation and editing of levels for a game. Additional features and improvements were added on top of an existing framework, for improved usability and world editing. Changes include -
- Toolbar for ease of use
- Camera controls (Mouse and keyboard, inspired by Unity)
- Focusing on the selected object
- Highlighting the selected object
- Manipulation of objects by dragging the mouse
- Inspector for object attribute editing
- Adding new objects or copying existing ones
- Improved usability of object selection
- Half-implemented object picking with the mouse
- Camera is implemented as a vector camera using Euler Angles
- Mouse input is used for moving the camera and objects
- Object picking implements an algorithm for ray casting along with Matrix calculations based on a tutorial from Rastertek. It could be made to work properly with further debugging. (http://www.rastertek.com/dx11tut47.html)
Audio Programming - Algorithmic music, Filters, Voice processor
Coursework - PureData and Unity 2016
The Pure Data patch was created to support an audio-based game. The idea was to have the audio as an interactive part of the environment, that changed based on user interaction and actions, to increase immersion. The game is a work in progress - it shows a distortion or ripple in the audio that would automatically occur when an action is taken in game, and the gradual changing of music alerts the player towards lowering HP. Features to be added include voice recording and processing.
The music is based on music theory and the Circle of Fifths. The Square pitch follows the G Major scale while the rest follow the G Phrygian Scale. This allows the notes to randomize yet still be melodic.
The first part shows the distortion ripple in the audio and the changing music that signifies that the player is close to death.
The second part shows the actual Pure Data patch.
Demonstrated in order -
1) Algorithmic music
2) Turning off some samples and waves
3) Transposing one of the waves
4) Turning up the comb filtering, reverb, and delay for a wave
5) Effect of comb filter, reverb and delay on drum samples
6) Sending a "ripple" through the music using gradual increase then decrease of comb filtering, reverb and delay
7) Processing recorded audio, including delay, reverb, echo and pitch shifting
Unreal Engine 4 Level Design and Gameplay
Solo project - Unreal Engine 4 2016
This was my first experience with Unreal Engine 4. My aims were to-
1) Make full use of Unreal Engine 4's amazing graphics
2) Create an atmospheric Island landscape (Using existing assets)
3) Optimize it to perform well (60 FPS)
4) Add some basic gameplay using Blueprints and C++ (In Progress)
5) Optimize it for VR
6) Test it on a VR Headset (In Progress)
Top Down Shooter - Networking, Prediction, Interpolation
Multiplayer Networked Game - Unity
Solo Project - Unity 2015
I built this project as a multiplayer top down shooter, using Unity's NetworkMessageDelegates. I didn't use other in-built Unity networking features. I use my own message-sending protocols and spawning functions.
I later improved on this for a Network Programming module, adding prediction and interpolation so that the game works even under bad network conditions.
In the video, the client is replicated almost perfectly on the server. Clumsy is used to simulate bad network conditions, and the simulation still works, though not as smoothly as before.
It has basic gameplay - Players spawn, shoot, throw grenades, lose HP and respawn.
DirectX 11 Graphics Programming
Coursework - Terrain, Lighting, Programmable 2015
Shader Pipeline, Shadow Mapping, Post Processing
Features - Lighting, Use of all stages of shader pipeline, Terrain manipulation using height map, Multi-pass rendering, Shadow mapping, Post-processing.
Created throughout my first term (Year 3) at Abertay University, but mostly in the last month.
The lighting simulation on the sphere is incorrect. In the end I left it as it is and created a separate scene with multiple lights and shadows.
Lighting on the terrain is per-face lighting, which creates the look of a jagged gemstone-like surface. A smoother terrain could be made using a normal map. Normals are currently calculated per-face using the geometry shader.
To and Fro(g) - Multiplayer game - 2 or 4 players
Global Game Jam 2017
Role - Programmer, Designer, Development Time - 48 Hours
Platformer made by Team EpicRaft for Global Game Jam 2017.
Unite your frog with his love at the center of the pond! Throw pebbles to create ripples in the water, to move logs to form a bridge and jump your frog over to the center. Disrupt your opponents' efforts to do the same.
Anima - 2D Puzzle Platformer
Global Game Jam 2016
Role - Programmer, Designer, Development Time - 48 Hours
Platformer made by Team WhaleyBin for Global Game Jam 2016.
Team - Divij Sood, David Robertson, Simeon Lilov, Matthew Lornie, Connor Cameron, Suzanne Scott, Mark Ritchie, David J Thomson
You are a tribal warrior who wakes up in a forest with seeds following you. You can perform a ritual to plant the seeds and grow them into vines to help you traverse the forest.
SMight! - 2D Beat 'em up on Google Playstore
Solo Project - Unity 2015
SMight – The game revolves around a sorcerer, Sorlo, who wakes up in an unknown land surrounded by enemies.
SMight is a short, retro, 2D beat em up fighting game.
This was my first game for the android platform, and first “complete” game too.
The game uses a rough version of a state machine for the different attack states of the player and enemies. I enjoyed the Gameplay programming and Game Design for this project.
It takes about 5-10 minutes to play, but it is NOT easy.
Life is Precious - Dangerous Driving Simulator
3D Serious Game - Simulates bad driving practices - Unity 2015
Role - Team leader, Producer, Designer, Programmer
Team - Divij Sood, Kaarlo Korhonen and Wayne Cho
The game demonstrates the dangers of irresponsible driving. The first scene illustrates driving while texting, and the second scene illustrates driving while drunk. I enjoyed the Game Design and Gameplay Programming aspects of this project the most.
Maxx Penn - Android Game Prototype
Internship at Piñata Studios - Unity 2015
Role - Programmer, Designer
I worked as an intern for Piñata studios in Singapore for 2 months. This mobile game prototype was developed for them. I worked on adding new features and programming a working prototype.
I collaborated with a fellow intern who was also my classmate. We both communicated with the studio head and full time programmers to better understand our task.
The Last Stand - FPS Bow and Arrow Survival Game
Solo Project - Unity 2014
You play as one of the last survivors of a zombie-infection-outbreak. After scouting for supplies, you're awaiting extraction. You wait atop a hill - the most strategically sound location. Shoot zombies with your bow and arrow.
More paths open for the zombies to get to you in levels 2 and 3.
This was the my first full 3D game project in Unity. I particularly enjoyed designing the level.
Fall Off - Ragdoll Puzzle Platformer
Group Project - Abertay Game Development Society - Unity 2015
Role - Lead Programmer, Mentor
As a member of Abertay Game Development Society, I formed a group with 5 other members to work on a game project together. Being the only 3rd year student in a group of 1st years, I took on the role of Lead Programmer and mentored the others about programming in Unity to help them contribute to the project.
It was our first project as a newly-formed group. For some members, it was their first game project overall. A lot of changes had to be made to the initial ideas, plans and expectations.
Demon Tag - Mutliplayer 2D Platformer
Group Project - Abertay Game Development Society - Unity 2017
Role - Producer, Lead Programmer, Mentor
Team - Davis Vitenbergs, Divij Sood, Filip Przybycień, Liam Telfer, Zane Zarakovska
As a member of Abertay Game Development Society, I formed a group with 1st and 2nd year students. We brainstormed and came up with the idea of a multiplayer platformer inspired by the classic game of "Tag". Onk the Monk and Puf (Poor Unfortunate Fellow) were going about their duties as scribes, when they accidentally summoned a Demon who demanded a sacrifice. Now the player that the Demon spends most time possessing gets sacrificed. The currently possessed player chases the Human player and must "tag" him in order to rid himself of the demon.
As the only 4th year member of the group, I guided my teammates and gave the project direction. I helped organize work and schedules. We worked with rough estimates of Scrum and Agile techniques.
Multiplayer Battleships Android Game
Networking using Java Sockets, Local Database 2016
and Remote Database. Android Studio
I developed this as part of a Mobile Networking module. The game sends messages between two devices on a local network using Java Sockets, stores coordinates of its ships in a local database, and uploads high scores to a remote database.
Android Split-Screen Multiplayer Shooter
2D Android Game - Unity 2015
My aim was to experiment with a unique design idea I came up with and try to make it fun and challenging.
Web Design/Development Portfolio in Adobe Flash
Graphic/Web Design/Development project
This was my final project for my Certificate course in Web Design & Development - An Interactive Portfolio made using Adobe Flash. It displays some of my graphic and web design work - But the contact information is outdated.