Monday, May 31, 2010

Robocalypse - Beaver Defense is out

Updated 07.06.2010
Nintendo Life 8/10
This is a fun tower defence game with enough unique features and strategic elements to keep it interesting and a sense of humour to set it apart from its competitors. While it suffers presentation-wise, don't let that throw you off as for those who enjoy the genre, this one's a must-have.

IGN 7/10
The silly style's still the same, but this is a whole different kind of Robocalypse.



Robocalypse - Beaver Defense is out! I was the lead programmer on this project and also did some management. It's a "tower defense" style game for Nintendo WiiWare.

"Set in a world of wise-cracking, battling robots, Robocalypse - Beaver Defense offers madcap weaponry and uproarious destruction in a “tower defense” style game. Players create and strategically position towers to annihilate waves of enemy robots, while player-controlled Hero robots act as mobile weapons units, bringing heavy firepower to all areas of the battlefield. Players can experience the hilarious Story Mode or face the Beaver's never-ending supply of robots in Survival Mode."



Screenshots




Interview with our producer, Alan Martin


One more interview with Alan
Official site
Nintendo press release

Sunday, May 30, 2010

Uninitialized pointer and member functions

A very unpleasant scenario possible when you forget to initialize a pointer to a class. Let's say, we have class CBase with a member function which doesn't use member data, i.e. it doesn't need this pointer.
class CBase
{
int i;
public:
void f() { std::cout<<"CBase::f"<<std::endl;}
};


And after that you write the following code somewhere:

CBase* p = NULL;
p->f();


This is an undefined behavior by the Standard. But sometimes it works. Visual Studio 2008, for example, generates a working code. The function call is resolved during the compilation, we don't use this. And you remain oblivious for a long period of time. Here is a scarier looking example
((CBase*)0)->f();


But when you try to use this pointer, you program "crashes". Examples:
class CBase
{
int i;
public:
virtual void f() { std::cout<<"CBase::f"<<std::endl;}
};

class CBase
{
int i;
public:
void f() { std::cout<<"CBase::f"<<std::endl; i=0;}
};


All this leads to very interesting, hard to find bugs.

Links:
comp.lang.c++.moderated - Functions that don't use this, called with uninitialized pointers

Friday, May 14, 2010

The C++ Lands. With sources.

Updated 3/9/2017: The C++17 Lands map is here, which is up-to-date with the most recent Holy Standard changes.

This is an old post, I decided to repost this translation here and added sources.

People ask me about copyrights. I don't mind if you use it somewhere... anywhere you like. But some of the elements of the map were taken by Jim from clipart galleries, I don't own copyrights on them.


The map is very popular all over the Internet. It's discussed on reddit and boingboing.


C++ language is quite complicated. It looks like a total mess when you start studying it. That's why I tried to draw a scheme of it. My drawing was real crap and I asked a friend to help me. And now, thanks to Jim, we have a nice and simple C++ language map.

The current version. With templates and Qt. 1600x1110. And for printing 3298×2288.


The previous one. With a typo.


Old version in higher resolution: 2702x1886

Sources: the map and background.

Thursday, May 6, 2010

Paris Game AI Conference 2010

The annual Paris Game AI Conference will take place in June, 23-24th and I'm attending. I hope that Katla will not decide to erupt these days.

It's a small event dedicated entirely to the Game AI. It's quite popular, all tickets were sold out in the end of April. After that Alex Champandard, who organizes the conference, found a new, bigger place. And now he has a new problem - to sell all new tickets.

Thanks to Google I can look at the place from my Moscow flat.


The conference is in English. Program is here Program Highlights. Twitter hashtag is #AIGD10.

Wednesday, May 5, 2010

Book "Debugging"

Debugging: The 9 Indispensable Rules for Finding Even the Most Elusive Software and Hardware Problems is written by David J. Agans. There aren't a lot of books about debugging and this book is one of the best. It's rated high on the Amazon.com, no surprises here. It's fun, simple and easy to read. It contains hardware debugging examples, software debugging stories and some real-life debug adventures.

I didn't found any new information in this books. I've already read all this before in blogs, some principles I've figured out myself. But still it was useful to refresh my memory.