Game Design Tips #13 – [Unity] ScriptableObjects and Custom Project Gizmos

It’s been a while since my last Game Design Tip, but I’m back and ready to show off some cool things I started using very recently. Ever wanted to save data as an asset in Unity? Turns out, there’s a dead easy way to do that. I’d heard of ScriptableObjects before, but not used them; they’re a godsend for any task where you just care about keeping hold of static data for something – weapons, enemies, item drops, you name it.

I’ll take an example I was working on the other day. I have a load of guns that the player may own, each with their own cooldown rates, damage, clip size and whatnot. My strategy at the time would have been to create a MonoBehaviour script that holds a bunch of public variables, stick that script on a bunch of GameObjects and tweak their variables individually, then save them all as prefabs. Upon needing to read the data, I’d instantiate one of those objects (or have them all instantiated at level start), then read off all the variables. In doing so, I’d waste a bunch of memory loading up GameObjects whose sole purpose was to hold data, clogging up the RAM with redundant data and making the garbage collector mad.

tip_13-01

That was dumb.

Instead, I should have used ScriptableObjects, something Unity provides for this exact purpose. Instead of extending MonoBehaviour, we’re first of all going to extend ScriptableObject. That’s going to tell Unity that this script is special, just like every one of my readers. That’s my flattery quota for the day met!

tip_13-02

You’ll also notice we gave the entire class the [Serializable] attribute. This is provided by the System namespace (hence, that’s included on line 2) and tells Unity we’ll want it to do stuff to it to make it visible in the Inspector. In reality, it’s a lot more complex than that, but we don’t care for now, do we? We just want our data saved. Oh, and I’ve stuck this class in the WeaponClasses namespace for the hell of it, but you can ignore that if you so wish. In my example, WeaponType is just an enum to deduce which class the weapon falls under.

Now that we’ve gone about making our data serializable, we need a way to make these new Weapon objects. There’s probably many ways to do this, but I’ve used a bit of Editor scripting to get the job done. It might look a bit alien at first, but it’ll all start to come together soon.

tip_13-03

This is a brand-new script which doesn’t extend Monobehaviour, ScriptableObject etc. It just needs to import UnityEngine and UnityEditor, and the script must be placed under Assets/Editor. We use the [MenuItem] attribute to add a lovely menu entry for making new weapons – now, we’ll be able to click ‘Assets’ on the toolbar, hover over ‘Create’ and find ‘Weapon’ listed underneath all the usual entries. Clicking this places a brand-spanking-new Weapon under the path defined in the script (line 14) and focuses Unity on the new Weapon in the Project Window (lines 16 and 17). Just a word of warning – it’ll replace anything called NewWeapon.asset in that directory, so I’d rename it straight away! Now you’ll have an awesome new Weapon instance you can reference in your scripts without having to attach it to some empty GameObject.

tip_13-04

Not a typo, just a really fun thing for gunning people down.

I did a little more processing with mine using an additional, more complex Editor script to hide certain variables based on the type of weapon, but this is basically what you get when you click on one of your Weapon instances in the Project window. We’re done with ScriptableObjects now, but let’s go one step further and make a cool gizmo for our Weapons.

Weapon icon

This is the icon I’ll be using. It’s dead easy to tell Unity to use this for our Weapons; just save this under the exact name “Weapon icon.png” or “Weapon icon.tif” – only .png and .tif files are allowed. The syntax is [Class Name] [single space] [the word “icon”] [.png/.tif]. Super simple stuff!

tip_13-05

Now we have pretty-looking icons for our Weapons and a clean way to save data for each Weapon. Unfortunately, it doesn’t make them look different in the Inspector, but at least they have an icon in the Project view that makes them easier to find. I hope this has been helpful, and I’ll be back soon with more tips.

Advertisements

Game Development Software: Unity Free

I’ve decided to do more in-depth reviews of the software I use. I’ll start by detailing the various features in one of my favourite pieces of software I’ve used so far, Unity 4 Free.

unity-logo

What is Unity?

I’d be surprised if you haven’t heard of this already – just a quick Google search for “free game engine” will return it as the top result. Unity is a 3D game engine that’s designed to speed up and streamline the development process, while providing all the powerful features you’ll find in similar products. While some features are restricted to Pro (such as realtime lighting and post-processing effects, I’ll be talking about these later), the free package contains most of the features you’ll need. So don’t be put off by the fact that a Pro licence costs $1500 in one payment or $75 a month, just go download the free version to see if you like it.

The Unity Editor

unity-editor

The Unity editor, your window to making the games of your dreams.

The editor itself was designed with customisation and workflow in mind. You can see a load of windows in this screenshot, each of which can be freely docked on any side of the screen, or even pulled into a separate window if need be. Each window has a specific function:

-On the left is the hierarchy pane, which lists all the GameObjects (this is what Unity calls any old object you lob into the level, which are called scenes). GameObjects can be stacked (or ‘parented’) onto other GameObjects, in a hierarchical manner, hence the name of this window.

-On the right is the Inspector view, which frees up all of the variables and components attached to the active GameObject so they can be changed easily without having to delve into the source code and change variables directly.

-On the bottom is the Project pane, which lists all the assets available for your game, which can be dragged and dropped straight into the level.

-Most importantly, in the centre is the Scene view, where all the action happens – this is where you’ll be moving around all the GameObjects in the scene to build up your level. Here you can see the currently selected object, my player, and the gizmos that represent some of the components on the player, for example the blue sphere is an audio component, and the white cone is the main camera’s field of view. Once you’ve finished building the level the way you want, you’ll want to test the level –  in Unity, this is a breeze, as all you have to do is click the play button at the top-middle of the screen, no waiting screens, no lengthy compiling required, just an instant transition from the Scene view to Game view, where you’ll play the game as if it were a proper build of your game.

Scripting with Unity

Unity provides the functionality to program with your choice of three programming languages, C#, Javascript and Boo, and a script in one of these languages can communicate seamlessly with a script written in either of the other two. A plethora of classes are available for manipulation from the start, giving you complete control over any GameObject and all the components attached to it, the physics engine, the inputs used in your game, everything. Unity provides comprehensive documentation on all aspects of scripting with Unity, just take a look at the Unity manual and look at all the classes along the left-hand side to see just how much of the engine is under your control. And if you’re completely stumped at how to start programming with Unity, there’s a whole playlist of tutorials on Unity’s official YouTube channel, plus Unity provides Live Training on its website every so often, the archive of which can be found on their YouTube page too. Unity ships with MonoDevelop, an IDE (Integrated Development Environment), which is very handy as it’ll error-check and auto-fill everything that’s specific to development with Unity. Also, it’s important to note that the Javascript used in Unity is a slightly modified version called Unityscript, although it functions much the same as conventional Javascript.

unity-mono-develop

This is MonoDevelop, the IDE that’s provided with Unity.

If you don’t like MonoDevelop, or just prefer another IDE, then you can set another default program by going to Edit->Preferences->External Tools, then change the external scripting editor by browsing for its location on your computer.

The Asset Store

Having trouble modelling a character? Need a few more ambient sounds for a dark alley in your level? Completely stuck and need a completed level to use as a starting point? Then someone’s bound to have done it already on the Asset Store, an online marketplace foe everything you’ll ever need in Unity. From editor extensions to particle effects, models, animations, textures and even complete projects available on the store, you’ll be hard-pressed to find something that’s not on here.

unity-asset-store

The Asset Store will be your go-to place if you’re looking for something to use with Unity.

There’s plenty of stuff that’s completely free, plus there’s occasional sales, giving you a lot for a reasonable price. If you’re going to be developing with Unity, then a good free package to start with is the Sample Assets package provided by Unity Technologies themselves, which gives you a fully rigged and animated character controller called Ethan, multiple vehicles, and many other assets to help you out at the start.

In-game lighting and lightmapping with Beast

Unity has built-in support for the Beast lightmapper, a powerful tool that will bake static shadows onto your level, cutting down on the realtime impact of calculating shadows every frame. You can set how detailed and how strong the shadows are, which lights will be casting shadows and which objects will receive these static shadows, then click bake and Beast will automatically create very detailed lightmaps for you in a relatively speedy process. Back in the editor, there are four different types of light – point lights are like light bulbs and provide light emanating from a point in space which falls off with distance, directional lights act like the Sun and provide uniform light in one direction across the whole level, spotlights are self-explanatory and provide a cone of light from a point which falls off with distance like the point light, and area lights which are Pro-only, so I have no idea how they work. One massive drawback to Unity Free is the lack of realtime shadows – only one directional light is allowed to produce realtime shadows in Free, but no point lights or spotlights will cast realtime shadows, a truly disappointing omission, but not one that’s so huge as to prevent you making a good game with Unity Free.

unity-lightmapping

This is the sort of result you’ll get after creating lightmaps. These are the plastered on top of your game geometry to simulate lighting.

Nvidia’s PhysX Physics Engine

Unity uses the PhysX physics engine developed by Nvidia. It’s a very comprehensively constructed engine, handling collisions between objects, applying forces and gravity to them, and moving objects realistically due to the acceleration produced by these forces, all while allowing complete realtime modification through scripting. I use this functionality a lot while developing with Unity, so having so many functions available is helpful. Not only can forces be applied to objects in one direction, but explosion forces can be applied from a point in space to all nearby rigidbodies (physics-affected objects have a Rigidbody component applied), object’s masses or drag can be modified directly to affect motion, and collisions can be used to initiate events in-game. The physics engine supports the use of joints too, such as hinges or springs, and it works in both 2D and 3D, with dedicated components and functions available for both.

unity-physics-explosions

Explosions, just one of the effects you can achieve with the physics engine. And yes, this is my game, which you should be following by now.

Shuriken Particle Systems

Particles are important for applying a final touch to a game. Whether the particle effects are just debris from a gunshot or something much larger like a collapsing bridge, they add a lot to any game. Unity uses its own particle system, Shuriken, to handle particle effects. This is completely customisable as with everything else in Unity, allowing you to modify the speed, direction, rotation and size of individual particles, and change these over time too. Then you can change the force applied over time, the colour, transparency and lifetime too, as well as the particle texture which can be a spritesheet as opposed to a single texture, allowing a lot of room for creating the effect you desire. The particle themselves can simply be billboard textures, so they always face the camera, or a mesh, so physical 3D objects are emitted by the system, and they can even handle collisions, with different levels of quality to preserve performance if needed and the option for collision callback messages to be sent to scripts, so you can make events occur when a particle hits a surface. If you don’t have the time or resources for this, there’s plenty of particle systems on the Asset Store.

unity-shuriken

These are some of the many variables you can choose from when making a particle system. The grey bars can be expanded to give even more variables and many can be disabled if not needed.

Terrains

Unity also has a terrain generation feature. A terrain is simply a large mesh that will make up the majority of the ground of your level, with a terrain collider attached to it and the ability to add multiple textures to the surface to represent realistic ground. To create a terrain, you can go to GameObject->Create other->Terrain, then you’ll need to select its size and height. If you select something a little too big then that’s not a problem, you’ll just have to improvise and construct your world so some areas are blocked off, but make sure it’s not too small or you’ll have problems, because it’s a bad idea to resize a terrain you’ve already shaped and textured (something I’ve found out the hard way multiple times in the past). Initially, you can carve out the shape of your terrain using the raise, lower and smooth terrain brushes, which have options for the opacity and size of the brush, then you can paint the terrain with multiple, blend-able textures. It’s an easy-to-use but powerful feature, and is highly optimised so it should even work well for mobile projects. You then have the ability to add static meshes to the environment, such as trees, rocks or grass, which will be ‘batched together’ for increased performance. If that wasn’t enough, Unity has a very detailed tree editor, allowing for the randomisation of trees so a variety of shapes and sizes will be distributed across the environment.

unity-terrain

This terrain is from an old, abandoned project of mine. The trees are very slightly different from one another to mimic natural deviations in tree shapes and sizes.

Speed of development

Unity really shines when it comes down to speed. The instant playtesting feature is so useful when you’re prototyping and squashing bugs, or when you’re trying to find the best amount for, say, an enemy’s attack stat – just tweak the variable in the editor using the Inspector view, instantly play the game, then tweak it a bit more, even while the game is still running, so you can see the result straight away. Unity also has a genius Prefab system, whereby you can create one item for your game with a load of components and variables associated with it, or even child objects too, then you can turn this item into a prefab, which can then be dragged and dropped into the game as a perfect copy of the first item. Plus any changes to the source prefab will then affect any GameObject that’s associated with it, so it saves having to edit tens or hundreds of individual objects in your scene. This makes creating your game world easy and efficient.

Exporting to many platforms, plus your toaster

Unity supports publishing to so many platforms with little to no tweaks needed to your code it’s ridiculous – the same project cam be published to, hold your breath – PC, Mac, Linux, iOS, Android, Windows Phone 8, Blackberry 10, all major web browsers, and even Xbox 360, all recent PlayStation consoles and both Wii and Wii U. Of course, the consoles require licences from the respective companies, and publishing to iOS requires an add-on (which costs $1500, but a hit game on iOS is well worth the initial cost), but this is still a massive array of publishing options. The Unity Web Player itself is a fantastic platform, as you can deliver your game on all major web browsers with a few clicks, while the game itself will be so highly compressed that the user won’t need to download gigabytes of data to play it, allowing for instantaneous streaming of your game. The number of available platforms grows over time too, so you’ll never be short of a prospective audience.

unity-multiplatform

All. These. Platforms.

What’s missing in Unity Free?

A few major features are missing from Free but present in Pro. Firstly, as mentioned before, there’s only one realtime shadow in Free from one directional light, but in Pro you can have as many realtime shadows as you want, which can sometimes be the difference between an alright game and a fully immersive experience. Plus Pro gives you area lights, but I still have no idea what they are. Pro also utilises occlusion culling to increase performance, whereby objects that are obscured by another won’t be rendered at all. This isn’t to be confused with ambient occlusion. Think of a wall, with a small cube behind it. In both versions of Unity, the back face of the cube and wall, and perhaps some side faces depending on what angle you’re looking at them from, won’t be rendered as they’re facing the other way, but with Pro’s occlusion culling, the cube won’t be rendered at all because it’s obscured (or, occluded) by the wall. This saves your GPU lots of work with minimal CPU overhead.

Pro also gives you the ‘render to texture’ feature, which allows you to take a camera’s view and make it into a texture for use in, say, a TV screen, or to take screenshots. It can also be used for mirrors, or reflective water surfaces, so it’s a very powerful feature when put to good use. Pro also has a profiler bundles with it, which shows you where resources are being used in your game, for the detection of bottlenecks. It’s a helpful tool for increasing the performance of your game.

While Unity Free has a pathfinding tool built-in, Pro expands upon it massively, allowing more control over where characters using the pathfinder can move, and how they transition from area to area.

Another large feature missing from Free is post-processing effects. The ability to take a frame then add effects such as anti-aliasing, glow, bloom, motion blur and colour correction enhances your game graphically. This sort of feature is present in the free versions of other game engines, so it’s a feature I’d like to see in Unity Free. Also, games published with Unity Pro don’t have the Unity watermark when started up.

Summary

Unity Free is a very powerful, giving you a feature-set that will allow you to make very complex games. The sheer amount of help online from Unity is astounding, plus the comprehensive Unity manual, which can be viewed offline, explains every part of Unity very clearly. The community is extremely helpful too, with forums accessible for those with questions on any part of Unity, and for people to show off their work, completed or in-progress. The speed of development of games with Unity is above that of most other engines, and the sheer number of platforms you can export to means that your possible audience is as big as possible. There are many built-in features provided to aid you in making all genres of game, such as terrains, particles, physics, lighting and lightmapping, and even pathfinding. With Unity 5 just around the corner, now is an exciting time to be a game developer with Unity. However, the free version suffers from some missing features, such as realtime shadows, post-processing effects, the profiler tool and render-to-texture, some of which are found for free in similar game engines such as Unreal Development Kit or Source. If you’re an indie developer and you’re looking for a fast but powerful tool to fuel your game, then this is a brilliant place to start. Unity is a game engine you won’t regret downloading.

If you have any opinions on Unity, then I’d quite like to hear them. Maybe you also have some other great engines you’ve used that you’d like to suggest to people starting out with game development too? I hope you’ve had fun reading, and have fun with Unity if you choose to have a go at it!

The Future of Project Spikes

Firstly, thanks for the support I’ve gotten from everyone so far in the development of Project Spikes. It’s really helped me through to this point, all your help and feedback has been excellent, and I’m truly grateful for all the support. From what I can tell, you guys like the individual mechanics that are in place right now, and most of the feedback is for “more levels”. So I thought it would be useful to detail my plans for the game

The immediate future

From now until about the end of June, it’s very unlikely you’ll see anything playable. That’s not because I’m giving up, but I have A-levels coming up very shortly (and they’re pretty important, they largely determine my future), so I’m going to be taking a bit of a backseat with the game for now, at least in terms of getting updates out. In the background, I’ll still be doing work on the game, but slowly, as I have rather a lot of exams to prepare for (15, that’ll teach me for being optimistic back in September, and choosing to resit a couple modules). Sorry to disappoint, but most likely, no new content until they’re over.

The ‘exciting plans’ bit

Now for the part where I tell you the super-awesome plans I have! I’ve mentioned a few times now about making a proper plot for the game. This is what I’ll be spending a bit of time doing over the next few weeks – taking the stuff in my brain and putting it on paper, in story form. That’ll give me a rough idea of what I need to work to, and what to concentrate on each update.

I’m also working on re-doing the models and textures for the physics guns. They’re okaaaaaay, but I want them to stand out and have an immediate impact, I want them to really define themselves amongst the multitude of other famous videogame guns. I will consider what other types of gun I can add in the future, but the Force Gun, Shotgun, Laser Gun and Gravity Gun should all work extremely well together, regardless of whether or not I decide to add any other guns.

Then I need to consider enemies for the game. It feels extremely lonely at the moment, and the existing turrets are very outdated, so I need to replace them with newer alternatives and more lively enemies.I have many ideas, which will link in heavily with the storylines I have for the game so far.

Then will come the level design work. I’m pretty bad at this at the moment, partially because I’m not a pro at Blender so I’m not very good at making interesting level models so I rely on modular geometry in Unity (that’s just a technical way of saying “I use loads of tiny panels for the floors and walls rather than make a model of the whole level”). That has its advantages, as I can quickly change things around, but it’s very slow to process and render, so I need a quicker option. Hence the next paragraph!

Probably ditching Unity for UDK

Yup, I’ve been tinkering around a bit with UDK (Unreal Development Kit) for the past few days, and while I adore Unity for its ease of use, UDK is just so much more powerful compared to the free version of Unity. It doesn’t steal away all the nice features like Unity. On the other hand, the Unity community and official support from Unity Technologies itself is amazing, and there’s no end of help for beginners and advanced users alike. I’ve found similar sort of help from Epic Games for UDK, and I’m sure their community will help me get to grips with the technology, but it is daunting at first due to its raw power.

I can see an immediate improvement in the way games feel in UDK as opposed to in Unity, mostly in terms of presentation. So expect to see nicer scenery when I get a new update out (or don’t, less pressure for me!).

You can take this as a 99% confirmation that I’ll be switching to UDK at some point, so I look forward to taking all the progress I’ve made so far and doing it all over again in an unfamiliar environment. Such fun! But who doesn’t love a challenge? Plus I’ll have a longer-than-usual summer to work on the game, so it’s also a convenient time for me to hone my skills and push my game development skills further.

Releasing tutorials and test levels separate from the actual game

I want to keep the story and plot for the game a surprise to players so that when they play the full game for the first time, they don’t know what to expect from the plot and characters in the game. To do that and still be able to show players new features and how the game will look, I’ll release a separate test level and tutorial package that will replace the current Web Player builds I’ve been putting out, which will have sample levels representative of the ones you’ll find in the full game. That way, I’ll still be able to gather feedback on what features work and which ones need work. The full release has an open-ended development window right now, as I don’t want to rush it purely to get a game out there, rather I want to perfect it as much as I can before letting people loose on the completed product.

If you’ve read upto here, have a virtual cookie!

Seriously, cookies are amazing, go buy one now. That’s it for my little chat here, but if you have any questions regarding the game’s future, feel free to leave a comment below. I wish I had some nice screenshots of how things are going in UDK, but all I have so far is a few broken concepts hashed together. I’ll get better though! In the meantime, I’ll keep you updated, so good luck in your own projects.

The Massive “Yes-I’ve-Been-Gone-For-Ages-But-Now-I’m-Back” Update!

Why I’m a bad person

Okay. So, firstly, it’s been 38 days since the last post on here, and 53 days since the last actual update, which all makes me a terrible person. However, first there was Christmas and all the stuff that comes with that, like getting presents for people and seeing relatives, then new year, then suddenly I had every piece of work ever in the history of the universe to do for school. BUT, and this is a huge but, I’ve been working on the game through all of that and the main reason for not updating until now hasn’t been all these massive drains on my time (though they helped), but rather I wanted to do something huge for this update, so prepare yourselves for the Yes-I’ve-Been-Gone-For-Ages-But-Now-I’m-Back Update!

Development Hell

I’m a bit like a goldfish sometimes, in that I’ll look at something, think it’s amazing, then see something else and ditch the first thing. That’s exactly me while developing this update; I kept putting in all of my half-baked ideas and nothing got done fully. I meant well, I swear, but it delayed the update quite a bit. But, I’ve put in a new texturing system which should make the whole texturing process a lot easier and quicker for me, AND save on performance, I’ve expanded and improved a couple levels, and the biggest thing is, I’ve added a boss battle! And we all know everyone loves boss battles! So read on and be amaaaaazed *dramatic voice*!!!

Updated, improved and removed levels

spikes-51This, as you might recognise, is the hub level. However, it’s had a facelift, and a big one at that. It now serves as the hub for the entire game, rather than having separate hubs for each world. The blue building from before is for World 1, and upstairs is World 2, then as more worlds are added, you’ll be able to access more areas to find new levels. Also, due to loads of changes I’ve made to the level geometry and the texturing (I made a script that handles all of the texture sizes for me), everything should run smoother and I’ll be able to put more decoration in the levels. In short: it’s better, more shiny things.

In the hub now, you’ll find the levels 1-5 near your spawn area, a practice room (ie, the large room that was there before), and upstairs you’ll find the cube to go to the boss battle; however, that’ll only appear after you’ve beaten levels 1-5. Also, you won’t have all three guns unlocked straight away, but you’ll find them scattered in certain levels. The laser gun is needed to access World 2, which is way above the rest of the level, so it’s found after you beat the boss. There’s also a trophy room to view all the gold cubes you’ve found, as well as an incinerator which is there for decoration and because destroying thing is really cool.

spikes-49I’ve re-modeled the vapour gun too, so it’s not exactly the same as the other two. I tried getting all the animations and sounds to go with it too, but for some reason Unity’s animation thingy hates me and keeps giving me really horrific results, so no animations. Sad face. The force gun has had improvements too; right-clicking now holds an object in front of you, and then left-clicking will shoot it as normal, but you can only hold things for 5 seconds, and it’ll drain your gravit meter, and the object will then disappear 5 seconds later, although I want to tweak this system a bit, such as only certain objects obliterating themselves when they’re dropped.

No more lives!

Another thing to note: no more lives. I decided that they don’t really add anything to the game, and it’s much more fun to try a really hard part indefinitely rather than being limited to 5 tries. Because infinite fail is funny. I’ve added a load of stuff to the tutorial level too (well, I’ve completely redone it, the old one was pretty bad, this it less bad), and it covers stuff the old one didn’t.

spikes-52In addition to the texturing stuff mentioned earlier, I’ve added some sort of moving textures, like neon signs, kinda. They’re dotted around the place as decoration, and to provide directions and other information. They’re used as decoration in the super-sexy new start menu, which is vastly improved on the old one, and you can see an image at the top of this post.

And finally, the boss battle!

Yes, it’s the part you’ve all been waiting for: a boss battle! He’s called Squoid (because it sounded nice, no other deep meaning), and he’s basically a big blue cube thing that launches himself at you and fires spiky balls of death at you in a fight to the death in his lair.

spikes-50He might not look like much, but he’ll wreck you. The idea is to use the force gun in some way to bring him down, but I’ll let you figure out the details, because I don’t want to spoil the fun of finding out for yourself how the battle works. His lair is absolutely magnificent though, and you should have fun having a look around it.

spikes-54There’s so many other little additions that I can’t list them all here, I can’t remember them all. Little things such as the gun icons in the corner being animated and zooming in when you run along with everything else, a range of new billboards, and small changes to the positioning of items in some levels to make it more convenient. However, through all of this, I haven’t been able to update all the levels, such as the Testing Area, and the promised World 2 Level 2, which I started to develop after the last update, but before updating the texturing system, hence these levels will appear as a blur of pinkness and glitches.

Also something I just noticed, the WebPlayer build for my game has only just broke a megabyte in size! It’s massively compressed, evidently. That’s technology for you. And if you don’t like external links or if you just think my Dropbox public folder is icky, there’s a new Project Spikes page at the top of this very website! Now you don’t even have to leave! Although, to be honest, it’s better playing through the link at the bottom of the page (same as always, why haven’t you bookmarked it yet?), as the page on this site is a bit broken. WordPress hates Unity, obviously. But, have fun heeeeeeeeeeeeeeeeeeere!

 

 

 

 

 

 

 

The Half-Finished Update

It’s been ages since I did an update, but lately I’ve had loads of work piled on me, so I haven’t had much chance to work on it, so there won’t be an update quite yet. However, I’ll use this as an opportunity to ask you guys what you want to see in the game, what improvements you can suggest, and what’s broken horribly (which I’m guessing is loads). I also have a couple new additions that will be in the next update to show you!

Slightly improved graphic-y stuff!

spikes-44I’ve made the signs at the beginning of each level a bit more detailed, and I think they look better with a darker theme. The old ones are on the top, the new ones on the bottom. As you can see, there’s now a sign for World 2 Level 2 which means…

…Super-Horrible Maze Level!

spikes-46I went a bit crazy with World 2 Level 2 so far, and it’s a bit mental. There’s dead ends everywhere and loads of traps (which I’ve yet to put in). Good luck with that one, it’s rather horrible.

Nicer GUI Things

spikes-47This new GUI is shinier and GUI-ier than the old one, and generally functions better than the old one, as it doesn’t use Unity’s native GUI classes, which are pretty slow. I’ll have this update out in the near future, although I’m not sure how long it’ll take as I’m not sure how long I’ll have to work on it.

Anyway, have a good Christmas (if I’m not done with the update by then), and I hope you have feedback, any would help!

 

 

 

Guns, Lasers and Powerups – Project Spikes 24/11/13 Update

I swear the game will have a proper name soon enough, but more importantly there’s a new update, and it has lasers in it!

Image

The laser gun, shown above, is used to burn obstacles in front of you, such as these cubes. They will then shrink until you’ve burned them into nothingness and they disappear, with loads of particle effects, and of course a vibrant blue laser! There’s also the new Destruction Gun, which is a one-shot device that will instantly kill the cubes and vapourise them. Even better, these two guns can be used against turrets to destroy them. There are icons for each gun to sit at the bottom of the screen when you’ve found them too. To switch between them, you can use the number keys 1-3, and later I will add scroll-wheel support too. The destruction gun costs 2 gravits per hit, the laser gun 1 gravit per half-second, and the force gun still guzzles 1 gravit every hit.

Image

I’ve also been working on optimisation, taking out as many unnecessary parts of the game as possible so the game should run as fast as it can, even at high graphics settings, which is why I’ve changed the geometry of the levels by switching most of the level from 3D cubes made of 6 sides to 2D squares with only two sides. That still allows me to texture the level in pretty much the same way, but reduces the number of draw calls by about two thirds, so it’s a massive optimisation which will have minimal effect on the actual gameplay.

Image

There are also new powerups, which will be placed in levels so that the player can use their unique abilities to solve new puzzles. This one, for example, gives the player an ‘antigravity jump’ which causes gravity to be reduced greatly, another speeds up time so the whole level moves quicker. They’re all pretty cool effects, which you can try out in a new level, the Testing Area, which you can access through the Start Menu. Talking of the start menu…

Image

…it’s also had a bit of a makeover. It looks a damn sight better than the boring old screen, but does pretty much the same thing. All the information signs in the game have been changed so they are unlit, which means they won’t appear too dark, after feedback I received. Additionally, the field of view changes when the player is running, and a set of crosshairs appears under the player when airborne to show where you’ll land, two more features suggested to me. Also, in the options menu, there are a few more graphical options that disable shadows, in case your computer is extremely slow. You can play this new update by clicking this link.

Have fun playing, I hope you all have some good feedback for me 🙂

Oh yeah, and it’s probably best to avoid World 1 Level 5, it’s not been fixed yet. Just a heads-up.

-Daniel

People Like Grapes: Project Spikes 21/09 Update

It’s been a week since the last update, and I’ve gotten some feedback on some issues in the game, which I’ve been trying to fix, along with adding new stuff. I present to you the latest update, playable here!

spikes-12

Behold my modelling skills!

I’ve added bunches of grapes around some levels, which restore 50 health to the player. It’s a pretty basic model, which will likely be improved in time. Along with this I’ve added a new type of moving platform, one that stops temporarily after it has moved, before moving again (some have spikes on too. Super hardcore mode activated!), and transparent platforms which are a little harder to navigate.

spikes-13Along with this, there are billboards at the start of some levels that show the user useful information such as controls through use of little pixellated pictures, to aid the player get used to the game. The health counter in the corner has been replaced with a health bar that is centered in the middle of the screen below the lives bar, and also re-sizes itself when the health changes.

I have also added turrets, which take aim at the player if they are in range and fire bullets at them, which in turn damages them.

spikes-14They do need a bit of work done on them to make them a bit better, which will hopefully done in an upcoming update. I’ve also added crouching so that the player can reach into spaces they couldn’t before –  this will be vital in level 3.

This time around there are only three levels, but I’ve made them a bit longer (and hopefully more interesting too), so give it a try, and leave a comment if you have any improvements or bugs you’ve found!

CHANGELOG / TL;DR

Added:
-Grapes, which restore health
-New platforms that have a delay after moving
-Transparent platforms
-Turrets, which shoot bullets at the player
-Billboards to display information
-Health bar
-Crouching

Changed / fixed:
-Levels changed again -  longer, more features
-Spikes now damage the player every half-second while still stood in them