Category: GAMEDEV

Two Minute Tutorials: Blender

Driven by a desire to teach game development skills, I created a collection of easy to follow, two minute tutorials, designed to get you up to speed with modelling in Blender and rendering images with the Cycles renderer. If you are a complete beginner, it may be worthwhile viewing each of the videos a couple of times since they are packed rather densely due to the time constraint!

YouTube Playlist Link: https://www.youtube.com/watch?v=wcNukwr3b5w&list=PL7Z1KKHB1pIFyPS4M_LautLOgISrDQ2HE

Here are the individual Blender Basics tutorials:
2 Minute Tutorials: Blender Basics (1 of 6) – The Interface, Views and Object Mode – http://youtu.be/wcNukwr3b5w
2 Minute Tutorials: Blender Basics (2 of 6) – Edit Mode and Edge Loops – http://youtu.be/qigPnz3YJhE
2 Minute Tutorials: Blender Basics (3 of 6) – Extrusions and Navigating the 3D View – http://youtu.be/z-UJ3MRAPfc
2 Minute Tutorials: Blender Basics (4 of 6) – Mirror Modifiers, Materials, UVs – http://youtu.be/eg4x1QVxFak
2 Minute Tutorials: Blender Basics (5 of 6) – Duplicates and Array Modifier – http://youtu.be/6g-bCLEI9-Y
2 Minute Tutorials: Blender Basics (6 of 6) – Lighting and Rendering in Cycles Overview – http://youtu.be/slaBGcmiDgU

Following the success of the first series (racking up 300,000 views and gaining 1500 subscribers), I created another series in Blender on getting to grips with creating and rendering animations

Here are the individual Blender Animation tutorials:
2 Minute Tutorials: Blender Animation (1 of 3) – Keyframing – https://youtu.be/N3StKdjrWcE
2 Minute Tutorials: Blender Animation (2 of 3) DOUBLE BILL – Dopesheet and Graph Editor – https://youtu.be/FfzI0lfGjqA
2 Minute Tutorials: Blender Animation (3 of 3) DOUBLE BILL – Rendering and Exporting – https://youtu.be/I9cnUkTuGdo

These tutorials have previously been featured on the official Blender website!

The Sales Game (Unity)

While watching re-runs of the ‘The Apprentice’ the concept of ‘selling’ became a thematic focal point in my mind, and the strength of my ambition to create a simulation game surfaced as I sketched out several possible games over the course of a couple of hours. I designed several core game-play mechanics, though there was one clear winner: moving salesmen to intercept potential customers by tapping, and then collecting the proceeds from sales by tapping on an image of a dollar sign.

The vision of coding and publishing an original title within the simulation genre motivated me to quickly move onto taking the next step: to write and organise notes covering all aspects of the planned game. Reviewing this detailed documentation with my (non-technical oriented) partner, a final brief was decided and it was possible to begin. Splitting the work into discrete features onto Post-It Notes™ and prioritizing them on the kitchen table was my preferred means to manage this project. This aimed to improve the chance of successfully implementing as many requirements as possible, while maintaining the ability to adapt the project to new creative ideas as they were envisaged.

The development environment consisted of Unity, with the support of the Visual Studio IDE, nevertheless the first stage was to draft several simple art assets in Photoshop: the are no sales without salespeople or customers, so these were first to be created! Pooling my talents as a programmer, along with experience of user interface design, basic economics, script writing and sound editing, I set to work as a one-man game developer team!

The initial kernel of the game was formed by creating separate Customer and Salesperson prefabs, each with their respective Sprite Renderers,  Collider2D components, and C# scripts determining their behaviour. Customers moved down in the Y axis, and were reset to the top of the screen upon completing their journey to the bottom of the street. On colliding with a Salesperson, a Dollar prefab appeared, which had its own script determining its value and whether it had been tapped to be collected. As a consequence of the game essentially being driven by touch-interaction events from the user and collision detection events by the physics engine, the overall software architecture was event driven.

With the first basic implementation complete, I was enthusiastic to hugely expand the game by incorporating many more mechanics that would craft it into an engaging experience: with the ability to hire and manage multiple salesmen, contending against thieves picking up  uncollected dollars, tax collectors taking a cut of sales income on collision, having to pay compensation for customers colliding with vehicles, and the ability to invest in shops as a further revenue stream. With the depth and complexity of the project set to increase, it was well worth respecting an object-oriented style in order to structure code in a meaningful way, such that would improve its maintainability later on in the project.

The additional game-play mechanics were then developed one at a time, along with the creation of simple instructions to guide players within self-contained levels, each building upon the last, culminating in a complex web of interacting elements in the final level.

The levels were then thoroughly play-tested in order to ensure they met the requirements of the original brief. The game was built and run for testing on a popular, albeit older, Android mobile device – a Samsung Galaxy S3 – to recreate the performance constraints of likely real-world conditions. A notable issue with performance was found when playing the game, and this was tackled as follows: a minimisation in the size of all texture files, swapping from an Instantiate-Destroy pattern to game object pooling for frequently used temporary objects. I also tinkered to find the optimal quality settings for the Android build by allowing multi-threaded rendering, and slightly reducing rendering quality – the change to quality was indiscernible but improved FPS by 15.

While programming a level system, which allowed players to unlock levels as they completed the previous ones, persistence became more significant, since players could only complete the game if they played it in a single session. This led to a save system relying on the inbuilt Unity PlayerPrefs class that kept state data from one execution of the game to another.

Further refining the user experience, I amassed and reviewed a collection of Creative Commons Zero licensed music to find a suitable track for the game theme. This soundtrack, along with several key sound effects such as a coin sound and ticking clock, were added into the game with ease using the flexible audio features of the Unity engine.

The essential characteristics of the overarching meta-game included being able to stockpile money earned in levels, and spending this on upgrades that provide an advantage to the player in further more difficult levels. A script was then written to coat the upgrades such as “buy another customer” with a layer of zeal, e.g. “slip some cash to a DJ at a local radio station to play a homemade jingle. More potential customers!”

Creating a final finished product for release on the Google PlayStore within a short period of time meant that priorities had to be frequently reviewed. Certain lower priority functionality were dropped for the first release, in order to avoid compromising quality for new features. Nonetheless, the game remains flexible for further development thanks to the division of scripts into object-oriented chunks, and the ability to store complex game objects configured with particular presets as Prefabs. Further candidates for release are the platforms of Windows Phone and iOS, aided by the simplicity of multi-platform development afforded by Unity.

I have heavily exploited the communication channel of social media in order to broadcast promotional information about the game since release on the Android app stores: via messages to friends (Facebook), family (WhatsApp groups), 2500 followers (Twitter), shortly to be joined my 1500 subscribers with a video (YouTube). Thanks for all the support to those that have already downloaded!

Experienced with a huge variety of development tools and practices and with a burning desire to make games, I am eager to continue using and refining my skills with a games company in the West Midlands, and achieve my dream of a lifelong career in commercial game development.


Download Link: The Sales Game (Android)

Unity Developer Course

I highly recommend taking this Unity developer course (https://www.udemy.com/unitycourse/)  as a refresher to developing with Unity, especially if you can buy it during a Udemy lightning sale. It it continuously being updated, and now covers the additional functionality from Unity 5.

I am uploading desktop builds for each of the mini-projects that I am producing during this course, along with a couple of screenshots to track my progress in a public space.

I am committing the source code I generate during this course into this public git repository: https://bitbucket.org/sharpstringer/unity-course/src


Prison Text Adventure

This mini-project is a text adventure game demonstrating use of the Unity UI system, a state-machine written in C#, and input handling.

Screenshots

Download the game:
Mac
Windows


Number Wizard

This mini-project is a text based logic game that guesses a number that you pick between a certain range. This game has a menu system, and has transitions between multiple scenes based on a combination of user input and C# script logic.

Screenshots

Download the game:
Mac
Windows


Block Breaker

This mini-project is a block breaking game where you have to move a paddle until all the blocks are smashed.

Features:

  • We reuse the menu  system created in the previous game to fulfill the same functionality here, imported as a library.
  • The game uses the Unity physics system to process collisions and ball bounces, including box and polygon colliders and physics materials.
  • It has multiple levels that can be played in order to win the game.
  • Multiple reusable prefabs are set up to be able to quickly design new levels.
  • There is a background theme, and event driven sound clips.
  • The game uses sprite sheets for the multiple break states of the bricks
  • The game uses gameobject tags to determine whether bricks are unbreakable.

Screenshots


Download the game:
Mac
Windows


Laser Defender

This mini-project is an action game in which you control a space ship to defend against enemy space ships.

Features:

  • This game has dynamic object generation according to user input and scripted behaviour, and object cleanup using off-screen colliders
  • Object collisions are processed multiple layers to ensure that only valid collisions are processed (i.e. enemy lasers pass through enemy ships)
  • Frame-rate independent movement
  • Parallax particle system background and ship-thruster
  • Singleton music player managing background music
  • Sound effects based on events (laser fired by player, laser fired by enemies, enemy ships destroyed)
  • Sprite rendering layers to ensure that lasers and ships are rendered in the correct order

Screenshots

Download the game:
Mac
Windows



 

The Origin Of Converse – A Language Learning Game (Unity)

I want to gamify the experience of learning languages. Apps like Babbel and Duolingo go some of the distance towards achieving this, now that any smartphone user can begin to learn a language from scratch. However, if I am enjoying playing a video-game, I will play it for many hours without the feeling that it is repetitive or hard work, and this differs greatly from my experience with these two apps.I studied French BA at university, achieving good grades through hard work and perseverance. But I always thought that technology could provide a helping hand, providing a shortcut to learning. I have since completed a Masters in Computer Science, and worked professionally as a software engineer specialising in mobile apps over the past year. This technical expertise along with the desire to shake up the status quo have been the driving factors behind exploring improvements in the experience of learning languages.

Learn A Language, Lazily!

Using the medium of casual mobile gaming to teach complex grammar rules seems like a stretch too far for my limited amount of spare time, and potentially not a fun way to spend casual gaming time. However, supporting the process of vocabulary acquisition is the low-hanging fruit in teaching languages: vocabulary can be easily quantified and tested, meaning that real progress can be measured. It would mean that you can lie in bed playing a game and learn vocabulary faster than if you were studying hard in the library – not through hard work, but through the smart choice of learning technique. The concept of vocabulary exists in all languages (to my knowledge!), meaning that any app dealing with teaching vocabulary can be massively scaled across languages.

Evidence Based Support

Learning vocabulary is also a great aid to other learning approaches when striving to learn a language, since you can effectively read two-thirds of literature after learning only one thousand words (according to this paper, and this study).

I argue that you can go much further than making the pretty language learning quiz games and flashcard apps that have flooded the apps stores: we can make an interactive game that resembles a video-game, integrating within itself the learning material in the form of mini-games, and bring fun back into the equation.

Reasons commonly cited for not learning languages are alleviated when language learning is provided through mobile game playing:

  • “I don’t have time to learn a language” – the game would replace time playing other casual games, time that Candy Crush fans appear to find easily!
  • “I can’t afford it” – the game would hugely reduce the cost to learn a language, since both a freemium business model providing free content can be used in tandem with the overheads of an incredibly lightweight development team (of one!)
  • “I’ve got no language gene” – players would begin to learn words in the target language without realising, since they would be exposed to them in the course of natural gameplay

As a result of my belief in the idea, it was during a weekend hackathon that I produced the first iteration of this language learning concept in Unity game engine, leading to the mobile game Converse to be born (available on Google Play).

unnamedScreenshot_2015-08-21-19-28-23Screenshot_2015-08-21-19-32-34

Screenshots from the first iteration of Converse: the main platform game, the decision mini-game, and the spelling mini-game.

The Future

Several months later, I realised that it would not cut it to simply place learning mini-games into a platform game. Instead, the game should integrate the language learning directly into the game. From the ashes of the hectic 48-hour proof of concept, I have decided to take the development of the game further; aiming to focus three months of spare time making the fully fledged mobile game. As my first major personal project, I will inevitably be learning along my journey of developing and publishing a cross-platform mobile game developed in Unity – and I hope to share as much about this process via my website and on YouTube as tutorials!

Thanks for reading, and watch this space!