We have finally got the new site up and running, and we have moved everything over to it! You can track all of NimbleBit's activities on http://NimbleBit.com
Our new RSS feed can also be accessed at http://feeds2.feedburner.com/Nimblebit
New Blog!
New Forums!
New Chat!
New GAMES!
So head on over!
This blog will no longer be updated. You will be re-directed in 5.. 4.. 3.. 2.. 1...
NibleBit New Site! Update your bookmarks and RSS feeds!
Posted by David Marsh at 4:10 PM 1 comments
NimbleBit prepping for a big move . . .
... to a brand new NimbleBit world headquarters on the web! Brian has been smashing the heads together of technical kinks in Zero Gear, destroying bugs like a human RoboCop whose prime directive is to destroy all bugs. I have been prepping our new nimble nest to make room for all the extra content we are going to have as a result of a very special addition to the NimbleBit crew. More games! More games! More games!
here is a sneak peek:
Posted by David Marsh at 5:10 PM 1 comments
Global Game Jam Postmortem
- A complete play session must always last 5 minutes or less.
- Have ONE of the following adjectives to incorporate in your game: thin, evolved, or rotating.
- Very little team conflict, everyone was on the same page.
- Game design and scope, we didn't attempt to compete with Halo 4.
- Iteration, we used XNA and SVN which allowed us to quickly iterate game ideas.
- Communication, everyone was in the same room and was able to work together when they needed as well as, for the most part, leave somebody alone when they were working on a vital aspect of the game.
- Fun, we weren't struggling to make the game so we were able to have fun and enjoy the experience.
- Level format + pipeline: some more thought up front in our level pipeline would have saved a lot of time later on.
- XNA: it was great overall and I do not regret using it, but I did end up spending a large amount of time doing a few things that should not have taken so long (I speak only for myself on XNA).
- Sound code: the actual audio was great but we had some issues later in the project related to stopping and starting a music track. It wasn't the end of the world, but it was annoying.
- More time, the event was only 48 hours but because of the previously mentioned sports event, we had more like 36 hours, that meant we had less time to sleep.
- More art help, we had only 1 dedicated artist and he definitely had too much to do, one more dedicated artist would have been nice.
Posted by Brian Cronin at 8:17 PM 6 comments
SuperProfiler Speed Improvement and Bug Fix
Just a quick update. Here is the change list:
- Changed from using std::string to using const char * to improve overall speed
- Changed SuperRoot::PopProfile() and SuperStack::Pop() to accept a name parameter, this helps SuperProfiler to find any mismatches in pushes and pops
- Added SuperException which is thrown if an unmatched pop is detected (really useful actually)
- Added SUPER_PROFILE_PUSH and SUPER_PROFILE_POP macros which are useful if you want to access SuperProfile from a scripting langauge that doesn't support RAII (cough, Lua, cough), Still use SUPER_PROFILE whenever you can however
- Fixed a bug when there was no SUPER_PROFILE in a root parent function call (such as a main function). I would suggest not profiling a main type function, anything that only returns at exit
Posted by Brian Cronin at 10:21 AM 0 comments
Labels: code
SuperProfiler Update and Screenshots
I just updated SuperProfiler with support for comma separated value and XML output as noted here. There were a few other small changes as well.
This is an example of what you can do with the CSV output if you load it into a spreadsheet program:
And here is an example of what you can do with the XML output if you load it into an awesome program like the free XML Marker:
You can imagine how useful this can be I am sure.
Some things I plan to add in the near(ish) future are:
1. Real time data (view the performance of your code while running it!)
2. Per frame recording
3. SPIKE detection (just a way to mark a recorded frame specially if it took more processing time than the average)
Posted by Brian Cronin at 12:51 PM 0 comments
Labels: code
SuperProfiler to the rescue!
SuperProfiler is a library I wrote to help us track down performance issues in Zero Gear. It is open source so anyone can use it (and hopefully help make it better!).
You simply place a piece of code at the start of any function you want to profile and SuperProfiler takes care of the rest.
An example...
void SomeFunction2(int var1)
{
SUPER_PROFILE("void SomeFunction2(int var1)");
var1++;
}
void SomeFunction1(void)
{
SUPER_PROFILE("void SomeFunction1(void)");
int lala = 2;
SomeFunction2(1);
}
void main(void)
{
SomeFunction1();
SuperProfiler::TextOutput textOutput("SuperProfilerResults.txt");
SuperProfiler::Root::OutputResults(textOutput));
}
and in SuperProfilerResults.txt is...
Function List | Total Run Time=0 | Total Profiled Function Calls=2
-----------------------------------------
void SomeFunction1(void) | Total Time=0.00 | 50.00% of time | Total Calls=1 | 50.00% of calls
void SomeFunction2(int var1) | Total Time=0.00 | 50.00% of time | Total Calls=1 | 50.00% of calls
Call Tree
-----------------------------------------
ROOT
void SomeFunction1(void) | Avg Time=0.0000 | Times called=1
void SomeFunction2(int var1) | Avg Time=0.0000 | Times called=1
Simple and easy. Check out the Google code site for all the juicy details.
Let me know if you find it useful!
Posted by Brian Cronin at 10:29 PM 8 comments
Labels: code
Progress on Space Jump
Did a little more work on the obstacle-type course in between other things. Here is a little stitched together panorama of it (click for big)
Posted by David Marsh at 12:34 PM 0 comments
Labels: media
Global Game Jam result: Coopetiton
This weekend I (Brian) participated in the Global Game Jam in San Francisco.
Posted by Brian Cronin at 9:20 PM 1 comments