Sunday, July 10, 2011

In Profundis Progress 7/9

Current work on the game concerns mainly refining the platforming. One of the complaints people had upon seeing the videos was that the world looked blocky, especially falling water. While I haven't decided on the best solution to illustrating falling liquids yet, the platforming change should make sloped surfaces a little more feasible. Emphasis on "should;" it's going to take some work regardless. Sloped surfaces are deceptively tricky to implement in the way one would expect (which is largely based upon Mario 3) in a tile-based world.
Also, I've switched the internal representation of the world fro a Python list-of-lists to a numpy array. The result is a very slight performance boost coming from reduced overhead, but more importantly it simplifies the code a bit, and should be easier to optimize in Cython.
Both these things took rather longer that you might expect, from tracking down bugs and charting out code. Still, progress is such that morale is up at the moment.

(EDIT: Fixed date, which was incorrect [again] due to confusion over the current Peanuts Roasted date.)

Thursday, July 7, 2011

In Profundis Progress (7/7)

More bug fixing in the wake of the switch to more integer-based math for platforming. Internally actor coordinates are switching from pixel-based math, with decimals handling sub-pixel movement, to 16 subdots per pixel. This means tracking down a few places where values are translated between pixel-level representations and cell-level.
The next thing I'm working is making platforming as bulletproof as possible. Sorry if it seems like it's going slow, I am but one person. It is happening though.

Wednesday, July 6, 2011

In Profundis Progress 7/6

The past two days of work have been oriented towards ripping out as much of the floating point math as is convenient from the platforming engine, and switching it to integer.  It's a general code improvement thing; relative to the amount of time the game spends updating the world state, the performance gain from removing floating point math is slight, but it'll make collisions simpler to detect and handle by not having to worry about piddling small decimals riding on the value.

Sunday, July 3, 2011

In Profundis Progress 7/3

I had a bright idea.  What if we didn't draw every tile every frame?  What if we just scrolled the image from the last frame, and drew in tiles that changed, those scrolling in from the edge, and those around actors?

Today I tried this out.  And you know what?

It really didn't make all that much difference, while it cluttered up the code with drawing flags and checks to see if the tile scrolled in.  I think the scrolling, even though handled by SDL, end up taking almost as much time as it took to just draw the tiles anew each frame.  D'oh!

In Profundis Art: Character Idea

To replace Placeholder Guy as protagonist, here's a sprite I've worked up.  Tell me what you think:


Points of interest:

It's a girl, but not ostentatiously female.  In the final game there might be a gender choice, depending on how much time it takes to make alternate versions of every frame of animation.

Shoes are a bit oversized.  I like to think of them as "clompy boots," in the style of the Iron Boots in Ocarina of Time.

Realistically proportioned body, with a big head. 

Orange backpack, ala Earthbound, explains freakish carrying capacity.

Clothes functional, a bit baggy.

Dammit Blogsy

Sorry about the Peanuts post here.  Been trying out a blogging client, and it makes it easy to get blogs mixed up.

Friday, July 1, 2011

In Profundis Progress, DIrection

So, here is where we are:

I have changed the graphics loading mechanism to use "atlases," large images separated into tile blocks, instead of the many individual images used before. This will make improving the graphics a lot less annoying. The tile size has also been increased to 32x32, which fits less onscreen at once but gives a better view of the world. We'll see if it's a good change with play testing, it won't be hard now to change it back.

The two most promising leads for performance improvements are Cython, a Python-to-C converter, and OpenGL. In the first case, that is something best saved for much later. In the second, the PyOpenGL library has a bug that prevents its installation under Python 2.6, so that's going to have to wait for now.

Today is mostly devoted to graphics work. I'm considering character designs for the main guy. I might temporarily import Aurora from Mayflight to fill the role, but she's 16x16 anyway. She'd make a good placeholder though.