6 – Improvements, Round 1


🎯 Learning Objectives

After this lesson you should be able to:

  • Recap and apply your knowledge of Agile Development
  • Develop your programming and games development skills further
  • Iterate the development of your chess game
💬 Key Vocabulary

  • Chess
  • Agile
  • Sprint
  • Iteration
  • Debug
  • Goal
  • Checkmate
  • Version Control
  • Iterative development
  • Testing
Last lesson, you…

  • Learned the basics of chess
  • Built the first stages of a chess game
  • Considered the first steps of iterative development
Today, you will…

  • Improve your game
  • Recap Agile and start to apply it

📝 Starter Activity

  • Let’s see what you remember about Agile.
  • Here are the case studies from lesson 1 to remind you.
  • Read through them if you need to, then answer the questions.

Building a game that’s popular is hard work these days, you can’t just release a finished game and never look at it again. Players expect updates and new content all the time, so we have to provide a constant stream of new features to keep them interested in playing. There’s an art to getting these right, you know. Too much change and players find it alienating, it’s not the game they know and they have too many new things to learn at once, it makes them stop playing. But the same is true if there’s not enough change, players complain that the game is boring or tired, or that the new content just recycles old ideas.

The challenge for us is not only being able to constantly build in new content that keeps the game feeling exciting and fresh, so players come back for more, but also to do this on schedule. We aim to release new content every few weeks, any longer and players get impatient and start looking at other similar games to get that “new stuff” feeling instead.

We pride ourselves on making a great game, and being able to quickly respond to what players want has been really important in achieving the success we have had. For a game to be as popular as ours is, for as long as ours has been, means we can’t afford to stand still. When Battle Royale became the must-have feature a few years ago, we worked out how to fit it into our game and now it’s a main mode of play.

We have to be able to cope with fast changes and growth to our playerbase. This happens in terms of raw numbers, but also in terms of regional popularity, as well as a change in how people interact with our game. Last year, we had a popular streamer in a different country showcase our game to their fans. We’d not really had players there before but overnight we gained tens of thousands, all hoping for our game to be available in their language rather than relying on their ability in translating English – we got a localised version out in 48 hours, giving us extra coverage in local news and even more players. It was the best thing we could have ever asked for, an explosion in popularity and not a single penny paid in advertising! 

Speaking of streamers – streaming and eSports have really changed how people play our game, and we’ve had to work on making our game better optimised for being viewed not just by the person playing, but by people watching them play. That’s needed a lot of rethinks, from ensuring that the streamer’s camera doesn’t block vital player stats (such as health or ammo), through to making sure that the whole screen is visually interesting as a huge audience means there’s people watching every part of the same picture, not just the main focus. 

Likewise, we’ve had to make sure that when we release new updates, they don’t change the core balance of the game – if a new item is too powerful, too rare, or otherwise makes a big change to how the game is played, it can really upset the professionals. We’ve invested a lot of money into play testers who try and spot these unplanned opportunities before we release to players. Last month, they showed us how a new weapon we’d planned could be used to increase player jump height, which would have given players access to a high up area where they couldn’t be reached by players without that weapon. That could have been a disaster for us if it had been released.

Computers are more important to this business than ever, and one computer can now trade as efficiently as a whole room of human traders did a few years ago.

If you’ve never experienced the world of stock trading, let me explain. It’s like buying and selling in any other online way, such as eBay, Depop, or Etsy, but the speed is higher, the prices much bigger, and the portion of profit much smaller. Maybe you made five dollars by buying a vintage t-shirt from a local charity shop and selling it online two weeks later for slightly more, say buying at $10 and selling at $15. Trading is much the same, but instead of two weeks, it’s under two seconds, and you made that five dollars from buying a million dollars worth of shares in a company and selling them on for a million and five when the price of a single share rises even a tiny amount. 

Prices change constantly, sometimes up, sometimes down, and the changes can be small or very large. It’s impossible to predict, the aim is to guess correctly and when you do this often, you make a lot of money. This means the pressure is very high, and it’s also important that your trading software is reliable, if it breaks, instead of selling for a small profit you could be making a huge loss.

I don’t trade myself now, I write a program that helps other people trade instead. This program analyses prices of hundreds of companies on stock markets around the world and makes suggestions about what to buy and sell. In fact, it works so fast that most of the time, it just trades by itself and the trader just has to watch and make sure it’s doing the right thing.

To make our software work, we build an algorithm that is able to make all these guesses super fast. This algorithm is constantly changing and so we need to update the software several times a day. When we do, it has to be as bug free as possible, and if there are bugs, we need to fix or undo the update in as little time as possible. Just a few seconds of the system being offline can cost our clients tens of millions of dollars, and even if it doesn’t, it might lose us their trust, and they take their business elsewhere.

We sell this software to companies all over the world, and we make our money from a small share of the prices they sell at – if they sell for a thousand dollars, we get a dollar from that sale. Collectively, our clients put hundreds of billions of dollars through our system every day, and keeping them happy is very important. When a new client joins, they often want our software to be customised to their company, including special features, extra options, or connectivity with other systems. In most products, this would be a deluxe feature that cost a lot extra, but in our industry, where there are billions of dollars on the line, it’s a given for every customer.

As a company, people ask how we make money when we don’t actually seem to sell anything. Well, the answer is that we do sell something, it just doesn’t look like a product. We make software-as-a-service, meaning that other companies use our software to build a web platform for themselves.

Our software allows restaurants and takeaways to add online sales to their websites, and also gives them the ability to get customers through our centralised app. You can download our app on your phone and then order through any outlet that has subscribed to our service. We don’t really do anything more complicated than taking orders on the web and sending them to the restaurant, but it makes it a lot easier for small businesses to compete with the larger chains. There are no extra charges or steps for the customers, the restaurant simply pays a fee to join our platform, plus a small percentage of any sales they make through us. They can also pay a little extra to use our delivery drivers instead of having to hire their own, if they’re in an area where we offer that option. 

This is something our competitors started doing, and we were able to modify our system within a week or so to allow us to offer the same service. We don’t employ the drivers/riders directly, they have a second version of our app and work like freelancers – when they’re looking for jobs, they simply turn on the app, then it tracks where they are. When delivery requests come in, we match these with the nearest few available drivers and offer them the job, they see where it’s going to, where it’s picked up from, how much they will be paid, and decide themselves if they want it.

My role as Project Manager is to keep a team of developers on track. We have a long-term plan of where our platform should go, and in the short-term we add in new features that give us more options, more functions our customers ask for, and that help us stay ahead of our competitors.

There’s lots of things we have to anticipate in terms of how business changes. Over the last year, as people work more and more from home, we’ve seen a rising demand in some parts of our app, particularly in areas outside of city centres. From a practical point of view, this has meant we have had to redesign some of our delivery job offering systems and the algorithms we use to select drivers, because one thing we have learned is that unlike in a city, nearest does not always mean fastest in suburban and rural areas!

We’ve also built in new features that allow restaurants to have finer control over their day-to-day opening hours and availability, as well as tackling problems related to delivery rider demand – a lot of city riders in the past have been students on bikes, which has been great for us because there’s been a surplus of riders to jobs, and their availability in the evening has lined up with the largest demand – late dinners. However, working patterns have changed and we’re now seeing a greater demand at earlier times of day, like lunch, and we don’t have the same number of delivery slots available, not least because the students are not coming to the cities. One of my tasks this year was working out how we could build a more efficient system for stacking delivery jobs together, to get the same number of deliveries from a smaller number of people.

Questions

  1. What was Agile?
  2. What are the benefits of the Agile style?
  3. How might we use it today with our chess game?
  4. What issues do you expect to encounter?
  1. Agile is a style of software development that involves making changes in small steps, with each step producing something, but not necessarily the final project.
  2. The benefits include:
    • flexibility and the option to change and react to new demands – nothing is final
    • more control over fine details – with work broken down into parts there is more understanding of each stage
    • faster and more productive – you can release a working program before it’s finished and add improvements over time
    • better quality – each stage or sprint ends with something that works and is bug free even if it is not the final goal, there’s no last minute panic to test and check everything just before launch
    • better teamwork – different people can work on different tasks because each is independent, rather than fighting over changes to the same part of the final program
    • experimentation – you can make a change or add a feature, and if it doesn’t work as planned, simply remove it and try again
  3. We’re going to use it to repeatedly make small improvements to our chess game. Rather than trying to make the whole game at once and then spend ages fixing and testing, we’re going to make each part one by one, testing and fixing as we go. Not only will this help us understand each part of the game, and gradually build it up, it means when we have an error, we know exactly where it is coming from!
  4. One of the big issues you might encounter is needing to reverse changes that don’t work. You probably haven’t worried much about this before, but when every change you make is experimental, it’s really important to be able to undo everything and revert to older versions of your code. To fix this, professional developers use tools called version control.

📖 Learn It – Version Control

  • Version control is a really important part of the Agile process.
  • Being able to go back on changes, or even have multiple possible changes being tried at the same time, is one of the things Agile requires.
  • Software developers working in teams are constantly writing and changing code. One developer on the team may be working on a new feature while another developer fixes an unrelated bug, so each developer needs their own copy of the files, but with their changes added to the finished version without causing conflicts.
  • Version control tools make this possible. They’re actually quite simple in how they work. Rather than overwriting the original files, version control saves special files which record only the changes to the original file, whether it’s something added or removed – opening the new version simply applies the changes to the file as it opens, without affecting the original.
  • All of this is good news. It means that even if what you have done ? breaks everything ?, there’s always a backup of the original files.
  • Lots of different version control tools exist, but the most famous one is called git.

Have a watch of this video to find out more:

📝 Activity 1 – Iteration time!

Last time you took some unfinished code and added a new feature to it, getting the pawns moving. It wasn’t explicitly mentioned, but what you did was your first sprint. You took the program from one working state (drawing the board and not much else) to another working state, where you had a single piece moving as designed.
Now it’s time to iterate, and start your second sprint. Code of the right stage is visible below. Your job will be to add more features today, which you might want to do in lots of short steps rather than doing it all at once.

You need to complete the following tasks today:

  • Work out which piece you want to get working next, and do a short sprint to add it to the game.
  • After this, test to make sure everything still works.
  • Get the rest of the pieces working using more sprints – remember, each stage should reach a point where nothing is broken.
  • Have a look at the special moves in chess: promotion, castling and en passant. Thankfully, these have already been done for you, as they’re a bit of a headache, but you should write a short response explaining how using sprints would have helped to get these working.

💬 Summary

In this lesson, you…

  • Produced iterations of your game which added more features and improvements.

In the next lesson, you will…

  • Join up with other students into a group
  • Assign yourself roles within the group
  • Start to make independent progress on your games project

🏅 Badge it

🥈 Silver Badge

  • Upload code with another piece working as intended.
🥇 Gold Badge

  • Upload code with all pieces working as intended.
🥉 Platinum Badge

  • Upload your written response about the special moves and sprints.