NetWars

An Assembly Code Game

A Student Team Project in IT

Getting Started With Agile Development

When I was at Chemnitz University of Technology I participated in a practical course, which was meant to introduce students to the harsh realities of agile application development for a client (represented by the professorship). We were asked to find ourselfs group members and to get started with our virtual startup. Parts of our task were not only designing, implementing and documenting our solution; but also managing the legal paper work which would have been necessary for contracts between a buyer (of our software product) and our virtual startup in the real world. We created an architecture and defined interfaces, designed GUI-Mockups, had stakeholder consultations with the professorship (where they pretended to be a typical customer), and even created a simple network communication standard to insure programs designed by other student groups would be able to work with our implementation. With this project we got a chance to learn from our mistakes, to avoid them later in the real world. However, we also learned how much a well organized group can achieve in a very short period of time.

Why NetWars?

Our professor had to think of a new project every semester, so he came up the task of having us implement a game called "Core Wars". Since we created a network version of the game we decided to call our implementation "NetWars".

But what is "Core Wars" to begin with? It is a programming game, running several programs (called warriors) in a simulated computer, with the goal of terminating all other programs or surviving as long as possible. Warriors-programs are written in an assembly language called Redcode. Have a look at www.corewars.org to learn more about the game. The demo video of our implementation is provided below.

Coordinating a Student Develper Team

Once all students had found their groups we were given a very specific project and a number of "far away" deadlines. Then we were asked assign roles and responsibilities to everyone in the team. My group made me responsible for team management along with my programing tasks. Knowing about the typical tendency of students to delay tasks as long as possible, I made sure everyone knew what to do next within his specific domain and set up a schedule for our scrum meetings. At first everything went well, since all the basic interfaces were implemented on time and as discussed with in the team. However, later in the project the perfectionism of some of my group members slowed them down dramatically.

The delays had no impact on my programming work at the time, however, I felt it was best to intervene before we missed out on deadlines. Assigning the quickest group members to support the slower ones, got us up to speed again. I tried to help channel the emotional tensions between group members into productive meetings. As the going got tough, this gave strength to the group, though it was at times challenging. I can say, that I learned a lot during the project.

A Big Thanks to My Team: Christian Kinne, Philip Hannemann, Rico Wenzel, Stefan Schubert and Oleksii Vartanov; I had a wonderful time, working with you on this project.

NetWars and my Assembly Parser

Our implementation of Core Wars, "NetWars", featured three game modes and a RedCode-Assembly editor. The three modes are: Network-Gaming, Network-Game-Viewing and Offline-Gaming. We split NetWars into a CLI server program for hosting and computing network games, and a client program (with GUI) for everything else.I wrote the backend code for the RedCode-Assembly editor and parser, which was also used to load warrior-programs into the game when playing, both, online or offline.

Copyright © 2019 by Richard Siegel at siegel.work
Contact & Privacy Policy