Focus on physics and collision detection.
Developing interactive and engaging games presents a rich and multifaceted challenge in computer science, encompassing artificial intelligence, networking, game environment creation and representation, graphics/rendering, and physics simulation. This project offers a flexible framework for exploring these diverse aspects. Students should choose to focus on specific combinations of these elements to address a technically challenging game development topic, depending on their interests and desired level of challenge.
This project may involve the design and implementation of a game engine with a range of capabilties such as supporting multi-player games with integrated AI agents, graphics, physics and networking functionalities. The core problem is to build a flexible and extensible game engine that allows for the creation of interactive games, whether focused on turn-based strategy, real-time action in 2D or 3D environments, a combination thereof, or something entirely different. Students can select a specific game as a target implementation, or aim for a more general engine capable of supporting multiple game types through user-defined rules or configurations. The project allows for a range of focuses, from developing sophisticated AI game-playing agents, implementing robust networking for multi-player interactions, creating visually rich 2D or 3D graphics environments, or simulating realistic or stylized game physics. The goal is to provide a platform for exploring advanced computer science concepts within a practical and engaging game development context.
The project offers several potential avenues for exploration and specialization. For AI, students can investigate and implement advanced game AI techniques beyond basic minimax, such as Monte Carlo Tree Search or deep learning approaches, potentially enabling remote (collaborative or adversarial) AI agents to leverage separate computing resources. For graphics, the focus could be on real-time rendering techniques, non-photorealistic rendering styles, or efficient management and rendering of 2D or 3D game environments. For physics, projects could explore Newtonian physics simulations, collision detection algorithms, or even more experimental physics models tailored for specific game mechanics. Networking aspects could focus on low-latency communication, robust multi-player synchronization, or client-server or decentralised architectures for game hosting. Expected outcomes include a functional game engine with chosen functionalities (AI, networking, graphics, physics), a playable game prototype demonstrating these features and a clear articulation of the computer science challenges addressed and solutions implemented (this is not a game design exercise).
Students undertaking this project should possess strong programming skills in a language suitable for game development (e.g., C, C++, Java, Python, C#). Depending on the chosen focus, expertise or a willingness to learn in areas such as artificial intelligence, networking protocols, computer graphics, and physics-based simulation will be essential. Utilizing existing game engines (like Unreal Engine, Unity, or Godot) is permitted, but the project must clearly demonstrate significant original coding and computer science contributions beyond simply using pre-built engine features. Access to suitable computing resources, including GPUs if advanced graphics are pursued, will be necessary and university resources can be utilized. The project's code is expected to be released as open-source under the AGPL v3 or a compatible license.