while looking for windows 3.1 source code I ran into this page
http://www.oocities.org/siliconvalley/park/8341/cnctutor.html
are there any 16bit click trainwrecks that use mods?
every day imgur is not dead is another little miracle.
so those in that game would be gems. but what's up with that?
firstly this is all about an upcoming (not anymore, it has already released) version of jumper 4 real.
secondly i should talk about how saves work.
for the most part everything about a save slot is stored in a file named slotN.txt where N is the slot number. it is a pretty human-readable format. here's an example:
https://pastebin.com/raw/HWbdkX6f
gems, however, are stored in a different file, slotN.j4g, in a condensed format. (j4g is a format i came up with short for "jumper 4 gems".) this is partly so collecting a bunch of gems doesn't take up a bunch of disk space, and partly so that it's much quicker for the menu to just read off how many gems each slot has. in future i may put other info the menu wants to read quickly here as well, like how many different rooms the user has triggered the "you win" screen from.
here's the j4g specifications. you'll note there's no header.
big-endian
2 BYTES UINT16 {BLUE GEM COUNT}
2 BYTES UINT16 {RED GEM COUNT}
12 BYTES {RESERVED}
2 BYTES INT16 [THE X POSITION OF THE 1ST BLUE GEM; SIGNED]
2 BYTES INT16 [THE Y POSITION OF THE 1ST BLUE GEM; SIGNED]
2 BYTES INT16 [THE X POSITION OF THE 2ND BLUE GEM; SIGNED]
2 BYTES INT16 [THE Y POSITION OF THE 2ND BLUE GEM; SIGNED]
... {AMOUNT OF BYTES TO READ IS DETERMINED BY BLUE GEM COUNT}
2 BYTES INT16 [THE X POSITION OF THE 1ST RED GEM; SIGNED]
2 BYTES INT16 [THE Y POSITION OF THE 1ST RED GEM; SIGNED]
2 BYTES INT16 [THE X POSITION OF THE 2ND RED GEM; SIGNED]
2 BYTES INT16 [THE Y POSITION OF THE 2ND RED GEM; SIGNED]
... {AMOUNT OF BYTES TO READ IS DETERMINED BY RED GEM COUNT}
up to four versions of this file exist per levelset: slot 1, slot 2, slot 3, and combined (union)
"the x position" and "the y position" refer to the x and y position of the room the gem is in.
(what you would call "levels", jumper 4 real would call "rooms", and every room is somewhere on a grid spanning from -32768 to 32767.)
(if there's multiple gems of the same type in the same room, there is a mechanic where all of them turn out to be holograms except the last one you try to collect.)
"combined (union)" is this:
named "union" because it is the "union" of all gems you have across all savefiles (as well as deleted savefiles). it's like a permanent progress indicator.
whenever you collect some new gems and go back to the menu, when the game writes what new gems you've collected in save slot N, it also tries to update the "union" file. it cross references with all the gems you have in slot N and ticks off whatever gems are already present in the union file, and the remainder gets appended.
well not actually "appended" since the structure of j4g files means new blue gems have to be inserted into the middle of the file, and also i implemented it really weirdly such that the "union" table of gems effectively gets replaced with the "slot N" table of gems and then has the gems that aren't in slot N appended to it, but that part doesn't really matter since lua's pairs function has no defined order and that's how i iterate through all the gem tables anyway (the key is a room position and the value is true).
but now you may be wondering about that number to the right of the /. you may be wondering how the menu knows what the total amount of each type of gem is, without manually scanning every single level for gems.
the answer is... it doesn't! it just checks two variables you set from the editor. (if either of them are 0 or left empty, then it doesn't show the gem total at all. also, there is nothing stopping you from lying about the total amount of gems your levelset contains.)
however, the editor does have a "recount gems" button that automatically totals up the amount of gems every room has.
how are rooms stored? well hey i have another freaking pastebin link woah.
https://pastebin.com/raw/625G65ES
OK THIS PART OF THE POST IS ABOUT HOW ROOMS WORK.
map data itself is two bytes per tile - the first byte being a "bank" (though this, like many other decisions, is entirely arbitrary and not really enforced) - with the additional restraint (for the time being) that every byte has to be printable ASCII. also there's some hacky compression for rows that are all the same tile or adjacent rows that are identical.
you'll notice there's no separator between each tile. this might lead you to believe "oh, ok, so you used some string buffer thing, and you check an initial byte to see if it's | and if so you know it's map data, and from there on you consume 2 bytes at a time" but no!!! i wrote a stupid custom string split function that specifically only splits across multiples of n (2 in this case). that was back when i didn't even know string buffers existed. where were we? oh, right.
so right away there's a problem: we can't just use string.find for the 2 bytes that comprise a blue or red gem, because what if i got really pressed for space for some reason (95 tlies/objects per bank isn't infinite!!) and started using using { or | as a bank? then if it were right next to a tile that ended in O, it falsely finds O{ or O| and thinks it's got a gem. but it don't! and it's not possible to tell what parity a tile is on except relative to the last newline (not to the start of file).
so i COULD just write another hacky mess that's like string.find but only for specific parities and also considers the last line break to be parity 0. but i had a better idea that was way faster.
up to this point i had three agreed-upon "starting characters" for this pseudo-format i saved as .txt:
in retrospect, having introduced a header into my level format, i probably should have had the first byte (well, last 7 bits of the first byte) be a version number instead of gem information, so if i make any more silly changes then i can know definitively what version of the room "format" each room was saved with.
indeed i should. but so far, i haven't.
yay!
The first of the award winning BINKY series.
BINKY throws a house party. Only Mutant Joe shows up.
How horrible!
for GDC 2010!
This is my first Klik n Play gaem.
oh what a broken game. knock over the obstacles. collect the fruits and vegetables. roll the baby.
controls:
left and right arrow to influence the baby's rolling
up is supposed to be a jump button, but if you're next a wall and you tap it repeatedly you can sort of climb
music is armadillo by yubatake
thanks + enjoy
The rules in Chip's Challenge are quite simple, yet with a little creative application you can do interesting things. especially with regards to layering.
This is basically just another one of those "visit every square only once" type games. The set has six levels, the last one being a "boss" level. Also note that the exit square is indeed there - it's just hidden underneath the cosmic chip socket.
Installation: Place the .dat file in your Tile World "data" folder, and the .dac file in "sets".
Hey what happened to the Ladies Auxiliary???
Anyway, this is my game. I was trying to add a bit of Glorious-y out-there-ness to my game that my staid self sometimes lacks, while staying true to my artistic, physics-toy-making style. Such as it is.
THE HOSE is the result.
You are the hose. Hold the mouse to send out water streaming, sending you flying and hopefully dousing the flames.
Err, I mean...
THE BUILDING IS ON FIRE! HOLY CRAP YOU BETTER PUT IT OUT!!! GAH WHAT KIND OF GOOD HOSE ARE YOU IF YOU CANT PUT PUT A FIRE!!!!!! AAAAAH WHATS GOING ON YOURE FLYING ALL OVER THE BOARD LOOK OUT!!!! LOOK OUT! PUT OUT THE FIRE AS FAST AS YOU CAN GO GO GO GO GO GO!!!!
Mega Mountain 2100 is a "climbing platformer metroidvania" without an ability to jump that's an unofficial sequel to the Glorious Trainwrecks classic Mega Mountain.
It's heavily inspired by indie classics like Cave Story, Undertale and Mega Mountain.
The game isn't finished yet. The game *.exe and the itch.io page are placeholders and everything can change at any time.
Features:
- not too much, it's a demo.
(C) 2017 Adrian Makes Games. Original Mega Mountain by sylvie. Made with love.
As far as I know, Construct can't import anigifs yet. I thought it might be helpful to post this, since I had to poke around a bit to get a quick pipeline going. Hopefully it'll encourage more folks to try Construct -- it's a great tool, but for its lack of handy stock graphics.
Incidentally, recent versions of Photoshop have all but removed support for handling anigifs, delegating that task instead to another Creative Suite product, Fireworks (a mostly-redundant holdover from Adobe's acquisition of Macromedia.) Screw that! Photoshop can still do the stuff it used to -- the functionality's just been deliberately obscured. Cheggit:
(Using Photoshop CS3 in Windows; earlier/later revisions might be different.)
Hit File > Import > Video Frames to Layers...
What's this? Doesn't look like it recognizes .gif as a valid video file type. There's not even an option to list all files in the "Files of type" drop-down!
Let's just try putting *.* in the filename box and forcing our selection anyway.
Whoa! It works! Be sure "Make Frame Animation" is checked.
You may want to process the image at this point: remove a background, or apply your favourite zany filters. Just be sure that the changes are propagated to the frames correctly. (You should have the Animation panel open; hit Window > Animation if you don't.)
Done? Excellent. Go to Export > Render Video...
What we want is Image Sequence: PNG. Critically, if you have transparency in your image, make sure you have an alpha channel enabled at the bottom of the dialog. Straight - Unmatted is fine.
And you're set! Now to put this baby to use. Create a new Sprite in Construct. Close the Picture Editor it opens up -- we don't need it.
Select your new Sprite, then go to the Animator tab. Click on the pre-existing angle in the default animation. (This is a bit fiddly.)
Right-click in the lower half of the panel and pick Import Frames.
Navigate to your image sequence and hit Ctrl-A to select 'em all.
That oughta do it. The next dialog is mostly skippable -- you can pick a mask colour and rotate or flip the image. If you were importing a sprite sheet, this is also where you'd define how it should be chopped up.
We're just about done. Right-click on the first (empty) frame of your animation and remove it. Now, your image'll probably be squished or streched a bit to fit the 128x128 default size of the Sprite. We can fix that.
Choose "Make 1:1" in the Properties section of the Properties panel for your Sprite.
That's it! We could probably speed up the conversion process by creating a Photoshop Droplet, a macro of actions that's saved as a shortcut file you can drag-and-drop images onto. I haven't tried it for this yet, but it would essentially turn conversion into a one-click procedure -- much nicer. Also, please suggest easy alternatives that don't require proprietary software if you got 'em!
Anyway, the real reason I made this topic was so I could have a random place to dump awesome .gifs I come across. Yeaaaahhh!
The ninth in the award winning BINKY Series.
Enter the next level of computer entertainment product: BINKY IX: BUBBO I.
BINKY has crash landed on a mysterious island with their friend HERRY the CHERRY, among others. Beware, for there are dragons at every corner! And they will face off against powerful wizards! This is simply the most intense BINKY adventure yet. Will you solve the mystery of BUBBO I?
Please do not spoil the last two levels of the game, if you really need to, use the rot13 cipher!
Features:
BINKY
Herry
Dragons
Wizards
Automatic Movement System
Conversation System
Password System
Desktop Wallpaper
Controls:
WASD / Arrows - Movement
R - Toggle Automatic Movement
Space - Talk
Enter - Input Password on Start Screen
Escape - Quit Game
Credits:
[See more in CREDITS.TXT]
Guillaume de Machaut - Riches d'amour from http://maucamedus.net/midi-frame-e.html licensed under CC-BY-NC-SA 4.0
DRAGON artwork from Wikimedia Commons Public Domain Images and http://www.oneletterwords.com/weblog/?tag=dragon
TILES from Dungeon Crawl Stone Soup https://github.com/crawl/tiles licensed under CC Zero.
ELIZABETH by mno from Unfinished Sekret Santa Game
Text Interface Engine by Henriquelalves https://github.com/henriquelalves/GodotTIE licensed under MIT
License:
BINKY IX: BUBBO I is under the TRAINWRECK LICENSE, whatever that means! Just attribute (Link,name,etc) the game if you do anything derivative of it! Nobody is gonna make money off of this game okay!? Be careful.