WeThinkCode_ Project Report
Brownfields development
By Raimi Dikamona Lassissi
Table of Contents
- Introduction ……………………………………………………………… 02
- Requirements ……………………………………………………………. 04
- Approch …………………………………………………………………… 06
- Conclusion ……………………………………………………………….. 07
Project Overview and Execution
Introduction This document explains the Brownfields Project, including what we needed to do, how we approached it, and how we presented our final work.
What is the Brownfields Project? Brownfield projects involve improving existing code rather than starting from scratch. In this project, each team received a model of the previously developed “Robot Worlds” game from another group. Depending on how the code was performing — whether it was working well or needed fixes — the teams had to make necessary fixings and improvements as per requirements.
Project Goals: The goal of this project was to create a game where multiple robots navigate a virtual world. Each robot’s task is to eliminate the others until only one is left standing “The ultimate killer”. There’s no time limit for the game, but robots can be taken out if they are defeated or fall into one of the traps the world contains (Yes, there are traps). The robot world has obstacles and mines that add challenge and the need for strategy.
Get Raimi Dikamona Lassissi’s stories in your inbox
Join Medium for free to get updates from this writer.
Technical Requirements: Through this project, we have had the chance to utilize a variety of interesting concepts.
- Sockets and web API: These represent the two main types of communication within the project.
- Separation of Concerns: Ensuring that issues in one part of the code don’t affect other parts.
- Code Documentation: Using clear names and comments to make the code easier to understand.
- CI/CD pipeline: Defines a range of steps we followed to deliver new versions of the game.
- Docker: remember the expression “It runs on my machine”? with docker, we had a way to containerize the game and use it without any concern for dependencies.
Server Requirements The server had several key needs:
- Unique Robot Names: Each robot (thread) must have a different name.
- Configurable World: Ability to change the size and features of the game world.
- World Boundaries: Prevent robots from moving out of the world’s edges.
- Server Commands: Provide commands to check settings and manage the game.
- Database Integration: used to save world settings for later use. I mean, why lose a great setup?
- Game Management: End the game and list active robots.
Client Requirements The client-side needed:
- Network Connection: Connect to the server using threads and sockets or through HTTP requests.
- Robot Selection: Allow players to choose different robot types.
- Visibility: Show a certain distance ahead to see other robots and obstacles.
- Combat and Defense: Include commands for attacking, reloading, and repairing.
- Movement: Move robots in the game world along the x and y axes.
Development and Presentation Approach
Here’s how we approached the project:
- Project Organization: We used GitLab to plan and manage our work, using stories for a clear understanding of requirements and individual tasks.
- Object-Oriented Programming (OOP): We used OOP to organize our code. For any problems, we referred to forums and resources.
- Serialization Techniques: We focused on mastering data transfer methods to ensure smooth communication.
- Testing: we made sure that all the requirements were covered through the use of unit tests and acceptance tests.
- Architectural Choices: We chose a layered approach to keep our code organized.
Project Presentation In our presentation, we showed how we organized our work and demonstrated our team’s efforts. Each member explained their part of the project, and we worked together to present a clear and unified overview. Our video included a detailed look at our code and how the project functions, with each team member covering their specific contributions.
Conclusion
The Brownfields Project successfully demonstrated our ability to enhance and optimize existing code. By improving the “Robot Worlds” game, we have learned so many great concepts, and through the interaction with my teammates, I gave meaning to what a joyful environment is.







