Beam Me Up, Scotty

Hey guys, its Nemo. Hope you guys are awesome as always and healthy both physically and mentally. Can you believe it! It’s already the 3rd month of 2016, 9 more and its happy new years all over again. Okay enough, let us not dwell on the future. Let us focus on the present, the current, the now.

Quick brief up on what’s been happening

  • Re-organised my weekly schedule
  • Re-design my blog site
  • Re-designed my website layout (itsdaum.com)
  • Re-designed my resume (Finishing uni this year )
  • Explored Blue Mountains and places around Sydney
  • Got back into running and staying fit
  • Finally Cleaned Car (for those who don’t know my car was quite messed up from road trips)
  • Photography (Timelapse of Sydney night life)
  • Started being part of social media – Tig Source and Twitter.
  • That’s about all I can think of.
  • Wait also new project – Beam Me – mobile game.

So let’s being todays topic. What is “Beam Me”? Well first we need to look into the most recent failures of 2015.

2015-12-12-17_53_59-Unity-Prototype.unity-KnobStudSurface-PC-Mac-Linux-Standalone_-_DX11_-550x341

Knob&Stud – This was a solo attempt game for ludum dare about a farmer called Knob and a pig named Stud. The game was a puzzle game in which Knob and Stud had their own individual set of rules such as Knob couldn’t swim whereas Stud could swim, Knob could chuck Stud, etc. You controlled Knob and Stud to solve puzzles which involved using each other’s pros and cons to over come obstacles. The best part was being able to chuck the pig. I had a ton of enjoyment chucking Stud. But the verdict was the game never finished due to a few reasons.

  • Since this was a game for ludum dare, I had to work with a few constraints. The theme was two button system. I originally had it focused on using the left and right mouse button to do everything, from chucking/ jumping/ walking. The game had to many mechanics/gimmicks for two buttons.
  • Hardware/Software constraints. I had a few hiccups at the start of this particular jam, unfortunately my main computer decided to catch a virus which took up all of the ram. I couldn’t use any software. So I was stuck to using my Surface, which wasn’t bad at first. But I soon ran into problems of having to draw art on Gimp. I could not stand drawing with a mouse, especially a heavy wireless one.
  • Time constraint – Tutorial and Gameplay. The game jam was 48 hrs long. Art was coming out at a slow rate, so I made it real simple. The programming side was smooth without many hiccups. The main problem was getting content into the game. Teaching the players each mechanics wasn’t too hard but when it came to building harder levels I came to brick wall. I couldn’t make complex puzzles because that required more mechanics, which meant more tutorials, which meant more art. I did not have time for it.

ss+(2016-03-08+at+03.05.36)

The game ended up being simple tutorials of the mechanics of Knob and Stud which wasn’t too fun. I decided not to upload it to the competition as I wasn’t confident with the game.

I learned a valuable lesson from making this game

  • Don’t catch a computer virus just before a competition.
  • Get a better wireless mouse.
  • Design to the theme. I should have known that with 2 buttons I couldn’t do a game which involved a lot of game mechanics. I over complicated the game. I should have focused on what was fun and ditch the part which wasn’t necessary. Should have focused the game around chucking the pig.
  • Spend more time on designing/ quick prototypes.

I took these lessons and applied it to my new project “Beam Me”. Beam Me is a reflection of all the failures that happened in 2015.

I re-attempted at a game using the theme – two button system.

ScreenShot1ScreenShot2

ss+(2016-02-25+at+06.14.27)

Beam me is a mobile arcade game. The control scheme utilizes two buttons. The goal of Beam me is to control an alien spaceship which revolves around a planet while beaming up fallen alien soldiers and avoiding contact with any incoming hazards. The game has different planets to explore, each planet having their own unique objectives, hazards, and challenges.

I started this project at the start of this year to get myself familiar with the processes required to get a game onto the mobile market. I thought a simple game like Beam Me would help me achieve that. The game is relatively small scoped but with possibilities to build upon if needed. The current build is just a prototype and I still have a few more features ahead of me.

For more about Beam Me I started a tigsource blog for more awareness.

Next post will be about how Delirium influenced in designing Beam Me. Till then Ciao and Stay Awesome. Nemo Out!

 

 

Game Dev Diary – Part 2 – Living with Chaos

Living with Chaos

Hey guys Nemo here. Last week in our Game Dev Diary blog I went into the importance of having a game design document and gave a concise version of my design document of ‘Delirium’ a top down sci-fi action game set in a spaceship with a variety of bosses. You can scroll down to read up on it if you missed out on last week’s blog. With a readable, understandable and detailed document in my hands it was time to develop. This week was all about coding the game.

One Game Engine to rule them all.

Over the past 4 years, I have come across and have used a number of Game engines; Games engines that are free such as Unreal Engine 3, Game Maker Studio, Flash + Flixel and Unity3D. There has been a great debate on the internet and between my colleagues about which Game engine is the best. Many have argued that Unity3D is the one to rule them all. However I have found that Unreal Engine was a brilliant for developing games that were first person shooters. Game Maker Studio excelled in 2D pixel perfect games. Flash was efficient at vector art based games. And Lastly Unity3D which was the jack of all trades when it comes to Game engines. It’s not the greatest engine for a first person shooter game, nor was it the greatest for 2D pixel perfect and vectors games. They all had their own pros and cons. The point here I want to make is:

“There is no one Game engine to rule them all.”

hoVjBEb

When I choose a Game engine for a project, it boils down to two things:

  1. Familiarity
    – Learning how to use a new Game engine isn’t hard, but it is time consuming. Time is something you cannot obtained back. There is little point in learning a new engine or language just to obtain the same result. Use an engine that you are most familiar with.
  2. Situational
    – Sometimes it’s better to choose a Game engine depending on your needs. If you are trying to make a precise first person shooter, its wiser to choose an engine that already has it built in like Unreal Engine rather than having to code the system from scratch to your own engine. Sometimes, the engine your familiar with might not have the functionalities that you want your game to have. An example of this would be trying to make a 3D game on Game Maker. There’s going to be a 98.9% failure rate.

Just choose one, and stick with it. Or you could make your own engine.

Chaos Manager

I chose to use Unity3D for this project as I have made many of my games on it and have become accustomed to it. One major problem that I have found using Unity3D was the sheer amount of chaos it can produce. Unity handles the main game loop logic(mentioned previously here) for you behind the scenes which can have nasty side-effect; It becomes extremely difficult trying to control the flow of the game loop. Without this control, you are no longer able to exactly know when each individual objects call their respective functions, they become independent. Not only that, it becomes much harder when looking back into your old projects. You or any new members to your project trying to understand your project will not know where the program begins. It makes it difficult to implement new functionalities/features to the project without having to go through every single objects in the game. This is the Chaos. So how do we control this Chaos?

readImage

This is where the Chaos Manager comes in, it is also commonly known as the Game Manager. So what is the Game Manager exactly?

  • Instantiated once
  • Handles game states and controls the flow of the game
  • Saves persistent data

T6VFIrT

Singleton Pattern

A Game Manager is designed to be a singleton pattern. Singleton pattern makes sure that there is only one instance of Game Manager allowed at any given point in time. We only ever want one instance of game manger in the game scene so that it can control the flow of the game. I won’t be going into the details of what a singleton is as it is explained much better here.

There are many ways of implementing a singleton design. The general Pseudo code would be:

if  uniqueinstance_gameManager is NULL
then create the gameManager
else
return uniqueinstance_gameManager;

Game States

Every game has game states : Start -> Play -> Pause -> Die -> Game Over, etc. Game Managers hold information on game states. By holding onto this information, game states allows us to control the flow of the game. Each state lets the game manager to know what game Objects to instantiate at what time. This allows for neater organisation of code, and makes it easier to identify where the game beings and ends.

These data are usually stored as a enum, accompanied by a handler and a getter/setter.

public enum GameState { START, MAIN_HUB, BOSS_ROOM, CREDITS };

public delegate void OnStateChangeHandler();

public GameState gameState {get; private set;}

Persistent Data

Since game Managers have a singleton design it allows us to have access to be persistent data. Data that will not disappear throughout different scenes of the game. This allows for some awesome things to happen. With persistent data, you are able to save player information, carry their stats, weapon of choice, last location, death counts over to different scenes. I shall talk more about this next week.

So Far

  • Implemented GameManager and state controllers
  • Implemented new rooms and scenes
  • Sweet camera panning between rooms
  • Updated movement and weapon system
  • Working on AI implementation of first boss

oqOxXR4 oc945Fc

Let’s Talk Basics

Hey guys Nemo is back from finishing UNI! So I’ve been planning out what content Game related topics to talk to with you guys, and decided to start from the ground up on game programming algorithms and techniques!

The topics that I’ll be covering over time:
1. The basics – Game Loops, Objects
2. 2D Graphics – Sprites, Tiles
3. Algebra – Vectors, Matrices
4. 3D Graphics
5. Input
6. Sound
7. Physics
8. Camera
9. AI
10. UI
11. Languages
12. Networking Games

Yes, I have a lot of content to cover with you guys!

Note: I am not a qualified tutor nor am I trying to be one. I am still a learning and pursuing in the field of game development. Content that I put up are purely on my understanding and experience from game development. I am just a fellow blogger that wishes to spread the joy of game development. So then with that said. Shall we


Let’s Talk Basics!

Loops

Basically, a game program is one big loop, a loop repeats a series of actions until the player has terminated the game. We call this term as the Game Loop, which can also be referred to as a frame. Yup that’s the same frame when hear gamers talk about their fps “Oh man I have 300 FPS (frames per second) my computer is so badass”. 300 FPS would mean that the Game Loop is completing 300 loops per second. The Game Loop contains everything that occurs in the game, such as processing the input, updating the game world and also generating outputs (2D or 3D graphics, audio, music and dialogue). Whatever is in the game is in the Game Loop.

The Game Loop put into Pseudo-code:

while game active
process input
update game world
generate output
loop

Note: This is the very basics of a game loop architecture for simple games. Not all games use this game loop, instead they would use Multithreaded Game Loops.

Multithreaded Game Loops are programmed to harness the full potential of the computers CPU and it’s available cores. So that it can execute multiple lines of code at the same time thus reducing the heavy load, and giving the players a steady 60 FPS on their game. However there are some drawbacks to using multithreaded game loops in some occasions, due to its split processing there can be delays, which could cause input lag. Input lag refers to when a player inputs and the game displays the character moving a fraction slower. This tiny lag can be detrimental for games that relies on precision, timing and relexes such as Fighting Games. Other than that, multithreaded is the way to go for any game that requires heavy load of processing.

Time and Space

“Time waits for no one”

Games rely on time, without time there wouldn’t be any motion or action in the game. Before we get into talking about time, we need to understand the clear difference between Game time & Real Time. This might sound obvious but Game time is the time elapsed in the game’s world, whereas real time is the time elapsed in the real world. What I mean by this is, Game time can be programmed to fit the need of the game, time can run slower or faster. Whereas Real time is constant, runs at the same pace all day everyday of our lives.

Now then, lets rewind the time a bit, when games first game out, they were programmed to be played specific processor speeds. However as time and technology grew, more variations and faster processors came in the market. Which meant that games designed to be played on specific processors weren’t playable on newer processors as the game would run 10 times faster than usual because the game is being processed at a faster rate. We’ve probably have seen this once in our lives, when we put in an old dos games into our new computers with intel i7 processor and when we ran it, it would run super fast making it impossible to play, causing us to download a program to lower our processing speed to match the game.

This problem has been solved by the use of Delta Time!
Delta Time
– The time in seconds it took to complete the last frame.
So what does delta time actually mean?, well instead of thinking movement in terms of pixels per frame, we put it in terms of pixels per second. Regardless of the frame rate, any object using delta time will move exactly the same over the same period of time.

The Delta Time put into Pseudo-code:

object.position.x += 120 * deltaTime

The object will move 4 pixels per frame when the game is running at 30 FPS, whereas it will move 2 pixels per frame at 60 FPS. They would both be moving the same amount however the higher FPS would have a smoother transition.

Note: Any transformation, rotation and scaling should be done using the function of Delta Time.

So how is delta Time calculated exactly?
Delta Time is dependent on the elapsed time of real time since the previous frame.

while game active
realDeltaTime = time since last frame
gameDeltaTime = realDeltaTime * gameTimeFactor
process input (done using gameDeltaTime)
update game world
generate output
loop

Game Objects

Games consist of Game Objects. Game Objects by definition are everything that are required in the game. They can categorized into three types of Game Objects:

Non-Static Objects
These objects can be your main protagonist/antagonist or any moving objects in the game that are required to be updated each frame. These occur in the “generate output” in the main Game Loop.

Static Objects
These objects are your background, UI frames that don’t move and do not require to be updated. They only have to be drawn once.

Trigger Objects
Triggers are updated every frame however do not require to be drawn. A clear example of this is the camera within the game. Triggers also control the flow of the game, it determines when it spawns other objects into the game.

Well that concludes the first content chuck. I hope you guys got the basics of a game program. Ciao for now!

Ludum Dare 30 – Finished!

Hey chaps, so Ludum dare has concluded! Ahhh 72 hours seemed like such a long time but it went by so quickly. But then again if it was longer i would have tired myself out. Oh and sorry for not posting on day 2 it was a rather busy day getting most of the features and the artwork implemented into the game in. Day 3 went pretty quickly as I was half occupied by Uni work, but I managed to lose some sleep time and work on polishing the game. I had an awesome blast doing this ludum dare 30 with my friends Zhiming Chen and Steven Kim, I can’t wait for the next ludum dare during december! I highly recommend to all the people out there interested in game development to give it ago. Well time to relax and check out everyone elses game wooot, excited to see all the submissions.

Oh and theres a link below about our game!

Link!

Presented by HundredHundred Games

LudumDare Site

WebBrowser

Download Here!

Send us your highscore to

HundredHundredGames@gmail.com

Link is a 2D 4×4 fast-paced block building game.

Controls:
Arrow keys to move

Guide:
1) Normal (First block you encounter): Gives you 1 point
2) Shooter (Red bandana): Shoots when adjacent spaces are empty.
3) Immune (Grey covered): Immune to cops.
4) Tall (Tall, slim): Irregular shape but gives you 4 points.
5) Fat (Fat, wide): Irregular shape but gives you 4 points.

Plot:
Sometime in the distant future, the world has become so overpopulated that all forms of interaction has been reduced to a virtual form. You play as a rebel who’s goal is to establish a more natural connection between people.

Watch out though, the cops are not going to let you congregate in such an overpopulated day and age.

Ludum Dare 30!- Connected Worlds – Day 1 complete

Hey guys Nemo here, its been a while since i last posted. On the flip side I am currently attending ludum dare 30 with another friend woo, as I promised you guys and myself :). So a little background of the event, Day 1 has been complete. The theme for this ludum dare was “Connected Worlds”. At first glance my friend and I were stumbled on where to start, the theme seemed hard to approach, but after 3 hours of discussion we managed to pick out an interesting game that we both wanted to create. For this project we both shared the programming task and art task, and we were able to get our first playable and fun prototype up within the first 6 hours which was quite an achievement. I’ll explain the game once the game is more complete as I am currently running out of ludum time!ludumdare30pic

10585776_10152410382227979_1734523358_o10621217_10152410921077979_1553059401_o10473988_10152410789437979_99721310_o

I’ll keep our progression updated so be sure to click that refresh button! For all you other ludum dare competitors Good Luck and I hope to see your awesome games in 2 days time!

Let’s Talk Ludum Dare!

Hello, I have BIG news to everyone who is interested in game development. Two words “Ludum Dare”.

Whats so big about Ludum Dare you ask? Well. It’s an online game jam. Anyone in the world can participant in this event. Each event run for 48 hours during the weekends, and are judged by the community. Ludum Dare events are held out only three times a year(April, August and December) with all new themes. Themes can range from anything vague such as infection, random, to more specific themes such as 10 seconds.  Games must contain the theme and are required to be explained through a documentation by the game developers.

Ludum Dare is an awesome way for you to show your off your passion for game development and not only that its a great community experience. It only happens three times so might as well join in. Don’t worry if you can’t make awesome fancy games! No judgment from the growing community, the community is awesome/friendly and they are people like you game developers! Thats the beauty of Ludum Dare. Make Games. Share Them! Have Fun! ;]

Ahhh I can’t believe I just found out about LUDUM DARE! missed out on so many events sighh, there have been already 29 events. The theme for the April 2014 was beneath the surface. Can’t wait to see the games that have been created!

I am going to prepare myself for the August 2014 Event! And I hope to see all of you guys there! I truly recommend you guys to get on aboard the LUDUM DARE August 2014!!

Like this Post and Share it with your fellow game developer friends! Also checkout my other blogs 🙂

http://www.ludumdare.com/

http://www.ludumdare.com/compo/

Let us Unite with Unity

Hello Happy Easter! Okay, so its been almost 2 months since my last post on this blog, I apologize. I’ll give you a little recap on whats been happening over in my side of life, “University” that’s what has been happening for the past 2 months. So nothing much has been happening, just a lot of essays, programming with OpenGL, some theory studies on Game Development which is sorta fun and all, but it sure did take a lot of my free time which is a shame.

Well that was the little update on things. Here is the real content.

So, I was able to get in touch with an old pal of mine from Singapore and we united together to create a game using Unity. We started brainstorming many interesting ideas together, and ended up with a pretty solid idea. I’m not able to give you guys all the detail of the game, but the game is going to be an 2D arena platformer, a rogue-like. The theme of the game is Mutation which involves the character to mutate to interesting things as the level progress.With a high risk high return system. The games that we got influenced from was, Super Crate Box, BroForce and Battle Block Theatre.

I’ve been working on the character side of the game, and my partner has been working on the enemy side of things. Here is a sneak peak on the programming side of things.Note that there aren’t any art assets present at this moment.

1 2

 

Well thats all for now ill keep you guys more updated : ) ciao for now.