Monday, October 14, 2013

Radix Omnium Malorum



Gameplay


Whoohoo! ROM! My final undergrad project from way back in the Great Winter of '11. I spent many Friday nights on this terrible wonderful game. To be frank the game is not good. In any way. However, I am super proud of it! I swung for the fences and tried out a lot of weird ideas. The most notable of which is that the game takes place inside a giant rubix cube. Every 30 seconds one of the sides rotate, modifying the level structure. (Hooray for learning about rotational matrices and 3D physics engines the hard way). The game is also pretty thematically interesting. It's set in a dark chamber deep within the earth. In the center of this cavern dwells a cruel tree god, Rom. To satisfy his blood-thirst the Stag-like denizens of the chamber are locked in endless mortal combat (around 20 kills), sacrificing the flesh of their victims to Rom's insatiable roots. I also love the super awesome black metal and ambient tracks that that my group mates composed, they really set the games tone excellently.


Game Mechaincs

Dev Timelapse

Level Editor

Tuesday, September 10, 2013

Protein Interaction Project







I stumbled across one of my varsity projects today and thought that I would post it for posterity. The project is a 3D visualization of protein interaction networks.I built it with my friends Bryan Davies and Ryan Mazzolini for a class on information visualization. In hindsight it was probably the most profoundly insightful class took.

You can check out the project webpage if you're interested:



Thursday, May 16, 2013

MiniHorde

'


MiniHorde is a little 2 player co op game that I made at the start of the year. I wanted to capture the feeling of going back to back with you best friend and barely making to the next round, only to realize the next round is even more brutal. I'm pretty happy with how it turned out, though ironically I don't think I ever played it with my bf.

Matt Miller wrote the awesome soundtrack in the playable (not the video, that's Front Line Assembly). You can listen to the soundtrack on Matt's Soundcloud, Dire-Beats.




I don't have much free time these days, but I wouldn't mind adding a few new mechanics and some more content when I get a chance.



Tuesday, May 7, 2013

Xbox Controller Input Wrapper for Unity




After setting up Gamepad input in Unity for around the 5th time, I decided to write a wrapper class to avoid future suffering. The class mimics the Input.GetButton() and Input.GetButtonDown() functions.

I also added a GetState() function, similar to XNA, which returns a snapshot of the controller's state.

Caveats:
  • You will need to replace the InputManager.asset file located in the ProjectSettings folder with the one contained in the package.
  • GetButtonDown() and GetButton() cannot be used to check the up/down/left/right buttons because Unity treats the dpad as an axis.


Wednesday, May 1, 2013

Procedural Tree Generation




I thought I should post a link to my Honours thesis for posterity, considering it swallowed at least 3 months of my life. My research formed one third of a project to generate a 'realistic' 3D model of a tree from a directed acyclic graph. I focused on generating the mesh for the trunk and branches, while my two teammates researched bark and foliage generation.

Thursday, April 25, 2013

Simple C# Unity Serializer

I wrote this class to serializes common unity types into and out of a byte array. Its nothing fancy, but its handy for networking player state.

     //--- Serialize ---  
     UnitySerializer srlzr = new UnitySerializer();  
     srlzr.Serialize(new Vector3(4, 8, 6));  
     byte[] byteArray = srlzr.ByteArray;  
   
     // send byte array somewhere..  
   
     //--- Deserialize ---  
     UnitySerializer dsrlzr = new UnitySerializer(byteArray);  
     Vector3 point3 = dsrlzr.DeserializeVector3();  

It supports Vector3, Vector2 and Quaternions, as well as the common primitives and its easy enough to extend to extra types. Just be sure to deserialize the data in the same order it was serialized. Check out the Example() function at the bottom to see how it works.