Wednesday, 13 May 2015

Summing Up

Hello, readers, for what will likely be the final time.

Well, the dissertation is over; I set it up, carried it out, and now here we are, waiting for the grades to be distributed.

Not really sure what to say, now that I'm here. Thanks for the support? It's been fun, I guess?



Truth is, it's been a project. I set deadlines and worked on them, sometimes I hit them, sometimes I missed them entirely. I think I'm satisfied with the result of the dissertation, as I've learnt a thing or two over its course that I doubt I would have otherwise.

The goal was to get me learning C# to an applicable degree, and I think I've succeeded with that. Even if I can't quite nail every single line of code off by heart, or if I don't know every technique in the book, I know where to look to find them now, and I have a much larger backlog of my own code to look at for help.

And on top of that, I've learnt more about using Unity; working on six projects (five more than I would have originally this year) in the engine will do that, I suppose. So I've got that going for me, as well.

And finally (at least in this little list I'm doing), I've continued to learn more about myself and my ability to self-manage. Throughout the project, I failed to hold myself to deadlines when I became complacent and allowed the work to pile up until the last minute. Whether this is an issue with my time management or simply a lack of motivation to hit the deadline, I'm not sure. But those are areas that I can work to improve on.



So, then, for things learnt over the course of the dissertation, we've got:

  • improving my knowledge of C#.
  • improving my ability to use the Unity software.
  • improving my understanding of my own ability to self-manage.
I'd call those useful skills, with the career I have in mind. I probably could have made better use of this dissertation and my time this year in general to improve my coding skills, but then I could have done a great deal worse. I'd call this a fairly good result in that range of possibility.

Maybe about a 12 or 13 on a d20 roll.



So, then, where do we go from here?

This blog is pretty much done. I doubt I'll have any further use of it once I've received my grade. However, depending on how things turn out for me, I may begin another development blog using this same profile, so if you're desperately interested in reading more of my exploits in game development, then keep an eye on it.

As for me, hopefully my work this year will give me at least a passing grade, and I'll graduate from UCS this summer. Once I'm sure I've got the marks to leave with my degree, it'll be onto job hunting for me. With any luck, I'll be able to find a decent position suited for my abilities and preferences with game development, and start making games, as well as a modest living. With a little more luck, I'll be able to do it quickly once my grades are secure.

I'm apprehensive to push my luck with any speculation beyond that.



It's been an interesting year, full of learning and the like. Hopefully, I'll be alright going forward, with everything I've been taught. Only time will tell.

Have a very good day, and a wonderful year, readers. Wish me luck!

Friday, 8 May 2015

Second Semester Final Project COMPLETE

A fine day to you, readers.

Well, I certainly had some interesting coding problems in the final run-up to completion; I managed to completely lose track of the way the code worked for the sideways perspective of the game-view (necessary to ensure proper generation of the levels via the code), and ended up having to make a bunch of edits and compromises to the way it works on the fundamental generation code.

But, it's good that I encountered these problems when I did, rather than any later; the issues have been resolved, even if I'm not overly fond of the resolved result. It's really just niggling annoyances, things like having to switch the "width" and "height" variables around in some places, but not in others, makes the code less user-friendly and intuitive. But I made a number of comments explaining it where it's needed, and it's not a serious problem either way.

With those bugs out of the way, I am happier to say that, after the tutorial levels (the first four grids, which introduce the base mechanics of the game), there are two further levels. They're not as refined as a professional level should be, but they're enough to demand some thought from the player before making a move.



Personally, I'm happy for these two levels to roughly represent some later stages of gameplay, the first one showing perhaps an early to intermediate level, and the second a more advanced stage, either intermediate or late level, requiring more careful thought and possibly some experimentation by the player.

Along with the other levels, this should draw a rough picture of how the game will stand if development of levels were to continue without any additional mechanics or features. Of course, that isn't to say that more mechanics couldn't be introduced, and many puzzle games make great use of adding more elements to the gameplay, making the game more and more advanced as the player continues to play.

If I had to guess, the most likely route of new mechanics would take one of two forms: new Bubble types that interact with the rest of the grid in different ways (perhaps popping different patterns of surrounding Bubbles, or which only affect other Bubbles if popped directly). The other possibility would be some restricted player ability to add Bubbles to the board themselves, letting them bridge or fill in gaps on the board, which would function nicely with the "Line" Bubbles, which require that constant bridge to continue going.

Overall, I'm satisfied with this game where it stands. I've learnt a bit about managing grids in code (such as via Multidimensional Arrays), and maintaining absolute understanding of the way the code may compensate for in-scene variances, especially with variances of perspective.

And that's that. The end of my dissertation. I've handed in all of the Conversion Phase and Final Project files, and all that's left to do is to wrap up this blog and call it a year. I'll post another update tomorrow with my full thoughts on the dissertation, including how it went, what I learnt, how much I'm going to miss all of this, the usual stuff.

But, until then, I'll just say thank you, readers, and have a wonderful day.

Wednesday, 6 May 2015

Second Semester Final Project Update 4

Hello once again, readers!

Well, this is the final update for the Final Project, both of this semester, and of the dissertation!

Progress has been somewhat slow over the past few days, with me taking a more relaxed workload in face of the end of the year, but progress has still been made in many areas of the game.

First, there's a bunch of new things to improve my game:

A restart button, allowing the user to completely reset a level at any given time, restoring the bubbles on the field and the number of clicks they have available. This really just does the same thing as starting a new level, calling most of the same functions, excluding those which progress the game by increasing the Current Level number.

More fixes to the game code, allowing the size of the grid to be set larger and larger (on a level to level basis), without any elements (such as bubbles or parts of the board) being cut off by the camera. This is really just a few extra lines of code which change the position of the camera based on the size of the grid that gets loaded; simple fix, but it works for all grid sizes tested so far.

Tutorial-style text, which is displayed during the early levels of the game to help the player understand exactly what's going on and how to play the game, without simply trying out a bunch of random inputs. Trial-and-error (in my opinion, at least) isn't the best way of teaching a user how to make use of the most basic mechanics of this type of game. I also threw together a basic arrow in 3DS Max, imported it into Unity, and duplicated it a few times in a Prefab object to make a simple indication system, marking out particular bubbles of interest for the player.






Thus far, it's been a decent few days for the project. My main concern going forward is design for the mid-to-late game levels; I still have to put a lot more time and thought into it, but from my early attempts, it's proving much more challenging to come up with sufficiently difficult bubble layouts than I anticipated.

I'll give it a good go, but that may be the weakest part of my project upon its conclusion, which is unfortunate considering that this is a puzzle game I'm trying to make.

Just a reminder, the final submission date of this project is Friday the 8th of May, giving me a limited time to finish it up. I'll post a final update on Friday, summarising my final progress, as well as a closing post, wrapping up the dissertation and giving my thoughts on the project as a whole and the progress I feel I've made during it.



Until then, I wish you a very good day, readers.

Friday, 1 May 2015

Second Semester Final Project Update 3

A fine day to you readers!

It's been a busy couple of weeks. My group project final presentation was completed yesterday, with a long run-up of prioritising bug fixing the game over sleep, along with everything else. That regrettably includes the dissertation project, meaning that progress since the last update has been minimal.

With today being scheduled as the final day of the project, I am forced to conclude that the final project simply isn't in any kind of state to be called done; in its current state, it barely constitutes a proof of concept, let alone a prototype. On top of this, there is still plenty more for me to learn from the game, regarding both code and the Unity engine.

For these reasons, I have made the decision to extend the deadline of this project to the final deadline of the dissertation, Friday the 8th of May, giving myself another week to continue learning and refining the game.

Honestly, I personally doubt that the project will surmount to anything incredible even with the extended deadline, but perhaps I will have enough time to make something that demonstrates at least some basic competence with Unity and C#.

A final post concluding this project should follow on Friday at the latest, with perhaps a mid-week update of progress, to keep readers of this blog informed.



Until then, have a fine day readers!

Friday, 17 April 2015

Second Semester Final Project Update 2

Dear, oh, dear, readers, I really do need to do better with these updates, don't I...

Good evening, readers, I have another update for you with the Final Project puzzle game I've been working on.

Again, I sadly have not been able to put as much time into this as I would like, but progress is being made nonetheless. Since the last update, I've more or less redone the bubble popping system, moving the co-routine to the individual Bubbles to cut a bit of length from the Main script. While doing this, I made the necessary modifications to ensure that each bubble that pops will run its effect, even after being popped by the effect of another bubble.

This makes it possible to chain-reaction bubbles effectively, allowing for more domino-effect popping than the previous method did.

I also modified the popping effects of the bubbles, adding in two new types: the Basic Bubble, which simply pops on its own when clicked without affecting any other bubbles, and the Explosive Bubble, which pops all bubbles immediately surrounding it.


The Line-Popping Bubble remains, but will no longer be the standard bubble on most levels. 



The final new feature is the finalised level system, which utilises a Level subclass to build hand-made levels through the code. Each level incorporates a unique Two-Dimension Array which can be modified in the individual level class.

This means that there is a parent "Level" class, which is subclassed in "Level 1", "Level 2", and so on. This allows the Main script to treat all of the levels as the same script be referring to them as their parent class, while still letting each level have its own variable values, including the overall layout of the level.

I've so far create three levels, each one introducing the current types of bubble. The next thing for me is to begin creating some levels which use these bubble types and provides some challenge to the player. Some more mechanics may be necessary, but I'll consider that possibility after exploring the current mechanics.

For now, that's about all the progress that I'm ready to report on for now. I'll try to update more often and more regularly in the future. Until then, have a fine day, readers.


Thursday, 2 April 2015

Second Semester Final Project Update 1

Hello, readers!

Apologies for the lack of updates in the past couple of weeks; various projects have been keeping me busy, and I haven't had much time to work on the Final Project, and didn't see any point in providing updates with no progress to report. I have finally managed to pour a couple of hours into it today, however, and have settled on and set up a fairly nice central mechanic for the puzzle game I'll be building.



The player starts with a square grid of bubbles, which can be popped by clicking on them. Popping the bubble produces a nice little particle effect, and makes the sphere of the bubble vanish.


Once a bubble has been popped, the game pops the rest of the bubbles in lines above, below, left, and right of the clicked bubble in a short chain-reaction. The code for this was relatively simple, but took a little bit of thought to get them to pop in order, all at once. It was a fairly simple matter of having the four directions of popping in a single function with four Booleans detecting whether the edge or a blank space had been reached; the function was headed by a While Loop that checked if all of the Booleans had been completed, and included a yield WaitForSeconds delay at the bottom of the While Loop.

The bubbles are contained in a Two-Dimension Array to which they're added as they're created, similarly to the Maze Game I created in the first semester. This makes it incredibly easy to target specific bubbles within that Array, using the coordinates that are assigned to them.

Overall, I'm happy with this as a start to the game. It's a fairly nice puzzle mechanic which, with some basic level design, can make for some tricky levels. It also offers some room to develop one-off mechanics with the popping chain (such as a "bomb" bubble, which bursts all bubbles around it when it pops, or a way of bouncing the chain reaction around the board), and is generally just quite satisfying to watch. It wouldn't be incredibly hard to allow the player to set up some fairly intricate, almost domino-like patterns in the bubbles, which they could set off with a single click, sit back, and watch play out.

With another couple of weeks, I can hopefully develop this into something very pleasing to add to both this dissertation, and my portfolio.

I'll try to keep updates coming more regularly. Until the next one, have a fantastic day, readers.

Tuesday, 17 March 2015

Second Semester Final Project START

Greetings readers!

The time has come again to plan and prepare the Final Project of the semester. This should be the final piece of work I produce for the Dissertation (unless I decide to create any additional prototypes in my final weeks of the academic year and document them on this blog).

For this final piece, I've decided to return to using Unity and MonoDevelop. It's by far the best games creation program I've used, uses C# natively, and is becoming a powerful standard in the industry. Being able to use Unity more proficiently increases my employability and showcases my ability to use C# far more effectively than any other program I can presently use or have access to.

As for the game itself, I don't really feel like I've made any serious progress with C# over the past semester, certainly when compared to the first semester; as such, I will be using this to simply demonstrate my existing knowledge and abilities, and hopefully gain a little more experience and something new to show off in my portfolio. As such, I'd like to produce something polished and interesting, something with simple mechanics and some level of audience engagement. The Top-Down Shooter game I created for my First Semester Final Project was a passable demonstration of mechanics, but it didn't give the player much of a reason to play the game, and wasn't nearly as polished as I would have liked.

Puzzle games are usually quite good for engaging the player audience, and often only require a bare minimum of mechanics to produce, so I'll start there. I would also like this game to be three dimensional (in visuals if not gameplay), as my portfolio is noticeably lacking in anything but 2D Flash games.

This should be enough of a description for me to start working on the game. With any luck, I should have an update for Sunday, depending on how busy I end up being during the week.

Wish me luck, and have a very good day in the meantime, readers.