Friday, 24 May 2013

Evaluation

Games Engine Evaluation

I ended up using the Unity 3d game engine. My main reason for this was convenience - as I could get it for free at home and it was on a few of the college Macs, it was the most accessible option, without sacrificing usability. More pros I noted with using Unity were the Unity Wiki page, which has many easily accessible free scripts and the Unity.com forum for asking questions and receiving quick answers, as it is a popular place to go for questions and answers with all things Unity 3d.


To start with, I had to do a tutorial as it was my first time using the engine, and my first time using any engine in fact. I followed a basic 3d environment and coding tutorial, which was called "Unity Game Development Essentials", this was a .pdf file with a lot of pages. The tutorial took a few weeks to complete to the level where I would learn enough about what I wanted to do to be able to start doing it. I was tasked with creating a 2d game, however, and this is far different from the 3d tutorial I had done. This was a setback, right from the start.

In learning about 2d and 3d game creation, I did make several basic game levels. One was a first-person adventure, one was a mouse-orientated shooter and one was a re-skin of the 2d tutorial.

Eventually, I learnt the basics of 2d game creation and luckily Unity is a good engine for that, too. The game I was tasked with creating was the 'winner' out of all the pitches that fellow students made to a legitimate and professional games designer, so he was a good judge of the premise's potential and what it could become if we made it.

Before I started on that, I took the assets of a 2d tutorial and fiddled around with them, so that I knew what I was going to be able to do when I got into the real thing.

So, work started on the game which I was tasked with making. I found a strictly 3d-rendered 2d side-scrolling game tutorial (looks more confusing than it is) which, given my time restrictions and the lack of outside help, I pretty much had to take elements from it. For example, I took the character as it would have been too long and too hard if I had to make a character in Cinema 4d. The person whose game design I was going by decided to help by creating some prefabs (objects in Unity that can be put in any time) and I used these to make the game's stripped down version of a level. It had no textures, no script, just platforms and walking. I put textures on everything, which I found online as I would not have had time to create them myself. Here is a screenshot from the game, showing the textures:

I managed to find a script for a platform mover, so I put that in. I also managed to make spikes send you back to respawn, same with falling off the side. To do this I used OnTriggerEnter > gameObject.position == (transform variable) or something along those lines.

Another person in my group found a script to let you drag rigidbodies; rigidbodies being a physics component that have gravity and force applied to them. I also managed to make a lever which when clicked tells you to press a certain key, as I could not get the click to set off what I wanted it to. When the key is pressed, however, a block moves out of the way. Looking back, I could probably find a way around this but I was pressed for time. That pretty much sums up the work I did overall, but writing it like this does not do justice to the amount of time spent.

One thing to note was that this was a group task and the only help I received was from the person who wasn't supposed to be able to help, the person who designed the game, so all this was alone and the final game was of a decent quality.

Below is the Game Engine Wiki which I wrote in during the project. The links (.zip files) will likely not work.


Elliot's progress

So far I have downloaded a basic example of a 2d platform game. I have changed the background by using the render setting > background and assigning 6 pictures (the same picture 6 times) and made it into a sort of skybox. 
I have added in a box and a cupboard which are obstructions in the scene/level. The box must be pushed so that the character can jump high enough to get up onto a ledge; the cupboard must be jumped over by sprinting to it and jumping at the right time.
Today I added a different texture to the platforms. I made it look rusted and old as if it had been there for a while. To do this I simply clicked on the material it was made of (in the inspector) and changed the two materials there to the rusted texture.
I also created a door which can be passed through by simply running into it. To do this I had to create a box, reshape it, add a texture and make sure I ticked 'is trigger'. Next, I added a script to the first teleporter (which was a door; and will be referred to as simply door) and in the inspector, I made sure that the 'destination' was the other door which was above the level out of sight. This worked well, after a lot of time.
As per request I will upload my project file.
I added a level which when hovered over gives instructions in the top left corner. It will give instruction to press 'O' on the keyboard which will activate a noise and make a wall (which I also added in since last time) disappear. 
Also added some basic platforms and some more doors (teleporters).
Using the same teleporters, I made an imported spike turn into a sort of death machine - I manually set the destination of the teleporter to the respawn point, giving the same effect as if you had fallen into the death zone. To do this I used the standard box collider and triggers, with the script I already have.
Currently creating the base of the level - using the platforms, spikes, stairs ETC that I received from James.
Well that's done, I've also added the scripts for the switch and the walls to activate either on click or on press of a certain button. Overall, I'm happy with what I did with the base of the level, now all that's left is the textures, lighting, character (maybe?) and ceilings/walls.
I added a GUI texture to create a clickable background with text on it. 
I also added many many textures to the planes and boxes and such.
I scripted all things that required scripts.
PROJECT FINISHED
THIS IS THE FINISHED SHOOTORIAL THING THAT YOU ASKED FOR. I COULD NOT EXPORT OR SHARE IT PROPERLY SO I WILL PUT IT HERE FOR DOWNLOAD, WHICH SHOULD MAKE IT POSSIBLE FOR YOU TO OPEN IT UP (THE .HTML FILE) AFTER IT IS UNZIPPED. game.zip 

Thursday, 13 September 2012

Game Engines research

                                   Game Engine Research

A game engine is usually made up of a rendering engine, used to generate an image based on a model, a physics engine to make the game have physics such as gravity/acceleration or collision detection.
There is usually also sound, scripting, animation, artificial intelligence, networking, streaming, memory management, threading, localisation support and a scene graph.
In 2D game engines, there may not be certain things missing from the above, like networking, streaming, memory management and more. Those particular things aren't as necessary as 2D games are seen as more simple.
Game engines are the core object in making a game because as the name suggests, they are engines that make the game work.



There are many different game engines. The first game engine was created in the 1980s, notably, 1987's Shoot'Em-Up Construction Kit. In the 1990s the engines were finally named engines and were specifically made by third-parties to work with many different games based on the same engine. id software's Doom and Quake, for example, were made using the same game engine.



Different game engines have certain features.
The CryEngine by Crytek has many features. Notable features include particles, motion blur & shadows, high quality 3d water, natural lighting & dynamic soft shadows and a facial animation editor.



The MascotCapsule Eruption engine was used for the game Resident Evil 4 and its features include motion blending, shadow projection and avatar enhancements.



The Unity game engine has drag and drop functions which help the user to put what they need where they need, faster than they could before. Unity's other features include integrated development environment with hierarchical, visual editing, detailed property inspectors and live game preview and the games created on Unity can be played on most platforms. 

The game engine Grit was made especially for open world games such as Grand Theft Auto. Optimisations include a 24-hour cycle for day and night, easily implementable planes & cars and a general purpose 3d physics engine.



The Torque game engine, made for the game Tribes 2, had a few unique features at its release, these being support of rendering 3D models in the DTS and the DIF file formats. These were not suitable for animation so were used for buildings and landscapes. They had bounding boxes which perfectly matched the visible geometry.

The Torque 2d engine is similar but made for 2d game creating. It is one of the more powerful 2d engines, with particle effects, tile manipulation and behaviour assignment. It is also a widely-used engine.



With these features, comparisons can be made. Comparing two, in this case Unity and UDK.
In terms of usability, Unity has drag and drop features, allowing for quick and easy scripting. This would be better for people who aren't as good with scripting. Unity also has extremely high potential in cross-platforming. It can be used on almost every platform including iOS, Xbox 360, Playstation 3, PCs, Wii, and more. Unity is also good for smaller teams with a smaller budget as there is a free version available and UDK would cost money even as an entry fee.



UDK, or the Unreal Engine 3 (its current revision), is optimised to be easy for beginners to pick up and learn quickly so that they can work quicker as they improve. This can help beginners as it can be intimidating opening a game engine that has so many features. UDK has a wide range of platforms that games made can be imported to, including PCs and iOS. While this is not as wide as in Unity, this still covers the most popular options. UDK would be better for a large, big-budget team as Unreal takes 20% of the profits and for a small group, this could break the company as it could be too much to take from them.



As an example of side scrollers, which was what I was going to make, I looked at an old classic featuring Nintendo's Mario.
Many believe Mario's first appearance was in Mario Bros. from 1983, but it was in fact the game Donkey Kong from 1981, created for games arcades and only being available at such. It was made by Nintendo who, back then, were not well very known in the gaming industry. As they seemed to be among few creating games at this early era of gaming, they made the most of the fact that it was a new thing and they strived to be the best at it. And nobody can really argue with that.

As I had no arcade cabinet, I had to find the game online on a website. I played it on a site called classicgamesarcade.com. As expected due to its time of creation, the game was very simple, but by no means easy. This is quite an important aspect, actually: The idea that a game can be simple but still a challenge. Sometimes, there is no need to be mindbogglingly complex to a point where it's hard because you just do not know what's going on, but hard because of required skill, timing, etc.
Looking at the aesthetics, the hardware limitations were a huge part of just what could go into the game. I believe that with limitations comes more creativity in a way, as if given no limits, a game can just have anything and everything thrown in 'because it can be' - a very bad idea. However, with such limitations as the early arcade cabinets, there isn't even space for creativity, so they had to make the background very basic (just a black screen with some red lines to be the platforms, actually), but I believe the sprites, particularly of Donkey Kong, are quite nice looking despite the limitations.

The style of this game seems to be quite cartoony, which is what I'd like mine to be. I don't know if this is cartoon-like on purpose, or if that's because of the limitations of that time. It's possible that both are true - perhaps the creators, Nintendo, knew of their restrictions and aimed to create a game whose style takes full advantage of this. For a game made in 1981, it does seem to have a nice, animated cartoon sort of style which makes it seem more of a family game, which is what it was released as.

Overall, I didn't play this game for too long as to me, it's a little bit boring. I can see how it was good at its time, but as games have evolved SO MUCH since then it's all a little underwhelming in this day and age. The mechanics are there, however, and the control scheme is tight enough that if you mess up, it's only your fault and not because of slow button reactions or things like this, which may have been a problem back then.