Making a game kit for the Hydra/Demoboard
Oldbitcollector (Jeff)
Posts: 8,091
Over the last few weeks I've been considering what it would take to create a "Game Kit" for the Hydra/Propeller.
The first thing I've considered it that it is all together too much for one programmer, much less me to handle.
Perhaps this is something we could tackle as a team effort.
When I say "Game Kit" I'm referring to something that looks like: Shoot-Em-Up Construction Kit (lemon64 link)
but perhaps not limited to Shoot-em's.
Thanks to Andre, Baggers, Trodoss, Potatohead, Ariba, and a few others we have all the pieces to do something like this,
we just need to focus our efforts with a little planning.
Shoot'em up Construction Kit (Wiki link) was perhaps a little too ridged, it doesn't appear to allow for coding, but the
germ of of the idea is there. Our kit would be targeted at the Propeller beginner-to-intermediate with enough
tools to do something cool without too much code, and rewards for those who press forward in spin.
What do you guys think? Open discussion..
OBC
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
New to the Propeller?
Visit the: The Propeller Pages @ Warranty Void.
Post Edited (Oldbitcollector) : 10/28/2009 3:01:34 PM GMT
The first thing I've considered it that it is all together too much for one programmer, much less me to handle.
Perhaps this is something we could tackle as a team effort.
When I say "Game Kit" I'm referring to something that looks like: Shoot-Em-Up Construction Kit (lemon64 link)
but perhaps not limited to Shoot-em's.
Thanks to Andre, Baggers, Trodoss, Potatohead, Ariba, and a few others we have all the pieces to do something like this,
we just need to focus our efforts with a little planning.
Shoot'em up Construction Kit (Wiki link) was perhaps a little too ridged, it doesn't appear to allow for coding, but the
germ of of the idea is there. Our kit would be targeted at the Propeller beginner-to-intermediate with enough
tools to do something cool without too much code, and rewards for those who press forward in spin.
What do you guys think? Open discussion..
OBC
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
New to the Propeller?
Visit the: The Propeller Pages @ Warranty Void.
Post Edited (Oldbitcollector) : 10/28/2009 3:01:34 PM GMT
Comments
* Core video driver: Atari 2600 style-esq display driver By Jim Bagley (Baggers)
* Core audio driver: 22KHz, 16-bit, 6 Channels by Nick Sabalausky (Source: Programming the Hydra)
Objective of this project:
================
Design an easy game creation kit for someone who is getting started in SPIN and Propeller
which allows easy entry and big rewards for those who venture forward to an immediate code level.
Goals:
====
* Propeller based sprite editor
* Propeller based background editor
* Propeller based sound editor
Concepts to nail down:
===============
* Basic game creation in SPIN or some form of BASIC language for game rules and design.
* Everything tied together with menu or PropDOS equiv.
* Format for sounds?
* Snippits of SPIN code for game functions.
Edit: Added some Stella screen shots to boost heart rate and adrenaline levels to thread participants.
OBC
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
New to the Propeller?
Visit the: The Propeller Pages @ Warranty Void.
Post Edited (Oldbitcollector) : 11/1/2009 5:14:09 PM GMT
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Computers are microcontrolled.
Robots are microcontrolled.
I am microcontrolled.
But you·can·call me micro.
Want to·experiment with the SX or just put together a cool project?
SX Spinning light display·
Want cheap wholesale electronic parts?
Transistor parts wholesale
I'm still alive, but sucking wind. Our family caught H1N1, so I've been just existing...
The VCS driver where FREEWAY is being written to is along these lines. A few options might get added, changed, but the core idea is that a game can be written in SPIN.
What is needed is some nice pieces to fit into that framework. I intend for FREEWAY to demonstrate that in an easy way.
(as soon as I get my game state machine done)
When it's all done, the "game" piece is a bit of graphics data, some I/O routines, and the game logic. Doing this VCS style means a dynamic display, with the sprites and background being drawn every frame. Life is really easy because the main game loop will simply run once each frame.
1. Init
2. enter attract state
3. on "start" enter playing state
4. on "game" over, enter attract state.
For all the states, the logic loop basically goes:
1. Call out the sprites
2. update all counters
3. take user input
4. process positions and other game state variables
5. draw the screen.
While drawing the screen:
1. If needed, do collision check
2. sounds and other goodies.
when screen is done, loop back and iterate the game state.
Movement of enemies, etc... all can very easily be based off the frame. The template code has been broken down into a VBLANK area, where the game logic goes, and a non-vblank area where other stuff goes.
Maybe a simple PONG type game, or BREAKOUT would make sense? That way the game loop is really simple. I thought FREEWAY was pretty simple for a starter, and so far I've been happy with the low overhead seen so far. Very soon, I'll post up the one with the state machine in it.
The hardest part about a game is the actual "game" bit. IMHO, this is the piece people need to see and model off of. That's where I'm learning huge right now, having only done a few games in my life.
IMHO breaking that down into nice little chunks is the way to go. Building a "kit" to do it, involves still having to grok those chunks, or a big programming project to manage general purpose logic...
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Propeller Wiki: Share the coolness!
Chat in real time with other Propellerheads on IRC #propeller @ freenode.net
Safety Tip: Life is as good as YOU think it is!
Post Edited (potatohead) : 10/29/2009 12:50:14 AM GMT
We're dealing with strep over here.. I've managed to miss it so far..
I've discovered a couple tips for anyone who works in the computer industry.
1.. Always use your own pen. 2.. Sanitize hands after using someone elses keyboard.
I'm pleased I was able to draw you into this conversation. I thought you would
have some good input for this project!
OBC
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
New to the Propeller?
Visit the: The Propeller Pages @ Warranty Void.
Anyway, Baggers and I were talking about this stuff too. Truth is, SPIN is not difficult, and it runs about as fast as most assembly code from the retro period did. This means a lot of simple stuff just needs good interfaces, with bits of PASM to perform what would have been performed in hardware back then. From there, simple constructs will do nice games! The key is moderate to low expectations in terms of capability. That's why Baggers knocked out this driver.
Another thought I had was to do what we did on the Batari Basic project. At first, it was all kind of goofy. Simple BASIC, but also on limited and wierd hardware. What ended up happening was people started writing little bits of code that did stuff. Man running around screen, bullet, collision, sound, etc... Others picked up on those and have been building ever bigger projects. Today some great stuff is happening. After the thing was released, all we had was this goofy demo where a sprite would move in response to the joystick. I wrote the first playable game in an hour, posted it, and it was GAME ON! from there. Others saw it and created stuff, and it snowballed to the steady churn of things getting done today.
There has been activity here on basic things, video, sounds, pieces... If that activity moves up a layer, it's game activity, instead of activity that enables game activity. The difference is subtle, but maybe enough to get some projects moving.
(was for me anyway)
So then, VCS games are remarkable in that they have simple scopes, nice limits on GFX, and operate nice and easy in that each frame the engine runs one step, then another, another, etc... There is enough time there to do lots in SPIN, and if the other goodies are up and running, then it should get a person right to the game part without too much hassle. Doing them on a VCS is actually very tough to do, even with the BASIC. Doing them on a Prop is kind of nice, not so tough, and there is plenty of "slop" for those times when it's needed, unlike a VCS which has very, very sharp limits.
My own experience plays out here. The core elements needed for FREEWAY came up in just a short time.
Build graphics assets
setup sprites and render them to screen
add some movement
add some other movement
animate
user input
sound... (missing, but ok for now)
That's just little bits of code that do stuff. Once each one is up and moving, doing it's thing, the groundwork is all done. From there, it's just logic and thinking the progression of things, or better, the state of things through. That's where I'm at now. Diagrammed the game, then got sick, so it sat, but for the small update. The key, at least to me, was being able to get the bits I know I need running in some simple context. (collision and sound are left to do) Now the next pass can be an actual game iteration.
The entire investment in time so far is not even equal to that required to get the video up and running for other efforts. That's really fun, really hard, and time consuming. Done this way, each iteration actually does something you build on, or build out.
Maybe if some little runnable, tinkerable examples were done, it might be easier for people to just check it out and do some stuff. Even if it's really simple stuff, it could be fun stuff.
Ball bouncing around.
Show Score, increment score.
Sprite controlled by joystick, that shoots and moves.
Sound goes off when sprites touch demo.
Animated images.
Sprite that walks on background.
Etc...
Each of those could be done with the same framework, with only the bit of SPIN and the graphics asset files needed for display being different. Somebody grabs that, and adds a few lines, and suddenly there is a Tank game instead of just one sprite moving around. It's a simple leap compared to taking one really finished SPIN project, like the ones we have. Looking Defender over, for example, is great! But there is a LOT there too. It isn't all that easy to just poke around, change things, and learn things.
In the end, there is this code that gets you zoomed right into doing something, but isn't really a kit, but a template where you can add stuff, and learn things. It's malleable enough to allow for some casual exploring, but not just a poke and play kit.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Propeller Wiki: Share the coolness!
Chat in real time with other Propellerheads on IRC #propeller @ freenode.net
Safety Tip: Life is as good as YOU think it is!
Post Edited (potatohead) : 10/29/2009 1:17:50 AM GMT
Count on board also!
Baggers.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
http://www.propgfx.co.uk/forum/·home of the PropGFX Lite
·
I remember hearing about the "Shoot-Em-Up Construction Kit," but·never used it.· I saw though examples of the same sort of things on several platforms.·
Bagger's VCS driver is a great one for what·you are wanting to do, and he has the GFX editor taken care of for that [noparse];)[/noparse]·
Is there a plan for the 'sound driver?'· Is the plan to emulate the TIA registers, or is the plan to one of the existing Hydra (HSS/HDMF) or other drivers (Ariba's MIDI), etc.?· Those may/may not constitute "easy" driver to use though (reqires knowledge/experience with an editor/tracker).· Mythic Flight's code converts from RTTTL format, which is a human-readable text format.· It could be turned into a more "generic" object if that is the direction it went.· Thoughts?
Having both the simple examples as well as finished games (like Freeway) will help.· I probably need to get a project on the VCS driver going then [noparse];)[/noparse]
Cool, a common starting point.. First step of getting everyone on the same page...
OBC
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
New to the Propeller?
Visit the: The Propeller Pages @ Warranty Void.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
http://www.propgfx.co.uk/forum/·home of the PropGFX Lite
·
At this point we have several options ranging from Ariba's MIDI object to Andrew's HSS driver. Even the Hydra
sound object is freely available. I do know of one other rather nice sound object in the works, but I'm sworn
to secrecy for the moment. If we're going to use VCS graphics for games, it would be strange to hear
Ensoniq wavetable sound when your brain is expecting TIA. (Particularly with remakes of classic VCS games.)
I like the idea of a simple sound engine with easy access.
OBC
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
New to the Propeller?
Visit the: The Propeller Pages @ Warranty Void.
Considering, sound may not be that big of an issue. Using Synth.spin, or similar code, you can generate basic sound. Probably all you would need.
There are a lot of full-featured sound drivers already available, so probably not worth investing time into that sort of effort.
...
Back to pondering...
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
http://www.propgfx.co.uk/forum/·home of the PropGFX Lite
·
Sound Driver - 22KHz, 16-bit, 6 Channels
AUTHOR: Nick Sabalausky
It's simple enough to easily generate waveforms and fairly light on memory..
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
New to the Propeller?
Visit the: The Propeller Pages @ Warranty Void.
It is a good driver, and has sound 'shapes' (sine, sawtooth, square, triangle, noise) that would get you closer to emulating VCS-like sounds. A well-documented example of how to use it would make it accessable [noparse];)[/noparse]
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
http://www.propgfx.co.uk/forum/·home of the PropGFX Lite
·
One key to this will be the interpreter and how the game logic is handled. The graphics/sound cores should be made so they can be swapped out with other ones for growth in the future, but the interpreter will be what is key and probably wouldn't change much whether one graphics core or another is used.
Another key is the tools. I would make it strictly PC based tools to start out with. In theory it would be cool to write programs on the Prop, but I think in execution it would be hard to make it user friendly and still have memory for the actual program.
Expansion is another thing to consider. With the SD card expansion it really gives you limitless resources that a programmer can use. I think allowing assets to be loaded from SD card (as an option of course) will allow people to make larger games by being able to load different levels, graphics, music, etc from the card. Also even a program loader would be very good as well. That way people can make their game in the "kit" copy everything to SD card, then run it.
Overall I think it is a great idea!
Baggers has provided decent PC support for the VCS driver.
I can't imagine it would be difficult to create a sprite/background editor
which would run on the Propeller itself. If assume SD requirement, then
we can provided each of these as a separate binary which could be
executed from something like PropDOS or the equiv.
OBC
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
New to the Propeller?
Visit the: The Propeller Pages @ Warranty Void.
trodoss, how's that progressing? could we make it usable for the sprites?
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
http://www.propgfx.co.uk/forum/·home of the PropGFX Lite
·
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
http://www.propgfx.co.uk/forum/·home of the PropGFX Lite
·
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
http://www.propgfx.co.uk/forum/·home of the PropGFX Lite
·
Would you mind posting some "detail" on the format of the .spr file?
This would help me greatly in loading/modification/saving of sprites from the Prop.
Thanks!
OBC
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
New to the Propeller?
Visit the: The Propeller Pages @ Warranty Void.
OBC
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
New to the Propeller?
Visit the: The Propeller Pages @ Warranty Void.
Anyway, the sprite format is set out as 8x8 characters, each character being 32 bytes, 4 bits per pixel.
Top left pixel is the first byte's high nibble, then the low nibble is the next pixel, then repeat 3 more times for the top 8 pixels of the char, then each pixel row of the character.
so it's laid out like this, I'll use numbers for the pixel position, instead of the colour so you can better see how it is.
byte $01,$23,$45,$67 ' 0 1 being the pixel X position
byte blah, blah for char_scan_line_2
etc.
Is that clear enough? if not let me know
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
http://www.propgfx.co.uk/forum/·home of the PropGFX Lite
·
Genius way of doing it while saving memory!
So the nibbles themselves are color assignments?
For those of use who are visually orientated... (Do I have this right?)
high low high low ... ...
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 = row1
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 = row2 ....
(Quickly refers to webster.cs.ucr.edu/AoA/Windows/HTML/DataRepresentationa2.html
to get brain working in something other than bytes. [noparse]:)[/noparse]
Anyone got some handy spin code for converting a byte into two decimal nibbles? [noparse]:)[/noparse]
OBC
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
New to the Propeller?
Visit the: The Propeller Pages @ Warranty Void.
Post Edited (Oldbitcollector) : 11/1/2009 9:54:11 PM GMT
byte $0_1 , $2_3 , $4_5 , $6_7 ' row0
so
byte $0_0 , $1_1 , $1_1 , $0_0 ' row0
byte $0_1 , $0_0 , $0_0 , $1_0 ' row1
byte $1_0 , $0_0 , $0_0 , $0_1 ' row2
byte $1_0 , $0_0 , $0_0 , $0_0 ' row3
byte $1_0 , $0_0 , $0_0 , $0_0 ' row4
byte $1_0 , $0_0 , $0_0 , $0_1 ' row5
byte $0_1 , $0_0 , $0_0 , $1_0 ' row6
byte $0_0 , $1_1 , $1_1 , $0_0 ' row7
Will come out like a letter C [noparse]:)[/noparse]
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
http://www.propgfx.co.uk/forum/·home of the PropGFX Lite
·
LOL! I saw you posted a pic of Joust. I will have to put up a screen shot of what I have so far when I get a little time [noparse];)[/noparse]
@baggers:
Been throwing sequences of 0-255 at the 8x8 that makes up sprite 0 (the blank tile)
and getting some very interesting color effects. Neat stuff! Very Atari Intro-like..
OBC
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
New to the Propeller?
Visit the: The Propeller Pages @ Warranty Void.
It doesn't do much so far, hence the image only. I'll start with loading/saving single
.spr files then move forward to being directly compatible with the entire .chr file.
At the moment, I'm sending sequences of HEX codes to SPRITE 1, changing it's color.
@Baggers:
Driver request: Could you add the ability to .str(string"") text to a given location
based on the positions of the numbers and alpha characters in your "hero" example?
OBC
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
New to the Propeller?
Visit the: The Propeller Pages @ Warranty Void.
Looks like you are off to a good start!
Also, as promised, a quick pic of where I am at on Joust.· Working out movement/timing right now (in the "rough draft" phase).· Once I can get things in order I will start a "project" thread for it [noparse];)[/noparse]·· The GFX are a little different from the 1983 console version (because 1-color dosen't do the driver justice).