Academic Projects · B-Tech Year 3

SAE 5.02 — Managing a Software Project (Krojanty)

Strategy game in C with AI, graphical interface and network multiplayer

  • C
  • GTK4
  • TCP/IP
  • Minimax Algorithm
  • Alpha-Beta Pruning
  • Make
  • Doxygen

Context

Development project for a turn-based strategy game in C language. The game rules were invented by the professor during the summer. The game had to have a graphical interface (GTK4), be playable over the network with other groups' games (groups of about 6), and have an AI capable of playing automatically over the network or locally against humans.

Description

My role in that project was to code the artificial intelligence of the game, which is based on the Minimax algorithm with alpha-beta pruning. I also integrated the code of each team member into a cohesive project and coordinated the technical aspects of the development process.

In detail

Technologies

  • C
  • GTK4
  • TCP/IP
  • Minimax Algorithm
  • Alpha-Beta Pruning
  • Make
  • Doxygen

My role

  • Development of the artificial intelligence (Minimax with alpha-beta pruning)
  • Integration of each team member's code
  • Technical project coordination

Project architecture

Game engine (gamelogic.c)
Board management, move validation, game rules
Artificial Intelligence (ai.c)
Minimax algorithm with alpha-beta pruning, transposition table, 3 difficulty levels (easy: depth 3, medium: depth 4, hard: depth 8)
Graphical interface (gui.c)
GTK4 interface with interactive 9x9 grid, side panel, game logs
Network (net.c)
TCP/IP communication, inter-player communication protocol, server/client mode

Game rules

  • Pieces: King, Soldiers, Forts
  • Objectives: Capture opponent's king, occupy opponent's fort with your king, or eliminate all opponent's soldiers except one
  • Straight-line movements with territory trails
  • Captures by moving onto occupied square

Game modes

  • Local 2 players
  • Local vs AI (3 difficulty levels)
  • Server mode (hosting)
  • Client mode (network connection)

Project management

  • Using GitLab for collaboration
  • Task distribution in team of 6
  • Technical documentation with Doxygen
  • Unit testing and validation
  • Compilation with Makefile

Skills developed

  • Advanced C programming
  • AI algorithms (Minimax, alpha-beta pruning)
  • TCP/IP network programming
  • GTK graphical interface development
  • Multi-developer code integration
  • IT project management
  • Testing and validation

Resources

Source code available in krojanty/imm2526-gr3 folder

National curriculum
Critical learning outcomes
  • AC31.02 | Produce technical documentation for this project
  • AC31.03 | Create a demonstration prototype of the project
  • AC31.04 | Defend/argue a project
  • AC31.05 | Communicate with project stakeholders
  • AC31.06 | Manage the project and its various implementation stages while respecting deadlines
  • AC32.05 | Collaborate in project mode in French and English
  • AC33.01 | Develop technical specifications and requirements for a software application
  • AC33.02 | Set up a collaborative work environment
  • AC33.03 | Participate in user training
  • AC33.04 | Deploy and maintain an IT solution
  • AC33.05 | Keep informed about technological developments and innovations
  • AC33.06 | Secure the digital environment of an application
Essential components
  • CE1.01 | by choosing appropriate network solutions and technologies
  • CE1.02 | by respecting fundamental IT security principles
  • CE1.03 | by using a rigorous approach for resolving malfunctions
  • CE1.04 | by respecting professional rules
  • CE1.05 | by ensuring technological watch
  • CE2.01 | by communicating with the client and the various stakeholders involved, sometimes in English
  • CE2.02 | by demonstrating a scientific approach
  • CE3.01 | by listening to client needs
  • CE3.02 | by documenting the work done
  • CE3.03 | by using digital tools wisely
  • CE3.04 | by choosing appropriate development tools
  • CE3.05 | by integrating security issues
Mobilized and combined resources
  • R5.04 | Software project lifecycle
  • R5.05 | English: Professional integration 1
  • R5.06 | Professional Expression-Culture-Communication: Integrating into an organization
  • R5.07 | Personal and Professional Project
  • R5.08 | Project management 3: Leading a professional project
Targeted competencies
  • Administer networks and the Internet
  • Connect companies and users
  • Create IT tools and applications for R&T