Unity3D Course in Miri

I have organized another Unity3D introductory course at TEGAS Innovation Centre Miri last Saturday. The attendance was surprisingly much higher than the first course done in Bintulu.

People from different age group and different background joined the course, mostly out of curiosity. Hopefully they have gained some interest in game development and continue to pursue this dream!

Also, please join the Facebook group I just created recently, namely the Sarawak Game Developers group at https://www.facebook.com/groups/511210486092635/

LANManager Supports UNET

Surprisingly, the plugin I made for Unity called LANManager supports UNET out of the box. The plugin was made in last year, before Unity rolling out their new networking system called UNET, which is a complete remake from scratch.

LANManager is a Unity plugin that helps to propagate your Unity-based game throughout the local network and allows other clients to discover the game server automatically without the need to manually insert the server’s IP address.

The plugin seems to work fine without any modification to the code, except a small change is required for the sample project to run on the latest Unity – replace the Network View component attached on the character prefab with the Network Transform component and that’s it.

The reason why it still work is mainly because Unity didn’t change much of the abstraction layer, except the underlying architecture which is not exposed to the users. Event names such as OnConnectedToServer, OnPlayerConnected, etc. remain the same so it didn’t break any of the functions in LANManager. Good job to the engineers at Unity Technologies!

Building a Game with Unity and Blender

I am proud to announce that I have published my very first book! The book is entitled “Building a Game with Unity and Blender” and it’s published by Packt Publishing, a well-known publisher based in Birmingham, UK.

You can get a copy of the book directly from Packt Publishing or you can also order one from Amazon.

I would like to thank all the people who helped to make this possible. Thanks again!

UPDATE: The source files are now available. Download it here.

Change Unity3D Build Target Using CMD

Most people probably won’t need this, unless you encountered such scenario:

You're handling a huge project, and you somehow need to move the entire project folder from a Windows machine to a Mac for porting the project to iOS.
What will happen is when you open the project for the first time on Mac, Unity will load all the files and convert them into Windows formats because well, your project was set to run on Windows previously.
You waited for half an hour or so for all the files to be converted (it' a huge project!) and now you must change the build settings again, and wait for another half an hour for it to be converted to iOS!

If you want to avoid running the conversion twice, you can change your Unity project’s build target before opening the editor, by using the command prompt, like so:


"C:\Program Files(x86)\Unity\Editor\Unity.exe" -buildTarget 


/Applications/Unity/Unity.app/Contents/MacOS/Unity -buildTarget

Possible options are: win32, win64, osx, osxintel64, osxuniversal, linux, linux64, linuxuniversal, ios, android, web, webstreamed, webgl, xbox360, xboxone, ps3, ps4, psp2, wsa, wp8, bb10, tizen, samsungtv

For example:

"C:\Program Files (x86)\Unity\Editor\Unity.exe" -buildTarget ios

This way, Unity will straight away convert your project files to iOS formats and no need to convert it twice. Time saved!

View Debug Messages on Android

If you’re currently developing any android apps, you might be wondering how to check debug messages when running the apps on a physical device. Android SDK actually comes with an utility called Logcat, which does exactly that.

If you’re running Eclipse IDE and it is not showing any debug messages, your Eclipse is probably not linked to the Logcat. You can set it up by going to:

Window -> Show View -> Other… -> Android -> LogCat

However, if you’re running other development tools that don’t support this feature (such as Unity Engine), you can fire up Logcat manually by using the command pad/terminal.

On Windows, you need to enter the (android sdk folder)\platform-tools folder before calling Logcat:

cd C:\android-sdk-windows\platform-tools

After that, you can call Logcat by first calling the ADB (Android Debug Bridge) and launch Logcat from it, like so:

adb logcat

However, if you’re just calling adb logcat you may see the terminal going crazy by showing tons of debug texts in crazy speed. This is because the Logcat is actually displaying debug texts of ALL the processes running on your device. You definitely do not want that, don’t you?

You can add an extra parameter behind the command which filters out the process list and only display your app. For example, if your app is built using Unity Engine, you can call:

adb logcat -s Unity

…which looks like this on the terminal:

That’s all. You can now easily debug your app and know exactly what’s going when bugs occur. Happy debugging!

Rect Error in Game Mode

If you are getting this error when running Unity Engine in game mode:

rect[2] == rt->GetGLWidth() rect[3] == rt->GetGLHeight()

It’s actually an error emitted by the editor itself, nothing to worry about. To remove this issue, go to Window → Layouts → Default to reset the editor layout. The error will then disappear.

The error is usually associated to conflicts between image effects and screen aspect ratio. It’s not really a serious issue, just follow the steps above and you’re good to go.

Basic Random Number for Games

Random number is one of the most fundamental and important elements in video game programming. It’s being used in many different aspects such as AI (artificial intelligence), procedural content generation, unit stat, and so on which makes your game less predictable and thus increases the level of replayability of your game.

I first learned to use random numbers in one of my earliest game projects (circa 2006), a simple scissors-paper-stone game made in Macromedia Flash 8 (now known as Adobe Flash):

Random numbers were used for its AI, which basically a set of numbers ranging from 0 to 2, like so:

A random number will be generated at the beginning of each round to determine the AI’s selection and then an animation will be played according to the result. Winning or losing for each round will be determined by comparing the number generated by the AI with the number selected by player.

For example:

Player AI Result
0 (scissors) 1 (paper) Player wins
2 (stone) 0 (scissors) Player wins
1 (paper) 2 (stone) AI wins

This simple logic can be used in most games with minor iterations. Below I have included code snippets for random number generation in several different scripting languages so that you can copy and paste refer to it when needed. All it does is generates a pseudo random number between 0 to 2 with time seed. Happy coding!



int main()
    srand((unsigned)time(0)); //srand() only needs to call once
    int result;
    result = rand()%3; //this will generate a number between 0 to 2
   return 0;

Unity script:

var result : int = Random.Range(0, 2);

Action script:

function randRange(min:Number, max:Number):Number
    var randomNum:Number = Math.floor(Math.random() * (max - min + 1)) + min;
    return randomNum;
var result:Number = randRange(0, 2);


random.randint(1, 2)

Lastly, please allow me to share with you a comic about random numbers, illustrated by Scott Adams.