Language
C++
This time, we had the opportunity to leverage C++ for development instead of C. The access to the STL library simplifies a lot of the low level task. The universal containers such as Vectors, Arrays simplifies memory management with RAII.
Libraries Used
- Alpha-Engine, a Digipen devoloped graphics libraby, that utilises OpenGL
- FMOD for audio
- RapidJSON for data parsing.
Tools
- Tiled, an intuitive editor instrumental in crafting our game levels.
Overview
Software Engineering 150 My second Software Engineering project at Digipen was a collaborative effort with a team of four, where our task was to develop a new game within a single trimester. The difference between this and the previous project was the fact that we are exposed to more libraries. We also went in more experience, ideas and terminologies. We made a detailed plan on the game design, story, mechanics are architecture.
Drawing from insights gained in previous projects, we applied our knowledge of software architecture, focusing on graphics rendering, system architecture, and AI development. Our level design process involved utilizing JSON files generated by Tiled, enabling seamless iteration and dynamic placement of entities such as enemies, potions, and interactive elements. This underscored the effectiveness of a data-driven approach in collaborative development. In-game entities ranged from health fountains to speed potions, alongside adversaries like slimes and mages.
Roles and Task
- Graphics Rendering
- As the only RTIS in the group, the responsibility for graphics would land on me. Though Alpha Engine wraps OpenGL nicely, i needed to understand the memory layout such as:
- Vertex Positions in NDC
- Color and the Linear Interpolation
- UV Coordinates and how it is used for displaying textures and spritesheet animations
- As the only RTIS in the group, the responsibility for graphics would land on me. Though Alpha Engine wraps OpenGL nicely, i needed to understand the memory layout such as:
- Entity AI
- I worked on Player Detection, Enemy Attack for Melee and Range
- Serialization
- Highscore and time taken. Data is written in JSON for simpler human access
- Deserialzation
- Using the software Tiled to design all our levels, the map data exported by Tiled will need to be interpreted and read by our game. We start with a CSV format for easier rendering but changed to a JSON format as our map data gets more complex with differnt collidable tiles and different entities
- User Controls
- Player Movement and Skill
Research Material
Summary
Given the freedom to design levels without constraints, we implemented a sophisticated pathfinding algorithm for enemies, ultimately opting for A* Pathfinding after experimentation with various methods. While challenging, this endeavor proved successful, enhancing the game’s strategic depth and immersion.