Monday, 2 June 2014

pixra now on Indiecity! (in-progress)

Well, it didn't take long to finally get something out.

That image you see to your right? I had to make an image for the Windows installer, otherwise it wouldn't build. So I spent about an hour drawing something in pixra, and found myself longing for flood fill. But there we go, a fairly simple image drawn entirely using pixra (and I am ashamed to be using that marketing cliche).

I then proceeded to use Gimp to crop and convert the image.

The frustrating things is that you never actually see that image. Effort wasted... apart from the fact that it makes a nice addition to this blog post.

Although that really bright star just really irks me. Oh well. I'll figure out how to do stuff properly as time goes on.

The build process

Now, I have a Windows build, and a Raspi build. They each have their own quirks.

Windows

This was what I did second. Zipped everything up, all good... oh right, now I have to make an installer image. I kinda explained that one. But wait! I need minimum system requirements! And libraries to install! Well, there were no libraries to install, so I just ticked the box and moved on.

The minimum system requirements have yet to be established but the one thing for certain is that they are all below the minimum minimum system requirements IndieCity let you put (except maybe the CPU speed). The one thing I can establish is you need an SVGA card at minimum capable of outputting 800x600 16bpp, which requires almost 1MB of VRAM. However, I'm pretty sure this will run on a system with 32MB of RAM, and I'm also pretty sure that SDL will quite happily use GDI, so no DirectX required.

Of course, this has been demonstrated to run fine on a 700MHz ARM with 512MB of RAM, but that doesn't run Windows, and we're going to get to that system around about... now.

Raspberry Pi

I did this step first. Made a launcher script, copied the libSDL.so file from my Raspbian install, zipped it up, and once it was all built I tried to run it. Didn't work. Re-ran Pi Store in a terminal, and it was giving me a "./pixra: permission denied" message.

After spending about 5-10 minutes trying to work out where Pi Store actually installs stuff, I decided I would add a "chmod 755 pixra" line to the launcher script. Tried again. Still failed, but this time it gave me an "chmod: pixra: Operation not permitted" which is just chmod's variant of the "permission denied" message.

I then proceeded to make an installer script which simply sets all the permissions to what they should be, and then was forced to work out exactly where to install things. I was considering doing a symlink, but that would be a bit obscure for some people so I decided to just make a "/home/pi/pixra" directory, modify the launcher, and run the program from there.

dirname is a lovely program.

Gave it one more go, this time with the install script. Huzzah! It worked.

Now that my project is marked as "In Progress", the Raspberry Pi Foundation have to check the program to make sure it doesn't contain the skeleton of some family's cat before it actually appears on the store. But if you're impatient, there's always the pixra source code. Just remember to install git and libsdl-devel (or whatever it's called).

Where to from here?

Flood fill.

But before I add that, I should point out that a lack of flood fill is pain, but flood fill without undo is suicide. So undo will be next.

There needs to be a bit more visual feedback when saving. There's a 12px-high section of the screen which is unused, so I could put status messages up there.

An in-app key/mouse reference would be good, too. Kinda like how ImpulseTracker has the F1 menu.

Oh, and finally, I need to use this tool to help me make a game. This means I need to have some ideas...

The inevitable yet undecided game

Here's what I've established so far.
  • It has to be awesome, so people will play my game.
  • It has to be fairly unique, so we don't have people who are already playing something similar refusing to play my game.
  • It has to run well on a Raspberry Pi.
  • It has to have a hotseat multiplayer mode. Not many people have a Raspi, but hotseat multiplayer games make the Raspi great to bring to places and convince people to get a Raspi.
  • It has to have a networked multiplayer mode.
  • It has to have a singleplayer mode. Because you aren't with your friends all the time.
  • It has to be 2D.
  • For nostalgia reasons, it should also be 256-colour w/ an upscaler.
  • It cannot be a 3D voxel game. I'm sick of those, and they won't work well on the Pi. Plus, they're not 2D.
  • It cannot look like a stereotypical indie game. That is, it can't look like someone said "im so 8bit lol" as an excuse to put in minimal effort, it can't use sfxr, and it can't just consist of the many single-colour vector rectangles that I see all the time. (I prefer MS Paint art these days.)
  • It cannot be a typical platformer. Those have been done to death.
  • It cannot be too puzzle-heavy. Those will drive a lot of people away.
  • It cannot be too reaction-heavy. Those will drive a lot of other people away.
  • It has to have a functional demo. This is so people can try it out, see if it works, and hopefully fall in love with me and throw money at me.
  • It has to have a dedicated server, which works with both the demo and the full version, and does not use a GUI.
  • It has to have a server accessible by a menu. This is to make it easier to use at LANs and whatnot.
  • If any DRM is used, it has to be along the lines of how Minecraft does it - that is, auth check on the servers is optional, and the client will still run even if you aren't authenticated. (Might rely on DSFM - Digital Sad Face Management - where if it detects it's unauthed... well, you can guess how this goes.) This is mostly so people can try it out at LAN parties without having to go through some dodgy crack websites.
Anyway, here's my expected toolkit.
  • Code: C, SDL, zlib, ENet, and some .it playroutine called sackit. May chuck in some Lua, too. Who knows.
  • Tools: SchismTracker for music, SunVox for synthesised samples (mostly for said music), Audacity for recorded samples, and of course pixra for graphics. Will probably use some python scripts and ImageMagick to slap all the graphics together.
So give pixra a whirl and let me know what it needs! Just don't tell me to add flood fill - that's coming.

No comments:

Post a Comment