Thursday, 19 June 2014

Parsnip Theory Alpha 4 released - usability + sound

I've pushed a new update for Parsnip Theory. It makes it less annoying to play, although currently you can't turn the music off so it might be more annoying. Oh well, the setup screen stuff can happen in Alpha 5 - I'm mostly just trying to test usability at the moment.

No fancy picture, but here's the music rendered to an .ogg: https://dl.dropboxusercontent.com/u/32094129/parsnip/trk1-dem1.ogg

Download: http://fanzyflani.itch.io/parsnip-theory

Monday, 16 June 2014

Parsnip Theory Alpha 3: This Time You Can Actually Play It Networked

Since Alpha 2, it's possible to play Parsnip Theory over a network.

But with Alpha 3 out the door, it's now feasible.

I've added a "game setup" menu to the game. This allows each player to pick which players they want to play as, and also allows for a higher playercount (I've capped it at 16, although the editor only goes up to 8 at the moment).

No more "only stuck with two players".
No more "stop ending my turns for me".
No more "stop making my moves for me".
No more "don't move until I've joined".
No more "make sure you have the right version of the map".

Although this did require a couple of #ifdef WIN32 lines simply because Windows. But of course, there's no such special code required to get this to behave on both BSD and Linux. I could rant about this all day but whatever.

As usual, the HTML5 version is updated (although I haven't added in the new map): https://dl.dropboxusercontent.com/u/32094129/parsnip/index.html

It also runs notably worse than it used to. If you find it's driving you nuts, it would be a good idea to download the real version.

Anyway, enjoy! And if you have any issues, please prod me on Twitter: https://twitter.com/fanzyflani

Download away: http://fanzyflani.itch.io/parsnip-theory

Thursday, 12 June 2014

Parsnip Theory Alpha 2 released!

Featuring a Linux build, flimsy but playable 2-player network support, and it's a bit easier to run stuff now.

Not convinced this is the game for you? Here's a gameplay video.


Download for free here! http://fanzyflani.itch.io/parsnip-theory

Sunday, 8 June 2014

Parsnip Theory alpha 1 released!

Yes, suprisingly, I actually got it playable and winnable today. Not only that, but it also has a little bit of polish. Not too much, just enough so it's usable.

It helps if you read the README.txt file in the zip.

Have fun, and send me some useful feedback so I can make this even more awesome. Also, give it to all your friends and get their feedback, too.

Download: http://fanzyflani.itch.io/parsnip-theory
My Twitter: https://twitter.com/fanzyflani
My blog: You're reading it right now

Friday, 6 June 2014

Just in case you wanted to know

Y'know that weird bug with A* not working properly?

I fixed it.

You can breathe now.

Thursday, 5 June 2014

Well, that was a bit of a stretch


Having been overly optimistic after a really good run yesterday, I managed to overpromise on what I would do today.

What you see on the right is a screenshot demonstrating an overly favourable outcome of my broken A* implementation (it always gives a path when possible but it's usually not the best). I suspect I'm doing the priority queue wrong, but nothing seems to be jumping out at the moment.

But I do have turn taking implemented, and A*, and you can't have two units on the same spot anymore.

I also got a little bit bored of implementing gameplay, so I decided to make a 16x16 font! Currently it's just digits and upper-case letters, and the rest of the ASCII set is either just dupes of the upper-case letters, or placeholders. Took about 30 minutes to get the font to where it is now.

Tomorrow, I'll... be taking a break because it'll be Saturday then. But on Monday I'll make it possible to delete objects (read: 2- and 3-player games will be doable on this map), hopefully fix the broken A* stuff, and have food slinging and "health" in place.

Oh, and of course, we might as well have a video:


Enjoy.

Change of plan

I assumed today was actually Wednesday. It's actually Thursday. Alpha should be done by the end of Monday.

Derp.

Wednesday, 4 June 2014

Level editor complete enough

Keyword "enough". Basically, I can put player objects down for 4 teams, and... well, the next thing to do is to work on getting the players moving around.

Casualties? The code to add an object to a level is atrocious. Not that it's big or anything, but that it just... sucks. I really need to get a linked list going, or if I'm going to use a dynamic list, make sure it doesn't realloc() the list every time it adds or removes an object. (But quite frankly I should just use a linked list.)

I really don't have much more to say here, other than tomorrow I'm going to make it so players can move according to A*, and hopefully all of but nevertheless at least one of these things:
  • Turn-taking
  • Food throwing
  • Damage
  • The food fight equivalent of "death": Fleeing.
If I knuckle down I'll have all 4 sorted.

The day after that I plan to have a font in place (might just grab the one I'm using for pixra for the time being), a simple UI, a main menu, and a 2-4 player hotseat alpha test.

By the way, if you let me know how crap the player colour combinations are in that screenshot, please suggest some good ones - I'm using an algorithm which is SUPPOSED to give 128 unique combinations from a set of 8^3, but sometimes it spits out crap.

And of course, this game is called Parsnip Theory.

Tuesday, 3 June 2014

Mode 13h is fun (for some standard of "fun")

Oh boy, let's have a look at what we've got today.

I actually have a game idea now! It involves cafeterias, food, and the sorts of stuff that gets you into trouble with your teachers. I even have a name for it, thanks to the advice of drnick on #ludumdare.

Basically, it's a turn-based food fighting strategy game. Main reason for making it turn-based is I intend this to be playable as a hotseat multiplayer game, and this is the best way to have everyone in the room able to play.

I've also just realised that in that screenshot made with a big chain of "draw this tile" calls, the player sprites should be 12 pixels higher. Or lower. Either way the feet should end at the centre of a 32x24 tile.

In other news, it turns out pixra doesn't suck, but:
  • It could really do with a palette interpolation feature, and
  • Rect fills don't seem to add anything to the undo stack. Looks like we have a bug!
But enough about pixra, back to this game.

My plan of attack:
  • Make a level editor, and of course make some levels.
  • Get player movement working properly.
  • Get A* working properly.
  • Get team colour assignment working properly.
  • Add some weapons. By weapons, I mean food items.
  • Add some shields. By shields, I mean tables.
  • Add some health. By health, I mean cleanliness... denoted by a cute-looking bottle of liquid soap.
  • Make it so teams can win.
After that, I can work on the finer aspects, such as food splatter graphics, more weapons food items, and - most importantly - the ability to slip up on food. I have experienced first-hand the aftermath of a potato fight, and trust me, you have no idea how slippery the floor gets.

I can also work on making it look good. Animation, shading, and nifty tooltips which tell the other people in the room how to actually play the damn game. If I'm going to convince people to buy this game, I'm going to make it as easy as I possibly can to make them want to part with their money.

Oh, and of course I'd need to add fonts. A 16x16 font will allow for 20 x 12.5 characters at a 320x200 resolution, while an 8x8 font will allow for 40 x 25. Basically, the reason for adding in a 16x16 font is that it gives me room to make it look awesome. But something like an 8x8 is also a must, because tooltips are just going to be impossible to fit in at 16x16. I could also invest in some smaller sizes; 6x6 seems plausible (53 x 33 characters).

I hate bad caching

I've successfully pushed an update to the Raspi build of pixra. Unfortunately, I can't test the Windows build because the client keeps grabbing outdated files. I've rebuilt the installer 3 or 4 times already and it still refuses to give me what I want.

From experience, this is usually because my ISP does really, really stupid things. So stupid, that every now and then I have to use Tor just to get stuff working.

So some actual cases:
  • From time to time an image or animation on mspaintadventures would only partially load. I stop it, and refresh. Reloads exactly up to the point where it gets stuck.
  • On some people's websites, I have to get updated .zip files. I have to either download them via a shell server, or get them to rename the file so I can get an updated version.
  • Not really caching related, but sometimes I end up with weird routing loops while trying to access obscure websites such as Google. (In reality, it's almost always something like Cloudflare or Akamai.) This is when I resort to using Tor.
However, it's only the Windows client that's giving me the weird caching issues - Firefox is fine, and Pi Store is fine. So it may actually be a clash between the Windows client and Wine.

Anyway, if you're running Windows, or can run Windows programs, mind doing me a favour?
  • Install the IndieCity Client.
  • Create an account.
  • On the Explore tab, filter by "In-progress", then select the "Dev Tools" subtab.
  • Select pixra, and install it.
  • Run it.
  • Enter in some random filename like "butt.tga" and hit Enter.
There should be a message up the top saying something like "Welcome to pixra! Press F1 for quick help at any time." If there isn't, IndieCity is giving you the old files, so please tell me about that. If there is, please tell me about that too so I can put it forward for approval.

My twitter account is @fanzyflani (oddly enough) if you want to get in touch. And of course, there's a comments box down there (I think), and a few on IndieCity.

Monday, 2 June 2014

Undo, Flood fill, In-app help

So as I wait patiently for the Windows version stuff to sort itself out, I might as well show you the power of flood fill by producing this image I totally did not just cheese together in 5 minutes.

Once this tool finally downloads properly (as opposed to constantly grabbing the old version instead of the current version) I'm kinda keen to mark it as released, because quite frankly it has enough grunt to be used in production. (I hope so, at least.) I've flicked IndieCity an email as I don't think this is going to resolve itself in a hurry.

Anyway, I have a game idea. Tomorrow, I think I'll focus on implementing that.

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.

Sunday, 1 June 2014

obligatory welcome post

In order to make it anywhere I'll need a few ways to communicate with everyone and whatnot. OK, let's start with a blog.

So far, fanzyflani is a "group" of... one person who, unfortunately, didn't start this life with five years of commercial experience. Not just any commercial experience, proven commercial experience. So I'm going down the avenue of game development.

With that said, what are my goals? Well, I want to...
  • Get used to a 9-to-5 schedule. Although to be blunt it's been more like 10-to-6. But hey, this is only my third day so far.
  • Learn some discipline. For this I'm staying off Twitter for the time being, because it's really easy to get distracted. (During the work period, that is.)
  • Suss out the New Zealand tax system. Well, OK, that's impossible, but I'm going to have to make enough sense of it to not get stung. Because of this, I can't exactly take on any paid team members unless they're able to help me with this.
  • Learn how to make graphics properly. Coding and music are my strong points. Actually drawing graphics, not so much. But I know how to do graphical effects well enough, so don't you worry about that side of things ;)
  • Get at least one of the Desura clients working on FreeBSD. The Windows one just crashes, and the Linux one is missing a library in my Linux emulation tree so the pages don't draw (ugh). Yes, I am actually developing on FreeBSD. It's better than having to put up with systemd and pulseaudio, and that includes the fact that I have dodgy graphics drivers.
  • Learn how to market things. This will be necessary if I'm going to get anywhere in this industry.
  • Finally, get paid.
So what have I been doing in the past 3 work days (OK, more like 2-and-a-bit)?

Well, I've been making an image editor for the Raspberry Pi. Because, well, have you ever tried using GIMP on that thing? If not, I strongly encourage that you try. (It will teach you patience.)

It's called pixra, which of course is the Lojban word for "picture". It's designed for editing 256-colour images. If you think 256 colours is a huge limitation, well, most "indie" games I've seen have trouble getting close to using 16, and I'm pretty sure Minecraft doesn't quite hit 256 in its textures (or could be adjusted to stay below it), so it's not that hard!

Despite the code being poorly optimised in places, it's actually pretty fast!

Here's the code on GitHub, of course:
https://github.com/fanzyflani/pixra

So far it does these things:
  • Create images
  • Load images
  • Save images
  • Draws with pencil
  • Picks colours from image
  • Edits colours in the palette
  • Selects boxes
  • Fills boxes
  • Shows a grid you can easily define and align
  • Zooms in/out
  • Scrolls
  • Copy/Cut/Paste (transparent or oblique)
  • Automatically scrolls while you draw/zoom and hit the edges. I cannot express how awesome this feature is, and I'm suprised I forgot this point and had to edit it in.
And what it does NOT do, which you might expect from the editor you use:
  • Pops up a main menu when you double-click on it, letting you pick your drawing size and/or filename. At the moment you need to put stuff into the commandline.
  • Undo. (Don't worry, I fully intend to add this.)
  • Edits 15/16/24/32bpp hi-colour/true-colour images. No, you will need a paletted image.
  • Edits images with 32bpp (alpha) palettes. Or anything that isn't a 24bpp palette.
  • Edits anything other than uncompressed .tga. (I intend on there being .png support at some stage, but for now you'll have to convert the .tga files you get with, say, ImageMagick.)
  • Edits more than one image at once.
  • Lets you resize images.
  • Lets you resize the window.
  • Actually uses the system clipboard.
  • Draws any text in the UI whatsoever.
That last point is mostly because I intended to use pixra itself to draw the font. I managed to do exactly that on an actual Raspi, which I've kindly converted to .png here:


You can use that for whatever you want. I'm mostly saying this because it kinda sucks. But it's a font, and that's what matters. (I intend to chuck in lower-case letters later.)

And here's an in-development build: https://dl.dropboxusercontent.com/u/32094129/pixra/pixra-indev1.zip
If the link doesn't work, I'll work something out - Dropbox accidentally flagged SDL.dll as a copyright violation.

Enjoy!