I really need a snappy name for this project, so I can register a domain (or at least a Sourceforge project). InfraBaby isn't really doing it for me.
So, since my last update, I've managed to completely decode the V.Smile Baby's IR format. Those last three bits that were so confusing to me were actually a combination of a very simple "repeat" bit, and two checksum bits! Once I figured out how the checksum worked, everything became clear. I've attached a small document containing the complete decoding scheme, which is actually much smaller now since I can take the raw data out for repeat codes and so forth.
The next step is to write a little script to generate the Lirc configuration file.
The step after that is to package everything up into a user-friendly bundle. Even if I don't have a nice menu or configuration method to start, it'd be good to bundle WinLIRC and automatically start it when you boot up. Not to mention building an EXE instead of requiring the end-user to install Python and the various random libraries that I'm using.
As an aside, my son enjoys AlphaBoogie, but so far he still hasn't really made the connection between pressing buttons on the controller and things happening on the TV.
I'm reading Tracy Fullerton's "Game Design Workshop" book. One idea she puts forth is don't worry about playtesters stealing your ideas, your game will be just about as hard for someone else to make as it will be for you, and you obviously have a head start...
Those economics don't quite apply to quick and dirty KotMK-able games, but I'm still a little nervous about sharing because A. i guess i'm "paranoid" about some stealing, but would that be such a bad thing? B. I'm worried I might disappoint people who see this list and what I'm NOT working on
So here is the list from my iPhone "glorious trainwrecks" memo, with explanations, roughly in reverse chronological order
UPDATE Half asleep, I had some more ideas for some of gamebuttons, games where the display and input is all a "normal" HTML pushbutton.
IT TOTALLY WORKS
OH MAN OH MAN OH YES
Eric is in bed now, but I can't wait to let him play with Alphaboogie.
It's going pretty smoothly, actually!
I wrote a little oscilloscope program in Python that interprets the raw pulse/space data from WinLirc (pasted into text files), then gathered the data for each of the buttons. Thankfully the encoding was easy to decipher (each bit has a short pulse to start, and then a short or long space indicating one or zero; a long pulse ends each batch of sixteen bits), so it's just a matter of looking at the picture and turning it into a code. I haven't really looked at how to write the configuration file properly quite yet, but I'm sure it won't be too hard after all.
Important findings for game designers:
- The codes are the same whether you roll the trackball up or down. :(
- The "release" code appears to be the same for all buttons, so there's no possibility of holding down multiple buttons simultaneously.
EDIT! For all the V.Smile Baby hackers out there, I've attached a text file detailing the codes associated with every button. If someone is ever crazy enough to try hacking the V.Smile console itself, knowing these codes could help you out.
So my infrared reciever has arrived! And I can totally read the raw IR coming out of the V.Smile. Unforunately, WinLIRC's learning function is retarded and completely refuses to learn my weird-ass device automagically. The raw IR data that I get from WinLIRC is very unfriendly state; it's not something I can just paste into a config file, or even a visualization program, for that matter.
Looks like there's lots more reverse engineering and learning about WinLIRC configuration files in my future! Yay?
So, the working name for my homebrew videogame system for infants is now InfraBaby. If anyone has any better suggestions, I would love to hear them.
Though I can't test it until my IR receiver arrives in the mail, I've built the core of the system. I've got a small Python program that reads data from LIRC, and, based on a configuration object, presses keys in Windows. Obviously I've still got some work to do to discover what codes the V.Smile emits, but I'm hoping that'll end up being relatively straightforward.
Now, if everyone was happy writing python code to configure their games, and starting up three programs whenever they wanted their baby to play a game, I'd be done. But no -- I'm coming to the realization that I've got a frontend to write, which lets you set up configurations for your games, and has one-click (or one-press-the-orange-circle) launching of games. I'm really, really itching to give the program a try, but at least a proper user interface will give me something to do while I wait for the damn sensor to come.
After successfully finishing Tek Demo, I've been thinking about other aspects of KnP that haven't been fully explored. I've never made use of active object internal flags. What does "spread a number" do to alterable values? The event editor has its own options panel? But one thing really hit me as being full of potential. Klik & Play had support for a very old animation format: FLC/FLI. No sound, palletized, somewhat dodegy playback speed, and very poor compression. That, and no modern video converters seem to support the format. But a while ago, I found this old DOS command-line converter called DTA. Running it under dosbox, I could convert a directory of tga or pcx files into a knp compatible flc video. And just now I've finished the conversion path, from shooting video, to jpg sequence, to tga sequence, to fli animation.
The filesizes are awful. What started out as an 882kb avi lasting maybe two seconds turns into a 4.5MB(!) fli animation with no sound. But I have the batch processing steps down now. And my planned idea won't take more than maybe 8 videos to do, each lasting about two seconds, at double the tested video dimensions, and half the framerate. I'm looking at about 64MB of fli video, plus whatever filesize the actual GAME part of this idea clocks in at. I think this could end up being very, very funny indeed.
My first step is going to be shooting video, of course. And dealing with the difficulty of convincing friends that they desperately want to be the stars of this overwhelmingly foolish idea.
KnP FMV, here we come!
So my son turned one year old yesterday! We got him a videogame console for babies.
Now I dare you to look at that thing and not immediately think "Baby Pop'n Music." It is obvious that the giggly Baby Einstein "smartridges" (Seriously! That's what they call them!) are only of limited interest. I'd originally thought that it might be interesting to write software directly for the unit, but it soon became clear that I would have to do a LOT of reverse engineering work -- something I don't have the time or experience to do properly before my son grows out of the thing.
Then I realized that the interesting thing is not the system itself, but the controller. The controller is a very simple IR transmitter, like a remote control. And you can pick up IR receivers for PCs for under $10 on eBay.
So if I pick one of these things up, and write a simple program to convert these IR signals to keystrokes, I could very well make videogames for my 1-year-old son in Klik & Play. For that matter, so could all of you! Kirk just DID!
You guys, you have no idea how exciting it is to think that you could make toys for your child that aren't obnoxious. Every toy on the market has a sound chip in it that talks to my son in a sing-song voice about how fun counting is, and about how fun the alphabet is, and about how fun opposites are, and about how fun manners are. They repeat themselves endlessly. They stunt the imagination. Some of them even tell my son they love him. I have inanimate objects in my house that tell my son they love him!
I can do better. This is my next project.
While watching the
Spindler Splindey Spindley's raycasting demo, an idea popped to my mind.
Idea of Doom in KNP isn't new, yeah, but I reminded myself trying to implement very primitive Eye Of The Beholder-like "3d". I googled up in looking for full-length games using this and I've found an old friend, Death Mask.
As we can see, even with jerky scrolling/movement, gameplay is fluid and clear. It would be a sin to not try this!
So I dig up my old WIP-stuff notebooks and found the theory of algorithm for such an engine. Here we go.
Map is a matrix built from 32 cells, 16 x 16. Each cell is a fragment of map with a number. Player starts in cell 1,1, and moving forward changes the cell to 2,1, then turning right - 2,2 etc. Every cell has it's own "3d" picture. Some cells contains monster - which we can shoot out with a gun.
Algorithm has many
fails flaws, like no open rooms, just maze and no backwarding.
Hope my engrish isn't too high and everyone can undestand this bullcrap without beer or two.
I will try to implement this once again.
Oh, and a screenshot. A little teaser. 4 different fonts on title pic! Face that, man