[epiar-devel] Ideas for Small Tasks
chris at epiar.net
Wed Dec 16 09:57:59 PST 2009
I've been asked a few times, as has Matt, what small programming tasks are available. I'm compiling this list for anybody interested, and as a reference for any future programmers we pick up who might want to accomplish something meaningful, get their feet wet, but without doing the full 100m dive:
* Add joystick support: SDL makes this rather easy. If you don't own a joystick but want to do this anyway, you can get a $15 USB joystick almost anywhere.
* Make an in-game menu when the player hits escape (can't do this yet, waiting on the UI, but it should pause the game and present a simple button-based vertical menu that opens submenus that includes options like 'Video', 'Sound', 'Input' which would let you adjust screen resolution, number of sound channels, key bindings, etc.)
* Add a simple function using SDL_net that pulls a .xml file off epiar.net (e-mail me about this if you want to do it) that checks to see if you have the latest version, and if not, prompts you to download the latest version, perhaps launching the browser via the OS browser launching mechanism, e.g. urlview or whatever it may be on the particular platform
* Asteroids! They're the stupidest form of sprite there is, and thus very easy to implement. You can pull the asteroid art off 0.6.0 or find a new one: you'll probably need to build it using our .ani format and perhaps augment the sprite class to support using Animation in option to Image as a sprite's visage. You'll also need to establish a form of asteroid field generation, e.g. "field at 50, 50, 0.8 density, expands 1000 in all directions" and then implement random asteroid creation in that area. It should be noted that such an effect should be gradual, e.g. if I fly in from -1000, I should see one or two asteroids and have the density increase until I hit 50,50, and then drop off naturally by +1000 (x coord).
* Beginnings of power distribution. This may end up as a task for 0.3.0 or 0.4.0, but a simple power distribution system needs to be in place. The idea is that each ship has a reactor, with controllable flow of energy to the three major ship components: engines, weapons, and shields. Think of a full-sized keyboard, with the 3x2 set of buttons above the arrow keys: Insert on top of Delete, Home on top of End, and Page Up on top of Page Down. Each of these three sets of opposites are perfect (and were used in the past) to handle power distrbution. Each ship could start at a standard, say 15% weapons, 55% engines and 30% shields. Tapping or holding down, say, Page Up, would slowly increase power to engines by taking it away from the other systems. We could even then use the F9-F12 keys to define presets, e.g. battle mode (heavy weapons and shields), battle going bad mode (heavy shields and engines), trading mode (heavy engines and shields), etc.
* Basics of the hailing system: This is slightly blocked by the UI though by 0.2.0's release you'll have enough widgets to do this: the player should be able to hail other ships, space stations and planets, and even have the AI sometimes hail them. They should be able to ask for advice (e.g. from traders), insult them (give me your ship sorta thing, maybe not call it "Insult them") and Request or Offer assistance (fuel or battles). Another possibility is to implement a sort of basic tree-structured conversation model, so we can have slightly interesting conversations, e.g. ask 1 of 3 questions, which then slightly alters which questions are available after that like so many RPGs do.
More information about the epiar-devel