Conclusion:

Through the course of the project and blog my development skills have improved tenfold I have transgressed from near enough a novice at JavaScript and game development to being completely comfortable with the syntax and have also learnt four separate libraries and their functions.

As my project progressed through my spiral development cycle my project as a whole also developed, as it became clear what was possible with my libraries some of my game objects evolved alongside them. Taking my time constraints into account I realised that some of my aim were unachievable, such as black holes to avoid. However overall I am very happy with my progress throughout this project as well as the end product that I have managed to produce. I have impressed myself with the amount of dedication and time I managed to commit to this project. Toward the end of my project the speed at which I have been able to solve problems increased dramatically and the frequency at which they arose also dropped considerably for my knowledge of the syntax had also become much more adept.

Taking a step away from the project its self I am also extremely happy with the leap my developing skills have managed to take I now feel confident in my own ability as a coder and feel with the right motivation I will be able to progress my knowledge even further into any aspects of coding. After university when looking for a job I feel that I will be able to walk in to a job interview with confidence in myself and my ability to be flexible enough to fit into any kind of working environment.

Advertisements

User testing:

Throughout my project I conducted various user testing, I had my peers use my project and view my textures and game elements. A couple of the most important changes I made from these tests were:

firstly my avatar shader, once I had all of my planet and comet textures in my scene, these tests made it apparent that the avatar graphic no longer fitted within my scene. So I created a new shader for my avatar that fit the scene a whole lot more:

Image

Another aspect that was improved by my user testing was the starting movement speed the value started at 0.01 but with an increase to 0.015 it was much easier for new users to start off enjoying my game straight away. The comments said that even though it still wasn’t so easy to get used to the controls it was more fun because it wasn’t for lack of movement that it was hard, it was the more the users skill that held them back.

Loading Screen check if loaded:

This code works as expected the loaded variable increases as the files finish loading.

The next step is to check when the loading is done and then append a button for the user to press to start the scene and call the init function.

To check if the loading is done you simply need to check that the loaded var is greater than or equal to the totalNeededToLoad var.

The only thing left to do is create a visual for the loading bar. This can be done through css, making a bar with its width equal to 100% divided by totalNeededToLoad and then as each file loads increment the width by this found fraction.

Loading screen creation:

Whilst examining other online games I have picked up some knowledge of how to create my own loading screen and loading functions.

The way I’m going to attempt this is by setting up variables such as totalNeededToLoad and Loaded, then I will increment Loaded variable each time a file has finished loading. For the sound files this code will go inside my buffer function and inside the textureLoader.load(‘fileName’, function(){ loaded++ } for my image files.

Sound fix and review two:

In order to fix the latency problem, I created a buffer function which downloads all of the files into the users cache then I can call the sounds as many times as needed without having to downloading them any duplicate times thus stopping the latency issue I was previously experiencing.

If I have time later I plan to pass the mass of the collision object as a parameter of the play sound function. With this parameter I could then control to pitch value of the sound through another node, which will give the user indication of the size of the object they have collided with through sound.

Over all I am happy with how my sounds are working. I am not so happy with the setTime function I’ve used to call my ambient track a couple of seconds after initialisation. If the user has a slow internet connection then the sound may still not have loaded by the time the timeout function is called so the track may not play.

I am going to look into creating a loading screen, which will load my sound and image files before the user can initiate my project.

Sound overview:

I was happy with the way my sounds worked, for on collision the correct sound played. However I started to experience some latency on collision. I could only think that it was caused by the sounds for that’s all that I had changed since it ran at a constant 60fps.

I conducted some more research and found that I was not caching my sounds so they were being re-downloaded on every collision so I set out to fix this problem.

Volume toggle review:

The creation of the toggle button didn’t work quite as well as I had presumed. On init I called the ambient loop to play however I didn’t do this through the toggle function. I  called the original sound to play on init so when the toggle button is pressed to stop the track, it starts another version of the ambient track to play simultaneously instead. This was a simple fix in the end even though it took me a while to figure it out. Instead of calling the play sound function I simply called the toggle function on init as an alternative.