Jump to content
  • Advertisement
  • entries
  • comments
  • views

About this blog

Still making games...

Entries in this blog


A quick update...

...A bug was found in the peer review process: save game data could become corrupted immediately after the game was bought. It's corrected now, and Bennu is back in peer review (link only works if you have a creators club subscription). It's now at 50% in the peer review process, I think that means it needs 4 more reviews, not sure.

UPDATE: A rarely-occurring bug was found and Bennu was pulled out of review. At least 2 more weeks... :(




Status update...

- The site is up and running at www.onceabird.com. Still not everything in, but close.

- Here's a video showing some new particle effects, where the fire travels from Bennu to destroy the blocks.

- Bennu is in the final peer review process. If it passes (fingers crossed), it will be available immediately.




April came, April went...

...And Bennu isn't ready yet. The guys over at XNA Creators Club discovered a ton of bugs and gave a lot of useful suggestions, most of which I'm done implementing. I hope Bennu is ready this month... In the meantime, here's the debut trailer at gametrailers.com.




Bennu submitted for playtest!

So last night my brother, who lives in the USA, submitted Bennu for playtest in the Community Games.

I changed the cover because the previous one didn't work that well when resized:

Some screenshots:

And the thumbnail:




Easy now...

I sent Bennu to my older brother so he could test it and he found it too difficult, so I'm adding an easier difficulty setting. He also suggested a view of the level before it begins would be useful to the player, so he knows the level boundaries. Video here.

In the easier difficulty setting, when Bennu falls in the water, instead of dying, he is grabbed by a hippo that throws him back up. Here's the hippo image:




Bennu "box" art

To submit a game to community games you need to create "fake box" art to display on the xbox marketplace. Here's Bennu's:

EDIT: New version




The end is near...

...Bennu is almost ready. All major bugs are fixed, all major features are implemented, all levels and cut-sequences are completed. Here's a link to a movie of the final main menu layout. On the 1P and 2P screens you get a map with level selection and the player name(s) on the top right, on the options screen you have the screen size tweaker (to avoid problems with different TV sizes) and the sound levels tweaker. Finally, on the new Extras screen you have the highscores as well as some not yet seen extras.

If all goes well Bennu will be on the 360 on April. :)





Bennu, now with more Bennu. I still have a few bugs to iron out, but it looks like fun. ^^ Video here.

EDIT - The only reason the Bennus don't move at the same time is because I'm playing alone and switching controllers.




Before and after

So my middle brother finished doing the new backgrounds and also polished the blocks and Bennu's chain:

And the main menu. And the buttons.

All that stuff you hear about how you should get other people to play your game worked for me, but it's also nice to have an outsider's perspective on your art. :) Like the gameplay, when you've been working on it for too long, you stop noticing the flaws.

Click here for a video of the new stuff. It's long again.




Site mock-up

I've been correcting little bugs on Bennu,changing little graphic details and integrating my brother's backgrounds in the game. I've also been working on the website, here's a mock-up:





I've been working on moving color dispensers. Right now Bennu has 27 levels and won't have much more. I'm doing a final boss and my brother is redoing some backgrounds. After that Bennu should be finished in 2-3 months as I work on some extras.

Click here for a video of some of the new levels. It's about 24 megs and 3 minutes long, so if you feel sleepy leave it for some other time. ^^




Level selection

My brother suggested I should add some kind of level selection to Bennu that allowed the player to skip levels. I agreed it was an important issue, because most levels have different solutions, introduce new gameplay elements or require the player to further develop his basic game skills. If the player didn't manage to complete a level right now he couldn't play another and figure out the first one later.

After playing Braid I figured the best solution was to copy... I mean, use, the same pattern of level selection. In Bennu, each world will have a different number of levels, and to unlock the next world the player will have to complete half of the levels on the current world. On each world the player will be able to play the levels in the order he prefers (although obviously the first levels will be easier than the last ones). The exception will be the boss levels, which the player will only access after completing all the other levels in the current world. This last behaviour is yet to be implemented.

The new level selection was implemented on the game map. Below each map location, the levels are represented as spheres close to a path that represents the steps the player will have to take to finish each world. When the player completes a level its sphere will be placed upon the path, while the incomplete levels remain outside the path.

Click here for a video.




It's Bennu!

So Bennu finished in the top 20 in the DreamBuildPlayContest!.

I wasn't expecting this after the top 4 were announced yesterday, but Bennu was even played at the Xbox Live Community Games Launch Event... I didn't even get an e-mail about this.

Also, the competition wasn't just hobby game developers: the first-place winners were a government-sponsored team of four. The second-place team were two professional game developers. So, I'm pretty happy about the result all things considered.





My brother suggested that I should display a chain instead of the balls I previously used to show the connection from the Bennu to the object it's swinging from. Click here for a video.

I also got major performance improvements from switching my broad-phase collision algorithm. I was previously using a modification of the sweep and prune implementation that came with the Farseer Physics Engine. In the way I was using sweep and prune, objects were being sorted in an array by their lower and upper boundaries along the X axis.

In my specific case I have a lot of objects, but most are static (such as the blocks and obstacles), so the array processing got expensive on more complex levels.

I switched to a grid-based collision algorithm, where all static objects are placed in a two-dimensional matrix where each position corresponds to a sub-square of the level, containing the list of static objects that are present in that sub-square. An object is placed in every sub-square from his lower (x,y) boundary to his upper (x,y) boundary, as depending on the object's dimensions it can belong to more than one sub-square. The non-static objects are kept in a list apart, and collisions are only checked between each non-static object and the static objects in the sub-squares the non-static object is currently located in.

Right now the collisions between each pair of non-static objects are all being checked, since I have a small number of them, but these can be optimized apart.




Another trailer....

...So DreamBuildPlay as ended and since the deadline was postponed two days I did an extended trailer:

Bennu Trailer 2

So far the contest has 250 entries in the gallery without the last-time entries, so it should reach 300!

EDIT - Click here for a higher resolution AVI.




Bennu trailer - DreamBuildPlay

The DreamBuildPlay deadline is today. I spent the last month and a half increasing the game performance on the 360. One of the requirements for submitting a game was a video of it, which you can check here.

The trailer is poorly edited, but I think that made it (unintentionally) funnier. So, anyone else submitted a game?




Bennu on the 360...

I had a plan that if Bennu wasn't selected for the PAX 10, which it wasn't, I would participate in this year's DreamBuildPlay contest. But this year's DreamBuildPlay contest is for the 360 only, so I figured that since Braid was out too, I'd buy a 360. :) And by the way, Braid is totally worth it.

I was curious about how much effort it would take to port the game to the 360. The steps I went through may help someone in the same situation (some of them are explained in more detail in the creator's club web site):

1. Used XNA Studio's option to create a copy of each project for the 360, which gave me new compiler errors, as expected. This works well, the projects share files but you have to add new files to each project separately.

2. Added to each 360 project the 360-specific xna framework dlls (included in the XNA directory in Program Files).

4. Replaced references to libraries not supported on the 360. I was using the Application class in the System.Windows.Forms library to change the current system culture so the decimal separator employed on data files wouldn't get messed up on other systems. It was replaced by Double/Integer/whatever.Parse with an invariant culture. Timers also aren't supported, so I did a basic Timer class of my own.

3. Added a XBOX360 flag to each 360 project so I could use conditional compiling instructions for the platform. With this flag I was able to keep the mouse/keyboard code in the PC generated code but not on 360 code.

5. Removed the encoding specification from the XML files I load game data from as XNA on the 360 doesn't support encoding specification. Luckily I wasn't counting on a specific encoding.

6. Purchased a Creator's Club gold membership and downloaded XNA Game Connect from the XBOX live games list. I'm not sure you need the gold membership to do this, but I want to check out other games anyway.

7. Added the 360 console to XNA Game Studio on the pc, just needed to input an identification code so it knows which console to upload the game to (the game is uploaded through the internet without any direct connection needed between the pc and the console).

8. Deployed the game to the 360. Each time you build the game it checks which files were altered and uploads them, which is pretty neat.

By then the game was running on the 360. Which was freaking cool.

On the positive side, I was surprised I had to alter so little of the game code, specially the file input/output code. Also, the game looked good on a small tv, the colors where much brighter than on my LCD monitor.

On the negative side, I'm having performance issues on the 360. This is a common issue, reported my many developers. This is where I am now: Every 5-10 seconds, the game freezes for a second or so. I think it's the garbage collector, but I'm still running tests. Here's a collection of resources I've gathered on this subject:

Managed Code Performance on Xbox 360 for XNA: Part 1 - Intro and CPU
The cost of value types in .NET Compact Framework
XNA Framework Remote Performance Monitor for Xbox 360
Understanding XNA Framework Performance
Twin paths to garbage collector nirvana
Foreach, Garbage, and the CLR Profiler




Frog continued...

After finishing the frog sprites, I used the Farseer Physics Engine to include the frog in the game.
In order to make the frog feel real each body part was added as a separate entity and revolute joints were employed to connect the body parts to each other in the positions shown below:

A revolute joint connects two bodies but doesn't constrain their relative angles, which means that after adding them the frog's legs and tongue rotated like the frog had every bone in his body broken. However Farseer also provides angle limit joints, that constrain the angle between two entities. These limits can be changed after the simulation has started.

Click here for a movie showing the leaping frog. Initially the upper and lower limits of the angle joints are set to zero, so the frog is completely rigid. Each time I press a key these limits are set to something close of a real frog and an upwards force is applied to the frog body, thus making it look like a leap. Another key sets the joint limits to the initial values. It's all Farseer's work, really.

Next step is controlling the frog's leap so he'll jump from platform to platform.





I'm doing an animated frog for Bennu, so I started by doing the frog sprite first.
Below are the steps the sprite went through in its creation.

1. I searched the net for reference pictures and drawings.

2. Paths were used to create the main shapes of the frog...

3. ...and the animated parts were left on separate layers so they can be used as separate images.

(These separate images will be rotated and translated to animate the frog)

4. Shadows and highlights were used to make the frog more 3-D (the amulet on the top-right of the reference images was the main source for this)

And it's (mostly) done. :)




More FX

I've changed the blocks' appearance and added some particles effects to give the idea the Bennu is burning the blocks away. Video here.




Hey kids...

...I guess I can say "kids" now, since I'm almost 30. >

I've finished most of the artwork for the third "world", the egyptian Underworld, and I've also been working on new levels. Click here for a vid of a new level in the Underworld.

Right now I have 13 levels, I want at least 30. Making a level is fast once I get an idea, the problem is getting it. :)




The Papyrus Swamps

Click here for a video of a level on Bennu's second area, "The Papyrus Swamps".

To create the trees in the background (and the papyrus) I used the classes that were created for the game intro. Each tree is composed of a trunk, lianas and branches.

When a tree is generated, I randomly pick 3 to 6 of the 6 maximum branches and rotate them
around the point where they're attached to the trunk. I also scale and rotate the whole tree randomly.

I submitted Bennu for the PAX 10. I'm not expecting anything to come out of this, because there are bigger teams working on their games full-time and I'm just doing Bennu after work - I'm a programmer for a stock-broker.

The demo I sent featured the intro, the main menu and 7 levels, 3 from the "Lost Temple of Abu Simbel" area and 4 from "The Papyrus Swamps".

I expect Bennu to be ready this year if everything goes right.



  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!