Showing posts with label Game. Show all posts
Showing posts with label Game. Show all posts

Monday, August 12, 2013

Experiments with The Epic Unreal Engine



I had played around with UDK for my minor project in Computer Science Engineering undergraduate course and had come into a new world of it's own. UDK or Unreal Development Kit is a professional game development kit built upon the Unreal (Game) Engine by Epic. It's a proprietary product but UDK is free for noncommercial use.

It was my first time playing around with a 3D graphics software and it took me a while to master it's various view-ports and other 3D graphics manipulations. It is very powerful tool for game development truly built for the "serious" gamer. Though I had to scrap the project due to it's multiple skill requirements in 3D Graphics (Game Level Design, Asset Creation), Story Boarding, Cinematography and Programming (If you're creating something truly original) and my small team.

A lot of core features are locked down into the source-code but, trust me, to build blockbuster games you would not require to peek under the hood. Well, as I've said before, until you're truly doing something not directly intended by the UDK or you're a professional game developer.

The programming can be done with UnrealScript (an object oriented language tied up with the Unreal Engine) while you may want to use C++ for programming in a licensed version. Another revolutionary alternative to programming game behaviors is to use Kismet, a visual scripting engine. Kismet is the prime tool used by new comers and graphic artists and game level designers to implement simple functionality like opening of a door or build a chain of events to perform sophisticated actions.

Another tool which must be used in parallel to the Unreal Development Kit is UnCodeX (A Source Code Browser for Unreal Engine libraries). It will be very useful to learn and experiment with the source-code unreal scripts to hack new cool in game features.

A lot of simple predefined source code and tools are provided to rapidly build a first person shooter while other genres may require to get under the hood or perform hacks. Hence, I built a simple FPS which showcases more of my Game Level Designing rather than coding prowess or any other cinematography skills.

Here's a list of Resources you can use to start tinkering with UDK:

Official Site-

http://www.unrealengine.com/ 


http://www.unrealengine.com/

Required Books-

Unreal Development Kit Game Programming with UnrealScript: Beginner's Guide

http://www.packtpub.com/unreal-development-kit-game-programming-with-unrealscript-beginners-guide/book


Mastering Unreal Technology: The Art of Level Design

http://www.amazon.com/Mastering-Unreal-Technology-Level-Design/dp/0672326922

You can get major help, tutorials on its excellent network and web communities. There are plenty of books too for your aid. Good Luck!

Here's my last major work with UDK;


https://docs.google.com/file/d/0B4e1TZA7mwrNLUIyRXVOQ2hXOUE/edit?usp=sharing

Note: You'll need the UDK to open the attached Map. I'm a little lazy and inept in using UDK, hence, no cooked files or executable.

Here are a few screen shots (Looks pretty good, eh?):






Disclaimer: The contents/Assets were prepackaged into the UDK. I did not import custom assets to the map.

Wednesday, June 26, 2013

Simmunity: A New Game of Life

Simmunity: A New Game of Life

Conway invented the Game of Life in 1970; A "zero-player"game which demonstrated that a complex and sophisticated system can be created by a simple set of rules on a cellular automaton given only its initial condition. It is one of the most amazing AI experiments I've studied.

I was inspired by an entry in the list of Under Graduate Research Projects by CS Department of the Princeton University, to build a variant of Conway's Game of Life to Simulate an Immunity System [which has been now removed in recent updates; someone may have done it or it may have become archaic, don't know].

I then began studying about Conway's Game of Life and it's extrapolated conclusions on Evolutionary Science. A simple program with a beautiful visual display with a nostalgic video-game style simulation, made me very happy and interested to do this project. It's graphic display would also be a good project to show-off to non-computer science people. And, thus began my journey.

On the way, I found a lot of knowledge missing in me and had to improvise to generate, share and visualize the Immunity System as a Game of Life. I did not have enough know how to build GUIs in Java (one of my strong and comfortable languages) and thus had to generate universe matrix in Java and then write them to text files in CSV(Comma Separated Values) format. This CSV was next read by a MATLAB program and visualized in a colored grid. The series of grids were saved as frames and animated to show each step of change in the universe step-by-step.

The Rules of Simmunity are:

  1. Regeneration Step: 10% RBC (Red Blood Cells) are regenerated in a random fashion in empty places (i.e occupied by Blood-Plasma) after every step.
  2. Regeneration Step: 10% WBC (White Blood Cells) are regenerated in a random fashion in empty places (i.e occupied by Blood-Plasma) after every step.
  3. Pathogen Spread Step: Pathogen (denoted by black in the graphics grid) eats and replaces (i.e.copies itself in) any one of the 8 neighboring adjacent cell if populated by an RBC.
  4. WBC Spread Step:  WBC eats and replaces (i.e.copies itself in) any one of the 8 neighboring adjacent cell if populated by Pathogen.
  5. Starvation Death Step:  When a Pathogen cell is not surrounded by any RBC for more than three steps/iterations the Pathogen dies to leave Plasma (empty cell) behind.
  6. Starvation Death Step:  When a WBC is not surrounded by any Pathogen cell for more than three steps/iterations the WBC dies to leave Plasma (empty cell) behind.
  7. Natural Death Step: A RBC dies after a few iterations simulating natural death of RBCs.

 The Outcomes:

The body/system/universe heals successfully or fights off the disease/infection and no pathogen is left in the system. The WBC and RBC attain maximum levels flooding the universe and then attain an equilibrium of death and regeneration.

 OR

The body/system/universe succumbs to the disease and the pathogen spreads to dominate the universe for the stipulated number of iterations. Note: The body/system/universe will recover in later steps when the pathogen starts dying out of starvation and regenerating WBC will strike back with a vengeance. Also the RBC count will increase by regenration.

OR

The fight is still going on and the stipulated number of steps by the user has to be increased.

Additions:

I later added the facility to choose the size of the universe (i.e. grid/matrix) and the number of steps to be iterated. Another MATLAB program, I wrote, would count the number of RBCs, WBCs, Blood-Plasma(water) and Pathogen(virus etc) and record its step by step statistics which would be displayed as a net graphical outcome of the set of rules applied to the system and observe outliers or deviations.

***Addendum***

 I recently re-run my Simmunity program and found a few of my folders misplaced from the Desktop which may cause trouble. Thus, I'm adding this note here;
"You need to create a Directory called SIMMUNITY on the Desktop with two sub-directories, Outputs and Universes Collection."
 The Outputs sub-directory will contain FirstStat.txt and SimData.txt files auto-generated by the Java AI program. These contain a CSV matrix for processing by Matlab M-Files. The Universes Collection sub-directory will contain a Random Universe.txt file that will contain the size of the simulated cellular universe (i.e the grid or matrix) for the Matlab M-Files to run loops accordingly and create a simulation. You do not need to create these text files.

Screen Shots: 




 Download Source Code:

*Comments/Critiques are welcomed and appreciated.