D2P Games
Discover our games:
D2P Games is an independent video games development studio based in Montreal. You can follow our progress from this blog ! About us


Weekly News #22 : Demo released!

By Paul on September 17th, 2010, posted in Reckless Squad

Today is an important day for Reckless Squad: the demo is out!

You can download it freely on the game’s page: http://www.d2p-games.com/reckless_squad/

Check it out and don’t hesitate to share it with other people!

Geoff Gibson of DIYGamer.com was nice enough to write a preview of the game: http://www.diygamer.com/2010/09/great-big-convoy-reckless-squad-preview/

“Overall, Reckless Squad is a fun game. I thoroughly enjoyed playing my preview version
“[...] I’m sure they’ll have no problem convincing people to buy their simple, yet addictive, convoy RTS.”

Pretty cool, isn’t it?

If you are a video game journalist, don’t hesitate to contact us. We’d love to send you a version of Reckless Squad and answer all your questions. Now more than ever, we need you to talk about the game and spread the word.

Finally, it seems that you like the technical articles, particularly on Reddit and Tweeter. Is there a particular subject you want us to address?

Share on Facebook  View Comments


How to optimize your game

By Dri on September 3rd, 2010, posted in Technical

Optimization is a special keyword in the world of video games. If you go to player-centric websites chances are you will hear it a lot.

Video games are interactive simulations and simulations are a very specific type of software. You don’t program a game like you program a business app. Games need to update themselves over time, not only when the user click on a button, and this can quickly lead to performance problems.

Here are some tips about optimizing your game based on what I experienced during the development of our game, Reckless Squad.

1.     Profile

You can’t just optimize all your code, it’s not realist. You don’t have time for that and you will needlessly obfuscate your code base and make it harder to maintain.

So how do you decide which parts of your code need to be optimized?

Enter profiler. A profiler can take many forms, but its purpose is always the same: telling you how long the different parts of your code take. All the major IDE ship with one, and if you don’t have one you can always do it manually with the good old time() function.

Start by profiling on a high level, is it your update() or your draw() function that takes this much time? Once you know you can be more specific and see if it’s updatePlayer() or updateUserInterface().

2.     Don’t run it

Now that you know what is slowing down your game, you can start optimizing it. Here is the most effective and easy way to make a function run fast: don’t call it.

If it’s not running, it won’t take time, it’s obvious!

Okay, it’s not that simple, you wrote this code for a reason, right? You still need to run it, but maybe not that often.

Reckless Squad is a RTS game, with a lot of units, all updating at once. I quickly discovered that the AI was what took the most time. I asked myself: “is it really important that the AI run at 60Hz?” The answer was obvious: no.

So instead of running the AI code every time, I do it less often. Performances increases.

There is a problem with this approach: every time the code does run, you will experiment a sudden performance drop. Spreading the execution of this function across the frames will prevent this.

In my example I only update the AI of a fragment of the unit list each frame, allowing a sort of load balancing.

3.     Know your platform

Every platform, language or SDK have its little secrets. Knowing some of them can be interesting from a performance standpoint.

For Reckless Squad we’re working with Lua. Lua is already a fast language but extra-performances can be obtained if you know how it works. There is some good information about it on the wiki.

To give other examples, using StringBuilder to concatenate strings in .NET or calling reserve() on the C++’s vector are other good practices specific to their platform/language/framework.

Similarly if your platform has 2 cores, it’s a good idea to use them effectively. And if you’re working for console or mobile devices, knowing your platforms and its pitfalls is increasingly important.

4.     Think like a computer

Object Oriented Programming is cool. It’s easy to learn and to use because it naturally maps our way of thinking as humans. My computer in front of me is an object, it’s actually in a turned on state and it execute various methods like shutting himself down. It’s seems very natural to think like this when you code too.

However it’s not how computers work. Computers are calculators, processors. They take a bunch of input data and apply to them a specific transformation to get different output data.

If you can think this way too, you can present the problem in a more computer-friendly fashion.

I won’t go into details about it, because others had already done a great job:

Actually, for Reckless Squad we use OOP almost everywhere. Except in a few strategic places where performance is critical.

So I’m not saying you have to toss OOP out of the window, but we have multi-paradigm languages for a good reason: don’t hesitate to change your approach depending of the problem.

5.     No magic

Despite a popular belief among some players, optimization is not magic. No amount of optimizations will ever make Crysis work on a VoodooFX.

You have to draw the line, to choose a minimal configuration and stick to it. If the game runs fine on this platform, then you’re good, you don’t need to optimize anymore.

Maybe you’ve spotted some places where some optimizations can be done, but don’t do it. If it ain’t broke, don’t fix it.

You’re making a game, not a benchmark.

Share on Facebook  View Comments


Weekly News #21 : Mac OS X Version !

By Paul on August 30th, 2010, posted in Reckless Squad

The last week was dedicated to bug tracking. We’ve finished the whole game and fixed all the bugs we’ve found so far. The next week will be dedicated to localization and public relations.

I wanted a break so I started the Mac OS X 10.6 port of the game engine. As all the gameplay is done in Lua, the hardest job was to tame Xcode and Mac OS X. In order to make the game working, I had to build some libraries. I used Macports for Lua and Boost, it saved a bunch of time. For the other libraries, I created my own project in Xcode and built Luabind, and SFML manually.

And the result is a fully working version of the game engine, and Reckless Squad on Mac OS X :

At the end of the week, we plan to contact Valve Software to try to publish Reckless Squad on Steam. Fingers crossed.

Share on Facebook  View Comments


Weekly News #20

By Paul on August 20th, 2010, posted in Reckless Squad

Because we are currently working on the last milestones of the game, all our weeks are alike.
When we don’t track a bug, we are working on content. We added some new situations, missions or achievements in order to provide the best experience possible.

Dri designed a new boss, some kind of post-apocalyptic-middle-age biker. Although he doesn’t have a Chopper (yet?), he’s really badass!

Dax added a very useful feature, allowing the player to know the convoy position when it’s off screen.

This bubble show you the position of your convoy even when it's not on screen

Franck worked on a mission that means a lot to him. He designed a Tower Defense-like mission, with all the characters of the game. You can expect a very high challenge! Take a look:

august20_003

I’ve spent a lot of time on PR, I’ve sent some e-mails, improved the website design helped by Dri, or updated Twitter, Facebook and IndieDB. We have had good results, for example, the last article “Generating maps procedurally” has been read 325 times the first day. It represents half of the last month visits! We still have many things to do in public relations. Building a community around our game is my main goal for the next weeks.

Share on Facebook  View Comments


Generating maps procedurally

By Dri on August 18th, 2010, posted in Technical

… the Reckless Squad way.

For Reckless Squad we wanted the game to be highly re-playable, so we wanted to generate on the fly and randomly a lot of things. This way, the game keeps re-inventing itself.

It’s also a big help for us as developers, because we can’t afford to create all these maps by hand.

So how does our algorithm works?

Read the rest of this entry

Share on Facebook  View Comments


Weekly News #19

By Dri on August 13th, 2010, posted in Reckless Squad

This Dragon is angry (and hungry)

We are currently polishing the game and adding more content to it. It means new missions, new enemies, new situations and new achievements.

The AI Director was given a complete revamp and can now handle 3 level of difficulties. The units’ AI and the way they move was also improved.

We implemented the final boss of the game, the deadly Dragon. You must attack it to distract its attention from the convoy, but if you’re skilled enough, you may even be able to kill it.

Of course, doing so is rewarded by an achievement. There is currently 37 achievements in the game and we’re not short of ideas yet.

The hardest (or longest?) one is the trendy “Zombie Genocider” : you have to kill 53,597 zombies to achieve it. Yeah, it’s one more than Prototype.

37 achievements, and counting!

Other than that, I’ve managed to optimize the game significantly, to the point it can now manage a huge amount of units at once (just give a look at the minimap) :

Looks like I'm surrounded

Share on Facebook  View Comments


Weekly News #18

By Dri on August 6th, 2010, posted in Reckless Squad

The development continues !

The first, big news, is that the trailer is available :

In this trailer you can hear one of the song from John Imbler. You can also see some new environments, like the forest.

We continued to add content to the game, here are the main game modes :

  • New game : the normal mode, chooses a random story, generates random maps and uses the AI Director to create a unique adventure based on the way you play. See our previous weekly news for more informations about it.
  • Missions : some hand-crafted situations where you must complete given goals. The purpose of the first missions is to learn how to play. But the others are more difficult and require strategy.

Defeat the enemy's champion while protecting your king

  • Arena : we talked about it last week : you have to survive against endless waves of opponents. The longer you stand, the better your score.
  • Achievements : again, we talked about it before, they’re little objectives that reward you after being completed. You’re probably already familiar with them.
  • Library : the center of all knowledge, contains articles about the different units and the world of Reckless Squad.

As you can see, there is a lot of things to play with. We also added a lot of new enemies, like emo-Vampires, Witches, Werewolves, Bigfoots, Fire Spirits, etc.

Working on the actual content instead of the technical subtleties feels good and inspiring.

august06_02
Share on Facebook  View Comments


Weekly News #17

By Dri on July 30th, 2010, posted in Reckless Squad

Hi, it’s been a while since our last news !

I want to thanks all the beta testers that played the game and sent us some feedback, it has been really useful, and it helps us understand what you expect from Reckless Squad.

It’s now time for us to go back to work, and we have some news for you !

First, our team grew to include Franck, one of our classmate, he will help us with the programming for the 3 months to come. Please, say “hi” to Franck !

Franck is currently working on the tutorial for Reckless Squad, the most-wanted feature from the play testers.

We also added an infinite mode, those things are trendy these days, but it’s amazing how well it suits the gameplay of Reckless Squad. Basically the cart stays at the center of a big arena, and you must protect it against unstopping waves of enemies. After 10 waves, you can buy new units and the fight resumes, with even more opponents !

At last but not least, the composer John Imbler is working on Reckless Squad’s soundtrack. He’s very talented and dedicated, and the music of the game is coming along nicely. You should be able to hear a sample of it soon and be as amazed as I am.

See you next week !

Share on Facebook  View Comments


Reckless Squad : Beta Test

By Dri on July 5th, 2010, posted in Reckless Squad

Hello, we have good news for you !

We are now ready for a second beta-test phase, and we need your help !

Basically we want you to play the game and to send us your feedback. The goal is to gather suggestions from the players and discover the problems in the gameplay as early as possible.

It’s pretty simple to attend : just send an email to contact@d2p-games.com with “Reckless Squad beta” as a subject.

We will definitely appreciate if you describe your background as a gamer a little, so we can figure out which kind of gamer you are. It’s important for us to have feedback from people with different backgrounds.

We don’t have a fixed limit for testers, but we want to keep the number of testers manageable, so it’s possible that we won’t accept everyone.

If you’re accepted, we will reply to your email with the instructions to download the beta version of Reckless Squad.

The beta test will end July 26th.

The beta-test version is available in French and English for Windows only.

We’re counting on you !

Share on Facebook  View Comments


Weekly News #16

By Dri on June 26th, 2010, posted in Reckless Squad

We had school exams this week, it took us most of our time, but still we managed to implement Missions. In Reckless Squad, Missions are small objectives that you must achieve to gain rewards.

It’s the principle of achievements, trophies, or whatever you call it.

Here is a screenshot of the menu listing all the missions. We are currently imagining new missions, so we will add a lot more missions before the release.

june25_001
Share on Facebook  View Comments