RSS
 

Starting up…

20 Aug

Theme is “Escape”, hum? Didn’t see that one coming… Smile

Already have an idea, involving some insanity (escaping your own mind) and whatnot…

Anyway, time to check out the blog, eat breakfast and start cranking some code!

Good luck everyone!

Ah, obligatory deskphoto:

desk

 

Vacations and Ludum Dare

19 Aug

Back from my vacations, all over Portugal… Well deserved, I might add! Open-mouthed smile

Anyway, what better way to finish vacations that with a Ludum Dare 48-hour game development competition?!

I’ll be cross-posting the progress on my game throughout the competition, so stay tuned!

Anyway, I’m using the same framework as last time, done by me, just added a 3d tilemap system (doesn’t have any type of querying yet, just rendering at the moment, I’ll add the rest during the competition, according to needs).

You can download the framework here, if you want to use it (it has two sample applications that show most if not all the features):

  • D3D9 initialization and some helpers
  • FMOD interface for sound
  • 2d Sprites (with sprite caching, etc)
  • 2d Particle System
  • Text
  • 3ds file loading (only tested with 3ds generated by 3d Studio Max). Loads lights, meshes and cameras.
  • Small simple math library (vectors and quaternions)
  • Simple 3d camera handling system (just with a “look at” operation)
  • XML loading/saving (might come in handy for configuration files, load/saves, etc. The XML loader was created by Frank Berghen, not me… the writer is all me, although the loader also has save functions, but I’m too lazy to figure out how they work)
  • 3d particle system (based on the 2d one, so very rudimentary)
  • 3d sprite system (quads that always face the camera)
  • LUA library support (it’s actually ripped from my engine, so it’s a good support system for LUA)… Last time I used cutscenes and scripting, and loads of the game code was much simpler because of that…
  • DDS image loading for an offscreen buffer (just supports R8G8B8A8 images). Might be useful for some level design stuff, although I’ll probably go back to my old days of text files
  • 3d Tilemap (Kind of a blocky heightmap with an automatic texture atlas generation and partition of the map in chunks for possible culling (not implemented))

 

On the tools side:

  • Visual Studio 2005 (hope I can get used to it again, been using 2010 at work)
  • Photoshop CS5 (for 2d graphics and textures if I decide to adventure into 3d, and for map creation, etc)
  • 3d Studio Max (for modelling if I go 3d, or for title screens and such otherwise)
  • sfxr (or Bfxr) (for audio effects)
  • Wolfram Tones (for the music creation – fun tool, saves loads of time) and MIDI Converter Free (to convert the MIDI generated by Wolfram Tones to OGG)
  • Live Writer for blogging

 

About the themes, I have a gut feeling that “Dreams” is going to win, although I don’t have any ideas for that… or any of the others, to be honest, since the times in the past when I tried to think of an idea for all the themes it didn’t work that well… Smile

Anyway, very excited about this all!

Good luck if you’re participating (and you totally should, it’s great fun!)

 
No Comments

Posted in Games

 

Contamination!

01 Aug

Amoeba_Contamination

Have been working a bit more on the Amoeba game, and most of the game code is done… still missing the game flow components (splash->main menu->level select->play->game over, etc), but I need some art for it, that’s being taken care of…

Had the time to implement some experimental gameplay mechanics, to make levels be a bit more different from each other… In the screenshot above, you can see the “Contaminate” mechanic… instead of the cells flying off the screen when we do a mistake, they hang around on a contaminated state… From there, I have two different mechanics when the contaminated cell touches other cells: either it destroys them, or it infects them.

Contaminated cells can be destroyed, either my clicking on them a certain amount of times, or by laying a trail on top of them (which is slower, but affects multiple cells).

Just this addition really improves the gameplay of the level, specially if we consider the “greed” factor: the reward for getting loads of cells together before dumping them into the collector is very large, so the “greed” instinct comes online and ultimately dooms the player.

There are other mechanics, like cells that mutate, or normal cells that infect others, but I still need to do some experiments to see how they work in a real game level.

Also worked on some powerups/powerdowns from a code standpoint, which also add something to the gameplay (like attractors, which make all cells that aren’t of the same color as the one we have be attracted to the finger, which makes it harder to navigate in the game field).

All of these are making the game become more complex and complete, which I guess is a good thing, but it kind of spoils the initial purpose of building a simple game to experiment with publishing/deploying of a game in this kind of mobile platforms…

Anyway, now I’m in a phase where I need some art to carry on, and I’m almost going for vacations, which will make updates to the blog a bit on the minimal side… Smile

 
 

5 Colors Pandora

27 Jul

Was clearing my temporary bookmarks, and came across to a link to this game: “5 Colors Pandora”.

5_colors_banner_702_200_2

I remember playing this one in Ludum Dare 16 (the one where I submitted my “Cursed” game), but I didn’t had the time to finish it… Decided to have a go at it again, and it was very good…

“5 Colors Pandora” is an exploration game… no split second reflexes, no enemies, just exploration and environmental manipulation, which makes this a soothing game; the story is whatever you think up while playing, which enhances the experience (making the player part auteur; would have liked a bit more “directed” storytelling, but that’s a matter of personal taste, of course).

Have a go at it, you can finish it in less than 30 minutes!

 
No Comments

Posted in Games

 

Amoeba

22 Jul

The video below shows the game I’ve been working on my spare time with a friend. The working title is Amoeba, and it is being developed with Spellbook running over Marmalade.

Progress has been nice and steady, considering I’ve worked a total of 4 or 5 hours on it, not counting the basic porting time for Spellbook.

 

We deliberately chose a simple game to develop, since we wanted to tackle loads of stuff at the same time (developing for mobiles, distribution, marketing, etc) and we didn’t want to have to worry about the game development as well…

As it is, the game is about using your finger to “grab” unicellular organisms of the same color. If you collect enough, you’ll get a “Breakthrough” that allows you to advance to the next level. If you grab an organism of a different color of the one you’re currently grabbing, they’ll nullify each other and the risk of “Infection” is greater.

Not groundbreaking, but I’m hoping to achieve other objectives than perfect game design with this one:

  • Finish a game for mobile devices
  • Getting it into the market
  • Marketing it

 

Some challenges so far were to adjust the game to different device orientations and to different aspect ratios, both of which are already up and running…

Next steps include some basic GUI work and level progression… After that, level design and sound, and finally polish and menu stuff…

The video above is running in the ARM emulator that comes with Marmalade, but the game runs exactly the same in my Samsung Galaxy S (an Android phone).

 
 

One-Button Arthur

19 Jul

Another awesome one-button game: One-Button Arthur.

It’s from the same creator of One-Button Bob, it runs about the same length and it’s super-fun… Smile

I’m feeling a huge urge to do a one-button game for mobiles, specially if I can make it data-driven enough so that my friends can help me with level design…

For now, it’s just a pipe dream… Smile

Been working on the mobile stuff, particularly orientation of the device… under Marmalade, it’s a bit complicated, since I already have a virtual resolution system that seems to clash a bit with their own, and I’ve been finding it difficult to find the orientation of the device from the low-level stuff… think I’ll have to use the resolution change event to find out the current resolution and extrapolate orientation from there…

Also found out that my cellphone (a Samsung Galaxy S) doesn’t detect the orientation change when it is upside down (which shouldn’t be a problem, to be honest).

I’ll start working on my current game in the next few days, starting with some background elements and interaction with the player’s finger…

 
 

Textures working

15 Jul

Worked a bit on the port of Spellbook to the Marmalade framework, got textures working:

Textures

That’s on the emulator (couldn’t take a decent photograph on my Samsung Galaxy S)…

Was quite complicated getting this to work, actually…

1) Had to build a DDS loader… Although it currently only supports R8G8B8A8, R8G8B8 and A8 formats, it can be easily extended in the future (specially when I understand some more about OpenGL, since OGL ES 1.0 only supports RGB, RGBA and LUMINANCE textures). Thankfully, I did half the work some time before when I did an iPhone application.

2) After I got this working, I only had a white square on the screen, where my sprite should be… After loads of mucking around in all the wrong places, I found out on a forum the solution: I had mipmapping enabled when I did the glTexImage2D to load the texture, so the function was still waiting for the rest of the data (for the mipmaps), and I wasn’t giving it any… so the texture creation process wasn’t finished and hence the white square…

3) Channel ordering:

Red_Blue_Channel_Switch_OpenGL

Might have trouble seeing it, but the red and blue channel is switched… OpenGL stores the information differently from DirectX, which might be a problem in the future, when I want to do cross platform dynamic texture updating.

Anyway, the sprite you’re seeing is animated. It was generated with IBGen, a tool I built that grabs a 3d model and its animations and export a sprite sheet, an image bank and animation data to be used in 2d games. Below you can see an example of a sprite sheet:

afonso0400

The packing system isn’t very good yet, but it serves my purposes…

Still don’t know what my next step is, but probably a better reaction to different orientations of the mobile (currently the graphics get drawn offscreen, etc, because Marmalade is reacting to it itself, which makes for weird effects).

 
 

Mobile madness!

14 Jul

Hey all!

I’ve been a bit busy lately, finishing up a project for work that kind of consumed all my life, except World of Warcraft (yay, killed Shannox, got a Eternal Ember!!).

Anyway, I’ve been working on the port of Spellbook onto the Marmalade framework (so I can use it in future mobile games). Also been talking a lot about mobile games and some of the ex-members of Spellcaster Studios decided to do some experimental games on those platforms..

I’ve never been much of a “mobile gamer”, most of my knowledge of games on mobile platforms being from mainstream websites (so I only know the more famous titles, and most of those seem to resemble Flash games anyway), so I decided to check out what’s out what’s there.

I’ve looked around and I found Touch Arcade, which is a site dedicated to iPhone games… although my target will probably be iOS, Android and Windows7 phones, it’s still a good place to start, and I found some stuff there that was quite interesting, specially from a technical standpoint:

 

 

So, not all mobile games must look like Flash games, and some of them have quite interesting graphics, from a technical standpoint…

For the record, I knew there were games on the iPhone that didn’t look like Flash games, but most of them actually do… it’s refreshing to see something that escapes from that normalized graphical look.

Anyway, in the next weeks I hope to be able to find the time to port Spellbook onto Marmalade and get some simple games up and running!

This is the current state of the port:

IMG_20110714_165219

This doesn’t look impressive (specially with such a blurry photo), but it shows the blitting system working (without textures yet, need to add a DDS loader), with a fixed function pipeline shader that gets translated from my own engine structures (similar to DirectX) to OpenGL ES. This shader is read through my resource manager, from a file in my own format. The blit system used my mesh system, so that’s a double victory. Projections (in this case orthogonal) are also handled by my system.

This wouldn’t be a big achievement for anybody but me, since I’ve never worked in any depth with OpenGL, let alone OpenGL ES, and my engine is all DirectX based…

 
No Comments

Posted in Games

 

Some Marmalade, please…

08 Jul

marmalade

I’ve been experimenting some stuff on mobile development, specially for iOS and Android…

Although I managed to build solid applications for both platforms, I’m always annoyed that I can’t use my normal development routines…

iOS

Stuck with XCode (which is dreadful) and Mac in particular (which I hate, to be honest)… To minimize by grief, I used the excelent Synergy, which enabled me to use my keyboard and mouse on the Mac and PC at the same time, without using ugly and non-functional KVMs, since it’s a fully customizable software solution… After I got that working, I still use Visual Studio with a remapped directory to do all the editing of code on the Mac… Basically, I just use the Mac to compile and debug.

But, even with this setup, I’m still stuck with Objective-C, which is horrible, and a unwieldy framework… Although I can work with that, it’s far from optimal…

Well, at least it has the advantage of being able to compile C and C++ code, which enables me to port parts of Spellbook (my engine) to it, making it a bit easier doing multimedia applications, unlike…

Android

Java… really, think that says all… Although Java isn’t as bad as Objective-C, it’s still a far cry from pure C++ in terms of code development (at least for me… I’ve got 15 years of C/C++ experience, and only 3 or 4 of Java, and never in the fields of multimedia).

The Android framework is slightly nicer than the iOS one, and Eclipse is much better than XCode, so it has that going for it… but still… Java…

 

So, until now, if I wanted to do a cross-platform game, I’d have to go through an existing engine like Unity, do two wholly different implementations of the game (just reusing assets), or ignore one of the platforms (which sounds like a terrible idea)…

Enter Marmalade… Marmalade is a framework that wraps most of the functionality of mobile frameworks and compiles ARM code directly, making the games developed with it able to be deployed in several platforms (iOS, Android, Bada, Symbian, webOS, with more coming soon)… And the best part is that you can develop and debug the games with Visual Studio (on the PC) or XCode (on Mac), using an ARM emulator… The build process is quite simple, and deploying the various versions can be done with some scripts and one button…

It’s really a good product… Initially, you have to edit a text file that describes some options of your project (files that are part of it, etc)… Then, (after you install Marmalade properly), you just double click the file and it generates a Visual Studio or XCode environment that you can work with like it was any normal application.

My experience was so good, I had my engine (all 200k lines of it) compiling under it in less than one day… Of course, this is just compiling, not working, since I have to implement an OpenGL ES layer to replace my normal DirectX layer… Anyway, got some of that working in one additional day (I got some amazing colored squares on screen, powered by Spellbook, with FFP “shaders” imported from Reality files (my own format), with some simple behaviors).

They even replace the C stdlib in the ARM projects, so that you can use the normal C functions you’re used to!

 

If anybody is looking into a good cross-platform development environment, I can recommend it… It has its drawbacks:

  • Documentation is terrible, but fortunately not very necessary, since you’re (hopefully) programming with the C stdlib, STL and OpenGL ES.
  • The code footprint seems to be a bit big, but it probably can be cut down with some options (I optimized for speed, not size)…
  • Price… There’s a 90 day evaluation license, but after that you have to pay for it… There’s Basic subscription, that costs $150 USD/year (which is more than the budget of loads of indies I know), and only supports iOS and Android, besides having an ugly splash screen when the game starts… And then there’s Standard, which supports all the platforms (except for the Beta ones) and doesn’t have the splash, for an hefty price of $500 USD/year… The price is a bit steep for indies, but if this just has to be weighted between the cost of doing different applications for different platforms or having a “one-size-fits-all” approach… Of course, Unity is less than that for indies, but it has its own set of restrictions for development (I don’t like GUI-based game engines, maybe that’s just me). The yearly fee might also be a deal breaker for lots of people, even if they have the money to spend on the license…They have an “App Program” that might ease the financial burden (or even remove it), but they’ll take 20% of your profits (although they do the distribution in all stores, etc) and you have to be approved by them…

 

The financial issue is the only thing that really detracts from the whole concept, and I think that if you’re serious in going indie, it might be worth the investment… Take a look at the evaluation and see if it’s for you! Smile

 
2 Comments

Posted in Games

 

Pax Britannica

04 Jul

I’ve always loved one-button games… and found if impressive that game designers can stuff a game full of fun with just one button…

Following this this thread of thought, I came across “Pax Britannica”:

screenshot2

You can download this free game here.

The idea of the game is to defeat your enemies in a space battle royal, using only one button… Up to four players can play on a single keyboard (unfortunately, the single player is a tad too easy to really enjoy the game), and they can hold only one key… That will trigger a needle in the UI, and releasing the button will make a ship spawn. That ship will depend on the quadrant in which the needle is.

The game as a bit more tactic that it seems at first glance, and it’s a load of fun… and more importantly, should make game designers think about their design decisions… as I said in the past, I don’t care much for developing one-button-games, but thinking about the distillation of the game components into one button helps distinguish what’s fun and what’s not, and how to simplify the UI and actions available in the game to their most basic form, until all you have left is pure game, no fluff… Of course, a game like this is only fun for an hour or so, but adding more components to it is easy enough by extending the GUI, but keeping always in mind that all additions must bring a load more fun to the game and discard the idea if it doesn’t…

 
No Comments

Posted in Games