games

Apple II Rescue!

Huge thanks to Austin and Zach at Heatsync Labs for their massive efforts to rescue my old Applesoft Basic programs. Don’t have the source yet (it’s on a IIgs 3.5″ floppy that I also can’t read, but it’s an improvement), but I do have some runtime footage!

development
games

Permalink

Hmmm… How about a puzzle game where pieces are “if” statements, and the branch evaluates as soon as they’re “true”? That makes other statements true, causing them to evaluate, which makes other statements true… forming a combo - er - cascade.

development
games

Permalink

The Reference Games Manifesto

A couple nights ago, I was playing Score Rush, a twin-stick shooter on XBox, and thinking what an exemplary game it was. Simple, but with highly polished gameplay. Something that other designers and developers could stand to learn from.

That started me wishing there was an open-source game in each genre that was playable and fun, but was first and foremost a reference for developers to learn techniques from. Web framework standards have reference implementations, why can’t games? All the needed infrastructure is out there - freely available game libraries in a variety of languages, GitHub and other source code sites for forking and improving on projects, and a great many motivated (but largely disorganized) open-source game developers. What if we joined forces to make something bigger than any one game?

And so resulted this initial draft of The Reference Games manifesto:

  • We seek to meet the needs of both casual and experienced gamers where possible.
    • We believe that affordances for casual gamers should never be obstructive to experienced gamers.
    • In the rare event that needs are mutually exclusive, we strive to provide for both markets through multiple configurations of the same game.
  • We prove our assertions through appropriate testing.
    • Example: A/B testing to prove that a particular control scheme reduces player error.
  • Although we support innovation, we are a platform for sharing proven best practices first.
    • The reference game codebases can be forked and customized, but only proven techniques usable by a wide audience should be incorporated into core reference games.
  • We value gameplay over graphics.
    • The majority of maintenance and development time should be spent on game mechanics.
    • We support users with low-power or low-cost hardware.
    • We allow graphical improvements through abstracted rendering interfaces.
  • We are open.
    • We do not rely on proprietary frameworks or formats that are not freely available or could become unavailable in the future.
  • We work with the tools most commonly used by the development community.
    • While respecting the openness principle, we choose the tools and languages most widely used by game developers.

I don’t know if I’ll have an opportunity to go anywhere with this, but it’s something I’d love to see. Any enterprising developers out there that want to take this and run with it?

development
games

Permalink

Jemini Tutorial (Part 2 of 2)

In Part 2 of our tutorial, we’ll create some enemies for our player to fight. We’ll set up collision detection, use timers to make a pretty fading effect, and set up a custom manager to coordinate enemy movements and shooting.

Be sure to visit jemini.org for help on starting your own game!

You can view part 1 here.

Jemini Tutorial (Part 2 of 2)

development
games
ruby

Permalink

Jemini Tutorial (Part 1 of 2)

Jemini is a Ruby-based framework for game development. In this screencast, we’ll create a shooter game from scratch.

Part 1 shows creating a project, setting up a game state, loading animations, music and sound effects, and setting up keyboard input and event handlers. (Not bad for 22 minutes, right?)

You can view part 2 here.

Jemini Tutorial (Part 1 of 2)

development
games
ruby

Permalink

Life simulation ideas…

Just watched the Nature episode “Born Wild: The First Days of Life”, and got a dangerously large number of ideas for an artificial life simulation.

Here are (some of) the forces that seem to be in play:

  • Food and energy affect all aspects of birthing strategies. All these make it more likely at least some young will survive, but take energy in return:
    • Producing more than one fetus.
    • Long gestation periods.
    • Making yolk inside eggs.
    • Producing milk.
  • If you’re not top of the food chain, your babies need to be born ready to run. A longer gestational period is in order.
  • A baby can be left to fend for itself, if it’s born smart enough to find food. This means no milk production or babysitting, but probably also means longer gestation.
  • Birds let the strongest infant feed first - it’s most likely to survive. The others get the scraps and if they live too, great. Sometimes the strongest sibling kills the weaker ones. Sometimes the parents themselves do.
  • If the father stays to help, it brings extra food energy into the equation - he feeds the kids or sometimes the mother. Sometimes this means bigger litters, or in the case of emperor penguins, it simply means survival.
  • Sometimes the mother herself is the food energy - one species of spider willingly lets the babies eat her alive.
  • For males, killing the cubs of your rivals is a good way to get their harems ready to mate with you. Of course, you have to prove your genetic superiority by fighting off the father first.
  • Social animals help defend each others’ young, IF they’re from the same father. Children from other groups get attacked, though.

development
games

Permalink

Stupid damping…

physical.htm

development
games
ruby

Permalink

Linux Live Arcade?

You know, it wouldn’t be that hard to re-do the MythTV frontend system to be like XBox Live/Wii channels. Instead of shows, you’d flip through games available for download. When you found one you wanted, you could choose a menu entry to install it via the package manager.

Networking would be a little harder - you’d need a list of IP addresses for your friends/party members, which would then need to be fed to the command line for each game using that game’s options. I don’t think exiting back to the menu in the event of a connection failure could be made automatic in most cases, either, but that may not be a show-stopper.

I’m on this train of thought because I’m a little tired of dumping money into these locked-down ecosystems that I know will go away as soon as my console dies. I know I can’t attract people to play open-source games when the consoles are so much better integrated, so anything that ties a few titles together can surely help. There were some efforts in this regard a few years back, but I haven’t heard anything of them since…

development
games
linux

Permalink

i_object.png

development
games
ruby

Permalink

Logan put together a pretty impressive container for Jemini (note the rename for Google-ability) demos. Just pick from a menu to load a state. Showing a description? One line. Offering running updates on a variable’s value? One line.

class AudibleState < Gemini::BaseState

  def create_ui
    text "Click in different places in the window to emit a sound at different pitches and volumes."
    watch('Pitch') { @pitch }
    watch('Volume') { @volume }
  end

  def load

    set_manager :sound, create(:SoundManager)

    audible = create :GameObject, :Audible, :ReceivesEvents

    audible.load_sound :boom, "boom.wav"

    load_keymap :MouseKeymap

    audible.handle_event :mouse_pressed do |message|
      @pitch = message.value.pointer.x / 100.0
      @volume = message.value.pointer.y / 100.0
      audible.emit_sound :boom, @volume, @pitch
    end

  end
end

development
games
ruby

Permalink