Dynamic physics objects
We've had the Open Dynamics Engine integrated into the engine for a while now, but we were just using it for fast sphere-mesh collision checks for the camera and Rabbot. Anyway, I decided it would be fun to use it to add some dynamic objects that could fall and interact with the levels and terrain. In the new alpha, you can press 'b' to create a block, and use right-click to drag it around. Here is a video of it; click here to watch in HD! In the background we have a new song by Mikko Tarmia, with live flute by Anton Riehl.
Soon we will work on a physics editor that will allow us (and modders) to attach any model to a set of fast collision primitives with various constraints. This will allow us to simulate much more complicated dynamic objects, like weapons, characters and scenery objects.
Overgrowth Alpha 19
Here is what is new in Overgrowth this week. I am pretty excited about this alpha. There's some cool stuff we had a chance to blog about and some new stuff I will be announcing in this post.
If you are confused what a weekly alpha is, or even what Overgrowth is, please read our fancy FAQ.
Aubrey has been making a bunch of weapons and working on a lot of art. As promised last week, I have included all of the dog weapons. I've also added some new secret art assets which we will display on the blog soon, so you guys can make your maps even cooler.
On the code front, here are a few highlights from SVN:
- Physics has been hooked up. Press 'b' to drop a box from the camera and watch it roll down a hill or whatever. Right click it to manipulate it.
- The sounds engine has been hooked up. David added wind sounds as a demo.
- Mirror tool now works with snaps.
- New free rotation scheme.
- Groups now have their own bounding box editors.
- Fancy new console.
- A number of bug fixes.
Hale from the Secret Preorder Forum has made an epic map. I added a teaser that fans of our Facebook Page can see. We will be blogging about that in much more detail later. It is a really exciting turning point for Overgrowth, in my opinion, and deserves a lot of attention.
The community is getting really busy with map making, and Jo-shadow from the SPF has made a compilation of all of the mods so far. You can check it out here in his thread.
Thanks as always for all the support! See you guys in IRC and the forums.
GDC Begins
As many of you know the Game Developer's Conference is happening this week. We are super excited because this will be our first time attending the glorious and chaotic festival that is GDC. GDC is easily one of the biggest gaming events in the world and it has special significance to indie game developers because it contains the marvelous Independent Gaming Festival where great games like Braid and World of Goo first grabbed some mainstream attention.
To set the tone for this week, the guys at Flashbang Studios (makers of Minotaur In A China Shop) treated a whole squadron of indie game developers to dinner. The usual suspects were there: Ron and Kyle of 2Dboy, Derek Yu of TIGSource, Daniel Tabar of Data Realms and many more. Here's a picture of our table:
From left to right we have Sebastian Badylak (from Shortfuse, the team that made Colosseum), myself, David, Phillip, Johan Hermeren (also from Shortfuse), Jenova Chen (from thatgamecompany, the team that made flOw and Flower) and Jeff.
We couldn't have asked for a better way to start the week.
Overgrowth Console gets an Upgrade
This week, I replaced the old console in Overgrowth with a new one I am pretty happy with.
If you are a web developer you probably immediately recognize this console as the WebKit inspector console, which is used in WebKit based browsers like Safari and Chrome.
The WebKit console is probably my favorite of all the Javascript consoles (compared to Opera's and the Firefox add-on Firebug). That is somewhat debatable, however, I am pretty sure it sets a new standard for video game consoles which often do not even support copy-paste.
Here are a few features that this console supports:
Autocomplete
As you type commands, the console will try to guess what you are trying to write and autocomplete it for you. It shows its suggestion in gray, and you can press tab or the right arrow key to complete it. You can press tab multiple times to iterate through suggestions, or just ignore it if you like.
Scrollback history
The console remembers everything you type, so you can press up and down to scroll back through its history.
Rich introspection
The console is aware of a number of datatypes, so it can effectively display functions, objects, nodes, or regular expressions, for instance. It is very convenient to be able to look at a Javascript object and browse through it within the console.
Multiline support
By holding option (or alt) you can enter a multi-line command.
However, my favorite aspect of this console is that it is written 100% in Javascript and HTML, like all UI elements in Overgrowth. The recursiveness and metaness of that fact has always struck me as insanely awesome. This makes it very easy to modify and hack. Because of this, it is inherently open source, so anyone can easily make changes and make the console more powerful. We will certainly be submitting our changes back to the WebKit project.
So what does this mean for Overgrowth? Why do we need a fancy console in the first place?
Well, we have big plans for the modability of OG. This console lets anyone easily write their own functions for the game in Javascript, which is executed through Google's V8 Javascript engine (read: very quickly). We are going to make an effort to expose as much of the engine as possible. Right now, there a small handful of functions that are available, for instance, Camera.setFOV, or Camera.move.
We are "eating our own dogfood" so we are going to write the entire campaign of Overgrowth using the same map editor that you guys have access to, scripting it using a Javascript API, and all UI will be open powered by WebKit. We are really excited to see what mods you guys come up with in this enviroment.
What kind of features would you like to see in the console?
Map Editor Mirroring
One of our goals is to make the Overgrowth editors simple and intuitive to use. But, we also want them to be powerful. Sometimes these goals conflict. Back when we posted the map editor tutorial video, one of the commenters, Lhorkan, noticed that it was difficult to align a symmetrical roof and suggested adding a mirror object function. This was a great suggestion. But, it caters primarily to modding powerusers who want lots of control. For casual users, I was worried mirror would just add bloat. So, I didn't want to devote a whole tool to it.
Instead, my first inclination was to just add a miscellaneous keypress that would trigger flips. Unfortunately, it quickly became clear that one button would not be enough (a basic solution would require at least three: one for x-flips, one for y, and a third for z), and this approach could quickly turn into a full fledged tool. I next considered working mirror functionality into one of the available tools. From this perspective, an easy solution presented itself. Mirror transformations, it turns out, are geometrically the same as negative scale transformations. Thus, I was able to put mirror functionality directly into the scale tool.
In the first part of the video the rocks are being free-form mirrored by right-clicking with the scale tool. In the second part of the video, the blocks are being mirrored with snaps on (just hold ctrl), thus creating identically sized mirror images.
Please feel free to watch in HD.
I like to think of the functionality of the editors as a crossword puzzle. Just as each new word in a crossword puzzle overlaps and contributes to each surrounding word, each new function of the editors should overlap and contribute to multiple surrounding functions. Mirror and scale overlap in this way. The modifier keys -- ctrl, alt, and shift -- similarly interlock. And, as showcased a few days ago, the distinction between groups and selections provides a convenient framework on which to overlay a distinction between shared axis transformations and individual axis transformations. I'm hoping that continuing in this direction will make the editors dense, but easy to learn.
What do you guys think of this approach. Do you like how the mirror tool currently works?