zzorn

LD18

Preparing for Scala game coding weekend

Hi all!  I’m participating in the Ludum Dare compo for the first time.

I’ll be coding in Scala, and using the following tools & libs:

  • Sgine or Ardor3D or plain LWJGL for 3D  (I’ve participated in the development of Sgine).
  • Probably Slick if I decide to go 2D.
  • Gimp or Flowpaint for graphics (Flowpaint is my work-in-progress open source paint prog).
  • Sound fx I’m not sure about, maybe I’ll try out sfxr.  If I get around to making music I’ll use some tracker or procedurally code it.
  • Various open source libraries as needed for loading data etc.

Last time I participated in a weekend game compo was in the Allegro SpeedHack compo back in the 90’s with a planetary shooter:

Image14

Those were the days :)

Good luck to all, looking forward to see the entries!

Tags: scala

Crashing into the Performance Wall

Ran into performance problems – one of my procedural animated boxes is fast enough, but a hundred of them slows the machine to 10 fps.  Even if I turn off animation.  Which is pretty bad news, as I was planning to do the terrain from these or similar ones, and a 10×10 square terrain is pretty minimal.

I’ll see if using vertex buffer objects instead of direct rendering will speed things up, if not I may drop to the Jam and write my own lightweight scala scenegraph on top of LWJGL instead of using Sgine, or maybe just redesign my terrain approach.

boxy01

My entry is on gihub if anyone is interested, it also contains a detailed development journal (sorry about the lack of line wrapping, github doesn’t seem to do it automatically for text files).

Overall I fear I spent too much time on nice procedural models and too little on actual game mechanics..

Comments

22. Aug 2010 · 10:13 UTC
Using Vertex Buffer Objects will certainly help, I can guarantee that… :)
zzorn
22. Aug 2010 · 11:38 UTC
Initial switch to VBO:s doubled the framerate, which is not really that useful yet. But there’s a lot of copying of the mesh data still going on in memory, I can optimize that.

LD20

Reporting In

I’ll be participating again, aiming for a 3D game.

Tools:

I’m also working on a node-based texture generator tool, I’ll post more about it if I get it into usable shape during the weekend.

Cheers, and good luck all!

Comments

Orangy Tang
29. Apr 2011 · 12:16 UTC
What IDE do you us for Scala? It looks like a nice language but last time I looked the eclipse plugin was still nowhere near as good as java in eclipse. That was a while ago though.

Box Genesis

Okay, got the basic framework for a level generator with an interactive editor implemented:

When you change the parameters the view updates immediately :)

Currently the generator just spawns a lot of colored boxes.  The next step is writing some more interesting generators, and setting up the physics so that you can jump from box to box.

Given the theme, a tile based platformer adapted to 3D might be an idea, I’ll see where I go from here (no, I don’t have any overall plan :p ).

 

Comments

30. Apr 2011 · 11:35 UTC
Reminds me of the Pure Time Trials pack for Mirror’s Edge. That’s a good thing.

Platforms, in 3D

Just finished a custom platform-oriented physics engine for JME after trying to get JBullet to work properly.  I’m seeing better framerates too (in the hundreds, versus in the tens with JBullet), at least with a reasonable amount of moving objects. When the movable objects and fixed platforms start reaching into hundreds the framerate drops, as I’m using a brute force search at the moment (O(n^2)).  Could be improved with some simple optimizations (don’t check collisions for stationary objects or objects that have fallen out of the map).  Probably I could have gotten JBullet to work too, but I’d rather spend the time implementing a simple solution I can understand and tweak, than reading manuals and debugging external frameworks.

Visually the game hasn’t changed much, except I added in lighting.  The spheres look positively yummy with a bit of shininess and lights from two directions. :)  I’m dedicating tomorrow to content creation and gameplay implementation.  The goal of the game will be simple, move from a spawnpoint to a goal-portal on each level, by jumping between floating platforms, and avoiding/fighting some kind of enemies.  If I have time I’ll add some companion for the player to protect / escort.

On the tuning side the my scalaprops library is turning out to be very practical, it allows tuning of game parameters interactively which will be a real timesaver when digging into the content creation.  It will need a bit of additional work to comfortably display all the settings though.

Beautiful Triangle Splinters

I just love the smell of triangle soup in the morning:

When fixed, it’s going to be some prettier platforms to jump on than just plain boxes.

 

Puddi puddi platform?

Yummy :)

But I spent 5 hours on that mesh generator :/  Schedule is not looking so good.  Still need to implement better level generation, some level completion logic, and tune the movement controls.  Enemies, NPC, story, and sound are kind of optional at this time..

 

Editing frozen pudding platforms

Level editing is starting to look decent:

But there is still a lot missing from gameplay..

 

Comments

Switchbreak
01. May 2011 · 19:42 UTC
That shot makes me hungry.

The Puddings have Landed

Just barely made it into the compo with a playable version! :)

The gameplay is nothing much – just jump from platform to platform in search of the portal platform that takes you to the next level.  I didn’t have time to implement enemies, more complex level layouts, or any kind of storyline to bind the game to the theme.

Regardless, I’m really happy with what I got done over the weekend – a lovely multipurpose 3D mesh generator,  a very powerful game editing framework, and the bones of a nice game.  I even came up with a passable plot that matches the theme, even if I didn’t have time to implement it.

If you want to download the game or browse the source (it’s Scala) you can find it in my github repository under a GPL license.

Now to catch a few hours of sleep.  Thanks to everyone for a nice Ludum Dare! :)

In the Mini LD

The Ludum Dares are such nice productivity boosters that I’ll be participating in the upcoming Mini LD too.

I’ll probably try to finish something using the 3D basecode developed based on my entry in the recent Ludum Dare 20, and that I’ve been playing with recently.  Although, going for 3D may not be a good recipe for getting things done on time in general..

Twisty Passages

It was a sunny afternoon, and Alice was having a picnic on a grassy hillock, when suddenly the ground gave in under her..

The game will feature twisty passages that don’t quite follow euclidean geometry.  In the darkness lurks cave-spirits, silently stalking the player as she tries to make it out of the dirty tunnels.

Feature targets:

  • Portal based non-euclidean passageways
  • Moving translucent cave ghosts, that send the player character running in panic away from them if she gets too close
  • At least two different levels / cave styles
  • Intro and ending

Theme:

Loosely based on the Dirt and Descent themes.

LD22

Jamming with PyGame

I’m participating in the Jam this time together with a friend.

We’ll be using Python with PyGame.

Some basecode is on github (a primitive parameter editor for graphics code snippets, nothing much).

 

Lonely vampire looking for teddybears

The theme was not so easy, but we came up with a plan for a platform / puzzle game where a young vampire picks up teddybears (and bugs) while traveling through the vampire castle to a vampire princess. :3

 

First obstacle: laptop with a few hours worth of graphics on it had the charger plug break loose, and promptly proceeded to shutdown before we could upload the pictures, as the battery is pretty dead.

What do?  Well, out with the soldering iron:

And fixed (for now).

On to the actual game, we got basic wall tiles and some teddy bears ready, a test level done with Tiled, and imported into the python game with the Tiled loader by bitcraft:

Next up some food, after that we’ll try to get things moving on screen, and do a bit more graphics like the main character and doors.

 

 

We made a room!

 

 

It’s loaded from a Tiled map file, and can be scrolled around in.

We are lagging a bit behind, we’ll need to start adding some actual gameplay tomorrow..

But at least we got a lot of pretty pictures!

Viktor the Vampire lives on

We did not manage to finish our vampire platform game in time for the Jam, but we like the idea and have some nice art assets, so we’ll continue working on it over the holidays.

What went well

  • We created a lot of art assets that we really like
  • We came up with a cute game idea (vampire boy searching for teddybears in scary vampire castle), despite the challenging theme
  • We even created some sound effects, although they are not in the game yet

What did not go so well

  • Map creation and tile engine – we initially used Tiled for map editing, but had problems with implementing game physics on the loaded map data  (some of our tiles are large (256*256), while others are smaller, which caused headaches).  Eventually we wrote a tile engine and game physics from scratch, with some map generation code, but by then there was not enough time to finish the game.
  • Not enough time to actually get to implementing the game logic..

What we will do differently next time

  • Use an existing tile engine, or write basecode for one before the competition starts.  There is enough work in game-specific code, no point in re-writing tile engines for each competition.
  • Map creation in Tiled was straightforward, but time-consuming.  We are trying out programmatic map generation from python now.
  • Get a simple playable game asap, afterwards add more features and graphics.

 

Finally, a part of a room in the big scary vampire castle:

Tags: postmortem, pygame, python

LD23

We’re in for the Jam

Participating in the Jam again with a friend.

This time we’ll use plain Java 2D graphics with some Java and Scala, and I even coded up a small Scala based game library / basecode in advance.

Good luck everyone!

 

Neon green planet spotted

We are making a mix of scorched earth and space invaders, on a spherical world :)

Started a few hours ago, now we have a particle and a planet, with gravitation and air resistance applied to the particle (both depending on distance from planet as well).

 

Alien Activity Detected

04 am on first day, we got player control, some enemies, generated world, and working physics.

Still missing bullets, destroyable world surface, ammo / health mechanics, coordinated enemy waves, and level progression.

Overall, looking good, although tuning may take some time.  Now some sleep though.

4

This entry was posted on Saturday, April 21st, 2012 at 6:09 pm and is filed under LD #23. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

Saving The HomeWorld

Shooting and destruction of ships now work, although it took too much time to implement, had to refactor my basecode a bit.  But I eventually got it to work nicely (sprite groups are an useful abstraction).

Still on the need to have list are enemy waves, level cleared & game over screens, healthbars, and sound effects.  Challening, but maybe doable, as we are participating in the Jam.

 

LD24

We are warmed up for the Jam

Shiera and I will be participating in the Jam again.

We’ve spent today familiarizing ourselves with LibGDX, writing some basecode, and a small warmup game:

Simple warmup ‘game’ for the base code – press the win button to win a level – the order of the win and fail buttons are randomized though. Features massive particle effects, because particle effects are cool. Don’t mind the mushroom colored rocket, it just floats around without doing anything.

Here’s a desktop version of the warmup game for Windows/Linux/Mac, just download, right click and open with Java (preferably Sun Java, OpenJDK may or may not work).  You may need to mark the jar as being executable.

You can also download the warmup game to your android device by scanning the following QR code (Using e.g. barcode scanner or Google Goggles), or downloading the apk file directly.  Tested on a Motorola Droid 1 phone.

QR Code for the Android APK of the warmup game.

Libraries used:

Tools used:

Good luck and have fun everyone!

Edit: Added link to desktop version of the warmup game.

Comments

mfcrocker
24. Aug 2012 · 18:45 UTC
I’m learning LibGDX for this one too. I really like how you’ve handled Screens in your code :)