During this task we periodically gathered feedback on our sprites and the animations included in each sprite, this feedback allowed us to improve four sprites from each of the different vehicle type to further meet the players needs and improve my pixel art design. This session really helped me to practice my pixel art again, as the last two projects have not required pixel art, and helped me to improve my art design by requiring me to practice different animations in preparation for the Micro Machines recreation. In addition to this, I felt that this session was helpful in embedding pixel art into my brain as the repetition of the designs prepared me nicely for the racing game I need to develop. Moving forward, I need to ensure that my shading and light points are consistent throughout each design to ensure that my designs stand out and feel connected with the world / environment of the track.
In the power-ups and hazards session, I programmed a sprite so it would function as a car and would be playable with the arrow keys on the keyboard, I used the truck animation for the sprite that I made in the pixel art session above. I made a quick outline of a track and ensured that the scaling was correct for the car size. In this session, we were tasked with including an array of power-ups and hazards that can either have a negative or positive affect on the player. I decided to include two hazards that decrease the speed of the players vehicle, these are the ketchup spill and pile of gum. The gum slows the player down more than the ketchup and this is visually shown by red trails for ketchup and white trails for the gum, as we were also tasked with including a visual effect as well as a physical effect. The next hazard I included in the test game was a bomb, this bomb will explode on impact, disabling the players movement for three seconds. This is paired with a screen shake and also a flashing effect on the players vehicle. The next hazard was a monocle, this monocle flashes red on the track and when hit by a player it makes their cars opacity drop to 30%, reducing the ability to see the players vehicle. I also included a few power-ups that have positive affects on the players vehicle, these include a shrink ray that reduces the playable vehicles size so it is easier for the player to navigate corners and sharp bends. The next power-up was a speed boost, this speed boost increases the players speed so they travel faster over a period of time. The last boost consisted of four randomly generated power-ups that are based on randomly chosen variables, this boost is is represented by the flashing yellow question mark. The four boosts on the question mark consist of two hazards and two positive power-ups, this randomly generated boost adds variety to the game and I intend to include a similar randomly generated power-up in my final game. Overall, this task was very helpful in allowing me to build on my knowledge and experiment with new forms of boosts and hazards while also allowing me to get prepared for the final game by ensuring I understand how to program a playable car.
This AI and player selection screen session involved me building off of the power-up test game and implementing several new mechanics and elements. We started by adding four new car sprites and programming a pathfinding behaviour to each of the five sprites, I then added multiple blank sprites that would act as posts or checkpoints that made up the track/path that the cars must follow. This was no easy task as it involved a large amount of lines of code and the cars behaviours seemed to go wherever they wanted or sometimes even stopped. this issue was later resolved as I found that the gaps between each post can only be a certain distance otherwise the cars act in a strange manner. After resolving this issue and improving the track layout so no tight bends or large gaps were present I started to implement a selection screen, this selection screen relied heavily on Booleans and global variables that needed to be triggered at the appropriate time. After understanding the basic knowledge behind when and when not to trigger a global variable I formed the selection screen with a few basic sprites and tested whether the car I chose was the one I was playing as. This turned out to be a disaster as all of the cars moved when I pressed the arrow keys and then the game eventually crashed, so I reviewed the code and saw that I forgot to disable the car behaviour on the non-selected cars and enable pathfinding on these cars. I fixed these lines of code and the game functioned as intended. Overall, I was really happy with the progress I made in the session and I am very pleased that I can now understand and implement AI into a Construct game, I look forward to using this knowledge in my recreation next week. One problem I noticed that I intend to fix for the recreation is that the playable car is too fast and can easily beat the AI opponents so I need to reduce the maximum speed and maybe introduce a variable speed, just like the AI opponents, that changes from checkpoint to checkpoint, to ensure a challenge.
This video showcases the coding element of implementing a selection screen and shows how it works. This video also highlights the errors that I made and how I resolved the issues. This video was taken at an early stage of the car selection implementation so some power-ups are shown not having any affect on most of the vehicles, but this will be resolved when I move onto creating the final game as this was just experimentation on how I would go about adding a car selection screen. If the embedded video does not work use this link: https://www.youtube.com/watch?v=mmAAUK3hWwY
In the first session of the Space Invaders project, I learnt how to program the basic core mechanics of Space Invaders and I used an array of existing knowledge to create this test version of Space Invaders. I found this session to be extremely helpful and useful because I learnt all of the code and programming knowledge that would be required for my final re-themed version of Space Invaders. I experimented with variable speeds, moving enemies, family groups, shields, health system, score system and bullet and tiled- movement behaviours. Overall, the session was essentially re-using my previously learned knowledge and applying it to a different game mechanic, but a walk through by Martyn helped to give me a refresher on some of the code elements. A version of the test game can be found below. https://spaceinvaderstestversion.netlify.app/
16 x 16 Pause Button Frame 1
16 x 16 Pause Button Frame 2
Pause Button GIF
16 x 16 Home Button Frame 1
16 x 16 Home Button Frame 2
Home Button GIF
32 x 32 Play Button Frame 1
32 x 32 Play Button Frame 2
Play Button GIF
32 x 32 Arrow Button Frame 1
32 x 32 Arrow Button Frame 2
Arrow Button GIF
8 x 8 Carrot
16 x 16 Carrot
32 x 32 Carrot
During this pixel art experimentation task I worked with designing four animated UI buttons, these buttons were different to design than most of my other pixel art than I have used before because they followed a symmetrical design. This allowed for smooth curves and helped me to work on my UI design. I really liked designing these buttons as I am now able to create buttons that align correctly so it looks as if the light has moved on the sprite simulating that the button has been pressed. If I was to do this again I would work on my colour choice and shadow points because some of the buttons look as if the back has moved up instead of the middle button moving down. Also in the task I worked on scaling methods, this allowed me to upscale a carrot from 8x8 size to 32 x 32 size, this helped me to understand that most sprites are needed in different sizes for different elements of the game such as HUD icon or pick-up item. Overall, I chose to work on the 8 x 8 design first and then progress up to the 32 x 32 design, this is said to be harder to achieve because it is easier to remove pixels than it is to add them, but I found that working small first helped me to design the outline and define the shape of object that I wanted to upscale. This was a helpful task and will definitely help me when I design art for my later projects.
32 x 32 Isometric Character
16 x 16 Isometric Character
8 x 8 Isometric Character
8 x 8 Isometric Character
Button Icon
After I completed the Scaling and Button tasks I moved onto creating three designs for an Isometric character, each of these designs would be used in different elements of the game. For example the 8 x 8 design would be used for a HUD system or Button and the 32 x 32 design would be used as the playable character, whilst the 16 x 16 design would be used for an in-game customisation menu. This task has shown me the importance of designing a sprite in three different isometric perspectives and has shown me the use for each type of design. I was also able to work on different perspectives, lighting and shading techniques which will help me when it comes to designing characters and their UI icons for games and other projects. If I was to complete this again I would take a different approach and create sprites that are at different perspectives to the camera e.g. side on, this would be helpful when creating a 3D character because side textures would be needed. In addition to this, I would use a top down light source because this type of light source is generally used for isometric viewpoints. Overall, these skills will help me to scale my characters and icons for my Space Invaders game, because the character selection icons need to be smaller than the playable characters and enemies.