Hello, my name is Ethan Wright, I’m a student from St. Piran’s school, currently studying in year 11, my last year of school. I decided to go to n-Coders for my work experience because throughout the year I had learned several pieces of programming languages such as C++, C#, Python and HTML/CSS. I never really learned or focused on one of them, because when my interests changed so did my programming language of choice.
My first day was the most daunting and stressful one of them all, mainly due to the fact that I was assigned to make platforming video game based off an Amstrad game called Roland in the Caves (video of game being played here https://www.youtube.com/watch?v=4NbQVPjGIrg), this was an issue because even though I’m a huge fan of video games (something that would help with the designing of the game) I had no idea how to actually program one. Before this project, I’d only created very simple sidescrollers and text based games. I started the day by trying to download and install the engine Cocos 2d-x.
This was something I found very complicated even when I had it installed, as well as Microsoft Visual Studio and the 50 (rough estimate) modules I had to install. I still had no idea how to use it, after this setback and the realisation that visual studio had crashed on me a grand total of 5 times, I decided it was time to move on. The next engine I tried was Unity.
I decided to use this engine because it was an environment I’ve used before to code the previously mentioned simple sidescrollers and text-based games. However once I tried to start making the game, after I’d downloaded a sidescroller asset pack, I realised I’d have no idea where to even start making a game like this. I felt like my keyboard had turned into spaghetti, visual studio crashed again, and I was getting more stressed by the minute. In my panic I remembered that I’d once heard about a game engine that could be used to create 2d games without any hard coding, “brilliant” I thought, “now if I could only remember what it’s called” 5 minutes of google searching later I found it ‘Construct 2’.
I was able to download and install it fairly easily. The rest of the day was spent setting up a basic test environment.
Day two was spent mostly getting accustomed to using Construct 2 and learning how it’s programming system works (Construct 2 works in a block based system instead of simply typing in code, this was good for me as I didn’t have to remember the code I needed to use and could simply search through their menus to try to find the right code. For example, this is how I did the jumping controls in the game:
That day I also set up some basic move and jump controls, as well as basic animation for the placeholder squares I had at that time. I also added a basic enemy represented by a red square that would move towards the player when it detected the player in its line of sight. When the player is no longer in the line of sight the enemy move back towards its egg, as well as being the egg of the enemy that could be taken by the player for points, once the player did this, however, the enemy would simply charge for the player – no longer needing a line of sight
On day three I spent most of my time getting the mouse drag movement working and refining the physics around it. First I had to figure out how to actually do it. Notes for it here:
I decided to use a system where the player would click (the click X/Y would then be stored by the game), then release the button (which X/Y would also be stored by the game), the distance between these two points would then be calculated and turned into the speed the player would go at. To calculate the angle, I would do the same process but simply calculate the angle instead, which would be used to calculate the angle the player would go at Code shown here:
I also set up the collision detection on a hand-drawn level made for the game (part of assets for the game that was given to me at the start of the project) by placing squares/rectangles onto the level then outlining them because the engine can recognise the squares as a solid object. Game was shown with the squares visible here:
On day four I spent most of my time refining and creating new screens for the game, like a “win” screen
a “Game Over” screen and an interactive menu:
As well as adding animations to the player and the enemy. I also made several small alterations to the games physics and enemy A.I. such as making it land on a platform I could predetermine rather than have it just land on the egg. However, tragedy struck just as I was about to back up the game, it crashed! Even though I thought it had been auto-saving, I lost over 5 hours of work. I’d spend the rest of the day trying to get back to where I was, however, I was only able to get a few elements back into working order. At the end of the day, I also forgot my jacket making the total number of times I’d done this to 3.
On day five I spent most of my time restoring my game to its former “glory”, something which I would eventually succeed in. During the day I also tried to add a male enemy that would keep hunting the player even after it had lost line of sight on the player, however within the time frame I was not able to bring this idea to fruition, as for some reason I could just not get him to work correctly
One thing I did add to the game, however, was 4 new levels of increasing difficulty, and a standard menu
Another thing I did was to come up with the name for the game: “Boland Inside the Cavern” – very original I know. For the rest of the day, I uploaded my game to the n-Coders server and started writing a blog post this very blog post in fact.
Even though I may not have implemented all the features in the game I wanted to, I still made a game that I’m proud of! In the process I’ve also learned a lot of skills when it comes to game development, which is what I’d like to do for a job when I finish University (hopefully!). I had a great time at n-Coders and I would love to return here at some point, maybe for some more work experience during college or maybe even as someone looking for a job, nevertheless thanks for having me.