kyuplex Game Development
A blog about the development of a 3rd person 3d puzzle shooter.
Saturday, April 20, 2013
キュウプレックス
'kyu' is the English romanization of a common Japanese bi-syllable, きゅ
This sound can have many meanings and Kanji associated with it, depending on the context.
My particular favorite is きゅうき pronouced /kyu:ki/ (IPA)
吸気
The first character can mean 'to inhale; to sip'
The second 'mind; mood; spirit'
And together the meaning becomes: inspiration
Saturday, April 13, 2013
Migration to git
I've deemed it beneficial to learn git. And as kyuplex nears it's beta version 1.0 I want to encourage open-source collaboration. Thus I have begun to migrate kyuplex development to github. I am still learning git and will continue to keep the code.google project page up-to-date, but I want to start moving towards github as the primary platform for kyuplex.
github.com/orInge/kyuplex
Monday, April 8, 2013
kxFracture refactored!
My intention was to move the fracture method out of the kxFractureCube class to make it non-member non-friend. But once I started reviewing the method I immediately saw inefficiencies and potential expansions. First I refactored it to compensate for kxBox independent dimensions. Before, if the box wasn't a cube, it would break. Fixed that. Then it was trivial to change the method's parameter from an integer to a vector3 so you can now fracture the box independently per axis. That is, you can have it fracture in half on the local X axis, into thirds on the Z, and not fracture in the Y, etc. Here, a picture will help:
before kxBox::Fracture( 2 ); |
after: kxBox::Fracture( vector3df( 4, 2, 1 )); |
Sunday, April 7, 2013
kxBox->setColor( const SColor& newColor );
So in the interest of moving forward faster, as well as in keeping with the kyuplex philosophy of simplicity, I've refactored the color part of kxBox. It came about during my development of the kxBoxPlugin maxscript rather accidentally because for some reason I couldn't get a regular irrlicht material to render any color other than white, even though I changed it's DiffuseColor, AmbientColor, SpecularColor properties. It just kept rendering white. The way I was getting colors before was with simple png textures that were just small solid colors. Inefficient I know, but it was an ad hoc solution for the time being. Ultimately I did want to set colors in kyuplex by value, and keep textures and materials to a minimum. Now that my plugin script is shaping up, I'm quite happy with this color picking pipeline +
Friday, April 5, 2013
kxBox, shadows?, and kxBoxPlugin
So first I refactored my kxCube class to contain an IMeshSceneNode* to a proper irrlicht style mesh because I wanted shadows. Took a hour or two to get shadows working but eventually got it. Cool! Shadows! But aesthetically it wasn't working. I thought shadows would help orient the player, but they looked odd with the way my levels are architected and they sucked up fps. Fps I want to save for physics and gameplay.
Yet another refactor of my base class! Hooray for refactoring : )
Can't promise this is is a final version of the class, but here is the update:
All kxCube's have now become kxBox's. Cube implies that all dimensions are the same, but I wanted more flexibility! I refactored the constructor to take a vector3df for dimensions. Modifying the custom mesh was easy but refactoring the Fracture function was trickier. Surprisingly I got it working rather quickly though +
Also I inserted a kxNode class between irr::scene::ISceneNode and all my classes. The kxNode class carries the program context acquired with the singleton instance. This avoids code duplication and obfuscation in many of my classes and gives them access to global textures, sounds, the physics world and scene manager.
My next step is to move the Fracture method from the kxFractureCube class to a method of the kx base game class (non-member non-friend) and dispose of that class altogether. Rather I want to integrate rigid bodies and collision objects into the kxBox class. This was inspired round-a-bout when I went to write a plug-in for 3ds that extends the 3ds native Box class. Speaking of...
Lastly I wrote a proper plug-in for creating kxBoxes in maxscript! Took me a couple days, was having issues with the class and super-class ID's and error-generating typos in the examples copied from MaxScript's documentation. Finally got the base prototype the way I want. Now to add those properties I mentioned earlier; isCollisionObject, isRigidBody
Then perhaps I'll write a material plug-in as well ++
Yet another refactor of my base class! Hooray for refactoring : )
Can't promise this is is a final version of the class, but here is the update:
All kxCube's have now become kxBox's. Cube implies that all dimensions are the same, but I wanted more flexibility! I refactored the constructor to take a vector3df for dimensions. Modifying the custom mesh was easy but refactoring the Fracture function was trickier. Surprisingly I got it working rather quickly though +
Also I inserted a kxNode class between irr::scene::ISceneNode and all my classes. The kxNode class carries the program context acquired with the singleton instance. This avoids code duplication and obfuscation in many of my classes and gives them access to global textures, sounds, the physics world and scene manager.
My next step is to move the Fracture method from the kxFractureCube class to a method of the kx base game class (non-member non-friend) and dispose of that class altogether. Rather I want to integrate rigid bodies and collision objects into the kxBox class. This was inspired round-a-bout when I went to write a plug-in for 3ds that extends the 3ds native Box class. Speaking of...
Lastly I wrote a proper plug-in for creating kxBoxes in maxscript! Took me a couple days, was having issues with the class and super-class ID's and error-generating typos in the examples copied from MaxScript's documentation. Finally got the base prototype the way I want. Now to add those properties I mentioned earlier; isCollisionObject, isRigidBody
Then perhaps I'll write a material plug-in as well ++
Saturday, March 30, 2013
Release early and often!
In an article I read about game development, it was recommended to release early and often. So even though I am hesitant to release such an early dev build, I did anyway. You can go to the Google code project page and download the latest build for Windows only. Linux and Mac builds will come later.
Download the file named:
kxRelease0.82.zip
Hope you enjoy, please send feedback to oringe@email.com
Download the file named:
kxRelease0.82.zip
Hope you enjoy, please send feedback to oringe@email.com
Sunday, March 24, 2013
Hard work
In an interview at GDC 2012, Alexander Bruce aka "Demruth" is asked to sum up game development with one word. He responded with "Hard work"
True.
Here is my TODO list, (not including TODO's littered throughout the code)
True.
Here is my TODO list, (not including TODO's littered throughout the code)
Subscribe to:
Posts (Atom)