1. Choice of project and language
The project needs to be an independent piece of work for each candidate. The very best students may already bring a knowledge of programming in other languages that you have not taught. If these students are capable of working entirely independently without any guidance from you, and can illustrate this with examples of programs they have written using a graphical interface, then it would be wise to allow them to use the language of their choice. You will want to check:
- Can they continue working on the program in school? You must see their iterative development process.
- Do you have the necessary hardware and software to run the IDE for the language they want to use?
Craig and Dave give students a free choice about what type of problem they want to solve. Many of our students choose to create a computer game for their programming project.
2. Are games suitable projects?
Not only are computer games in the list of acceptable project ideas, but they make ideal A level projects because they are:
- fun (learning should be fun, right?!)
- an excellent way to demonstrate knowledge of algorithms;
- ideal for an iterative development methodology: tweaking game balancing etc;
- full of computational thinking;
- able to bring to life some of the complex theory.
With the choice of language, you need:
- a balance between what is required in typical games and capability of the language;
- a natural progression from previous learning experiences;
- scope for more complex algorithms and techniques;
- to avoid the difficulty of handling graphics cards, frames per second, double buffering etc;
- a language that doesn’t do too much for the student so the project becomes trivial;
- ideally, anything that also facilitates industry methods, such as porting code from a PC to other devices would be perfect.
That is why Craig and Dave recommend Defold with Lua.
Defold ticks all the boxes. It is completely free, and doesn’t have ads or nasty installation requirements. Lua is suitably lightweight and similar to Python and Visual Basic without the complexity of C#, or the overheads of Unity. The hardware requirements are very modest.
3. Preparing students to write a program with Defold in Lua
Most of the students we teach have already studied GCSE Computer Science, although some have not. Therefore, we do an accelerated, independent course in Console Basic or C# programming between September and Christmas of year 12 and in the new year introduce students to Defold. By Easter they are making their own small games, and this gives them plenty of ideas for starting their own project in the summer term of year 12.
We take the approach of walking a student through a typical development process for a simple 2D retro game. For example, getting a player spaceship on-screen, moving the ship left and right, preventing it going off-screen, having an alien to fire at, and recognising the collision between the missile and the alien. We call this a “bare-bones” development. It is enough to get the student started. The weaker students can then take this bare-bones project and elaborate it into something more complete, having had the necessary scaffolding and examples of how to approach the common problems in all games. The stronger students then learn the syntax, and mechanics of the language, plus approaches to algorithms in order to develop a completely different, but similar game from scratch.
Our bare-bones projects are presented as a mini-website that you can copy to your school network. The website contains a series of easy-to-follow tutorials with additional challenges, help sheets and assets to download.
4. Why we love Defold
The Defold IDE gives you a solid framework for games development but leaves you plenty of room to create your own algorithms too. With Defold you are able to create a highly polished game using industry standard techniques. It’s real coding, not drag and drop or menu-driven programming, but many of the more complex aspects of games development such as collision detection, physics, cameras and particle effects are made easy. Lua is not truly object-oriented, but it has so many properties of OOP it practically is:
- Game objects are classes. You use a “factory” to create instances (objects) of a class.
- The .self associative array structure provides for encapsulated class arributes.
- Every game object has methods for init (construction), update, final etc.
- It uses message passing which is a very strong feature of OOP. You have to use this because all objects are encapsulated.
There is a misconception that projects must be object-oriented to attract high marks. That’s not true. OOP opens the door to more complex code for which the student gains more credit, but the complexity comes in the algorithms, not the paradigm!
5. Where can I get Defold for free?
You can download Defold here: https://defold.com/download/
6. Our tutorials
Our tutorials are included in your subscription and can be downloaded from the premium resources section of our website.
No knowledge of Defold or Lua is required by the teacher. Simply give the tutorials to the students and watch them fly! If their programs don’t work, encourage them to go back through the tutorial methodically. They do work!
You will be amazed at how much they enjoy these activities and what they can produce with a bit of enthusiasm and determination.