Omnimaga
Calculator Community => Other Calc-Related Projects and Ideas => TI Z80 => Topic started by: squidgetx on September 07, 2011, 06:09:03 pm
-
Hey everyone, so basically I've started a new, small project to get back into calc programming and to help me learn to use CalcGS. (This is Axe of course)
It's a port/variation of the popular iphone/flash game Gravity Guy. It's one of those endless style games, where your only weapon is the ability to change the direction of gravity. If you fall or touch the edge of the screen, you die >:D Most of the engine is done atm, there's just a little bit left to do:
-Score
-Increasing speed as you hit the >> tiles (current speed is at 6mhz, no delay; I'll have it start with a delay like in Cuberunner and Space Dash)
-Snail powerup
-Rockets? (Not sure if I'll include this)
-Level switching
-Title screen/Death coding etc
-Level clear
-Fix bug where tilemap glitches after being pushed backwards.
Here's an executable, although I think I accidentally made the level so that it's impossible...lol Source attached, I didn't bother putting up the data include files though :P
-
That looks like a very cool game and the graphics and gameplay seem very nice! Good job squidget, as usual, awesomesaucing on us!
What is CalcGS by the way?
-
@Squidgetx: I'm not familiar with the original, but it looks pretty cool. :)
@Ephan: Calgs is an old program for making graphics for use in calc projects. It has a windows release, but I'm not sure about other platforms. It should be on ticalc.
-
I was going to do this at first for the Axe contest. But yours looks way better. ;)
-
Awesome! I loved the original, and this looks promising.
Brotip: Make him fall a bit faster, and maybe take out the acceleration to make it simpler (I don't think the original game had acceleration either)
-
I like the idea. I've never played the original, but I am looking forward to this all the same.
-
Thanks for all the positive feedback :D
I've started putting in the infrastructure for level clears, dying, etc, and I've upped gravity so that he falls a bit faster as well.
-
coolio! i should try a quick arcade game too.
good luck on powerups. you have this game in the bag. =)
-
I tried sending this file to my friends ti-84 se but when I transfer it, the ti-connect software gives me an error message saying that my device does not recognize the command. How to I fix this?
-
I tried sending this file to my friends ti-84 se but when I transfer it, the ti-connect software gives me an error message saying that my device does not recognize the command. How to I fix this?
What device are you using? What cable are you using? What was the order of what you did to transfer it? Have you been able to successfully transfer between your two calc's before? What OS is on your calc, and your friends calc?
-
I don't think the original game had acceleration either
There is acceleration in this one : http://armorgames.com/play/7508/gravity-guy
Looks nice ! :)
-
Also, I've seen 84s out there, SE and BE, that have never been updated since they were bought. One had an OS with a version number that started with 1!
The point of this is that the OS may be super old, and the error it's throwing may be legitimate.
-
I am transfering it from my computer to my freinds ti-84 plus se. The cable is a mini usb to usb. The OS on the calculator is 2.55 I believe. I used TI connect.
-
I am transfering it from my computer to my freinds ti-84 plus se. The cable is a mini usb to usb. The OS on the calculator is 2.55 I believe. I used TI connect.
ah ok, have you been able to successfully send other variables to his calc? If you have a silverlink I would recommend using that since the USB code is kinda bad for TI-connect.
-
I have not been able to send other applications to his calc.
-
Do you already have any apps on it? I've had experiences when a certain app would for some reason block other apps from being sent..
-
Do you already have any apps on it? I've had experiences when a certain app would for some reason block other apps from being sent..
I have nothing but the default apps on it.
-
And what are the default apps? How much mem is free?
/me does a double-take and realizes this is a program and not an app :P
Using ti-connect, are you sending it (to your calc) as a program? (8xp)
-
I get this problem a lot with TI-Connect (Btw, darl, the engine is around 600 bytes; the rest of the filesize is data hehe)
Try this: Disconnect the cable and calc completely from the computer. Make sure there's nothing valuable in RAM, and clear the calc RAM (2nd-Mem-7:Reset) Restart your computer, plug in the calc, and try again.
-
I have not been able to send other applications to his calc.
It sounds like it's not a problem with this program specifically but his calc, or your copy of ti-connect. How about you open up another topic and give details like, what version of ti-connect you are using, calc model, OS etc, and any other information you can think of that will help us figure out the issue
-
I have not been able to send other applications to his calc.
It sounds like it's not a problem with this program specifically but his calc, or your copy of ti-connect. How about you open up another topic and give details like, what version of ti-connect you are using, calc model, OS etc, and any other information you can think of that will help us figure out the issue
Okay, but I will try what squidgetx said first if that doesn't work I will create a new topic.
-
Whoo, update!
-Made it more playable
-Block falling animation for when you die (The blocks will fall in whichever direction gravity is going; cool, eh?)
-When you die, it starts the level over (I'll have a countdown in future versions)
-Bugfixes
*Todo*
-Title Screen/Level Infrastructure
-Countdown thingy
-Powerups
-More tiles and levels
I've built level two but it's not included here, soz :P
-
Loving the tile death animation ^^ Everything seems to be progressing awesomely :D Good luck adding the last features!
-
I like the dying animation too. :)
-
Wow, that death animation is awesome. The entire game looks wonderful. :)
-
Looks nice :)
-
If I'm spending more time watching the screenshot than doing HW, you know that program's good. ;)
(Particularly the death animation)
A suggestion - I'm not sure how your game will be organized, but maybe you could make a little popup (animated and pretty, of course) that shows up after you die letting you restart the level, save the game, or exit? :)
-
alberthocks: Almost done (The animation part is done, I'm considering making it a custom font over TI font text. This menu will double as the pause menu.)
Working on title screen/spriting atm. The exec right now is in an unplayable state so I'll clean it up before I make another update.
-
HUGE update :D
-Animated pause and main menus
-Two more levels (although the third one is basically impossible I think)
-Speed increase blocks
-New tiles
-Infrastructure cleanup
-Bugs/optimizes
Todo:
Make main menu prettier
Custom levels
More levels
Snail powerup
Almsot ready for a release O_o
-
That looks pretty freaking awesome. As in, better than the Flash version of the same game. However, the countdown thing is kind of hard to say, it might be good to put it in a box with a cleared background or something.
-
Wow. That looks epic./me needs to work on making his programs prettier.
-
Squidgetx, you or leafiness should totally write some kind of tutorial or thread on how to make l33t calculator graphics and animations.
-
Yes, plz!
Like, design tips or something, and also Open The Damn Menu Factor* (coined by a Disney DVD menu designer, not I)
*OTDMF puts an upper limit on your transitions. It doesn't matter how epic the transition is if it takes half a minute.
-
Done. I may make changes to it later.
I gotta finish up these levels and get a release out soon :* maybe this weekend after I finish up a couple of essays...
-
Almost ready for a release. I opted out of the powerup thing since the game is too easy with it on ;)
I'm going to try and compress some of the data so I can get some more levels, but idk how...I'll look at Iambian's pucrunch axiom and/or write my own RLE routines...
-
I am excited to play this game.
-
I am excited to play this game.
I still need to edit some of the levels, but I'm really almost done.
Question to you guys: would you rather have this game be like
1) Psyche: built in default levels with custom suuport (file size ~9k)
2)Heald's Super Mario: no built in levels custom support (file size ~4k + 5k levelpack)
3)Levels built in no custom support
And, I need help with compression. I have no idea how to practically write an oncalc RLE routine (how do you know how big the output file is?) and I don't know how to program on a computer LOL
-
Question to you guys: would you rather have this game be like
1) Psyche: built in default levels with custom suuport (file size ~9k)
2)Heald's Super Mario: no built in levels custom support (file size ~4k + 5k levelpack)
3)Levels built in no custom support
Way 1 all the way. :D
-
Definitely the first one.
Also, BuilderBoy wrote a good tutorial on RLE, here it is:
Map data format:
The data uses run length encoding for comression. Lets say we had a simple map:
11111000001111
00000222220000
Pretty simple, each number representing a different tile. With normal storage this would take
a single byte per tile. Or we could represent the data in a different way:
150514052504
Seems much smaller, but what does it mean? lets insert some imaginary commas and dashes to make
it easier:
1-5,0-5,1-4,0-5,2-5,0-4
Now you may or may not be able to see how the data is represented. The first segment is 1-5, or 5 '1's in
a row, followed by 0-5, or five '0's in a row, and so on. This is how the data in run length encoding is
represented. And to further the compression (or confusion), each #-# segment is packed into a single byte.
Instead of two hex digits to represent a number from 0-255, we will have 2 hex digits, each from 0-15,
representing the two numbers of each #-# element.
The first Hex digit 0 to 15 is the tile number. The second hex digit is the number of tiles to add to the
tilemap. The digit goes from 0-15, but 0 doesnt make much sense, since that would mean this element doesnt
do anything :P, so we will add one to this after we decompress it so that it has a range of 1 to 16.
There is a small disadvantage that if you have empty spaces of 17 or more in a row, it will take more than
1 byte to represent in the code.
[Data]->GDB1 //map data to GDB1
[tileData]->Pic1 //tile data for tilemap
0->N //element index for map data
0->I //map index for storing tile data
While I>=96 //until we have stored all tiles
{GBD+N}->A //Take the first element of the map data
N+1->N //Increment the map index
A^16->B //spit the map element into it
A/16->A two seperate elements
For(F,0,B //fill the map from current position I to I+B
A->{L1+I} //could be optimised with Fill but i couldnt get it
I+1->I //working :/
End
End //End while
After this code is run, the tile data will be decompressed into L1, as folows
0 1 2 3 4 5 6
7 8 9 10 11 12 13...
ect, it will be in a straigt line, but you will have to access it using your own routine. Something like this
{Y*W+X+L1}
where W is the width in tiles of your map. X and Y would be the tile coordinates starting at the top left at
0,0.
Displaying the map:
here is a rudimentary program that should be run right after the pervious decompressing program:
For(X,0,11 //loop through the entire screen coordinates with tiles of 8x8
For(Y,0,7
{Y*12+X+L1}->A //retrieve the correct tile from the data in L1
Pt-On(X*8,Y*8,A*8+Pic1 //draw the sprite to the screen
End
End
...hope he doesn't mind my posting it here.
-
Epic game.
Also I'm for external levels only.
-
buttfredkin: I already know what RLE is, I just can't think of a practical way to make an on-calc compressor. Namely, how do you know how large the output is going to be? I think I'm going to have to do something rather inefficient: make the output file 1024 bytes (the size of an uncompressed map) and then keep track of the file size as the data is compressed...and then use memkit or write my own routine to change the final size of the file.
Once the data is compressed I imagine the engine+compressed levels will only be around 6 or 7k of data :P
-
... Namely, how do you know how large the output is going to be? ...
... Perhaps just make a two pass system, the first pass to evaluate the data for the output size, the second for compression? Isn't that kind of the standard approach?
-
I think its feasible - everytime you compress a block it turns inyo a byte, so just increment a counter as you go along.
-
buttfredkin: I already know what RLE is, I just can't think of a practical way to make an on-calc compressor. Namely, how do you know how large the output is going to be? I think I'm going to have to do something rather inefficient: make the output file 1024 bytes (the size of an uncompressed map) and then keep track of the file size as the data is compressed...and then use memkit or write my own routine to change the final size of the file.
Once the data is compressed I imagine the engine+compressed levels will only be around 6 or 7k of data :P
My bad. All I read was RLE Compression, and I thought, oh, BuilderBoy knows how to do that. :)
... Namely, how do you know how large the output is going to be? ...
... Perhaps just make a two pass system, the first pass to evaluate the data for the output size, the second for compression? Isn't that kind of the standard approach?
I'm with Ashbad here. That sounds like the right approach to me.
-
Alternatively, you could compress the data into a free buffer like L1, and then afterwards, create your appvar to the right size and copy it in. Still kinda a 2 pass system, but a different type ^^.
-
I like having External levels only, because then I don't have to have all that free ram.
I keep hundreds of files on my calc, and my VAT is a gigantic monstrosity.
I can't run Dimension Shift, (why is that thing so big anyway) my VAT is too big. I am a huge proponent of external levels.
-
All of Dimension Shift's levels are external :P and I didn't get around to optimizing it before the contest ended. Maybe when I finish Essence..
As for this game, I'd go with the second option, external levels. That way you can be sure that there aren't levels you never touch just taking up space, only the ones you'll play ;)
-
Well, we'll see how the compression goes...
If I get around 75% compression I'll go with Option 1 for sure (filesize: max 6k including levels)
Otherwise I'll go with Option 2 (filesize ~5k)
-
Woo, 70% compression is hot.
I think my compressor is slightly broken though; sometimes tiles don't actually correspond to the right values...
I just realized I should use a fill() in the decompress routine over a for() loop. LOL
Back to work!
-
The port is looking great. Yesterday, I was at a friend's house and we played the Flash game in multiplayer. He is very good at the game, and he really plays like a pro. When I showed him a screenshot he was super excited and he went like "Woah, when will this be out? I want it on my calculator".
I was wondering if the calculator port will feature multiplayer.
Good job so far and good luck with what's left squidget!
-
Alright squidgetx a couple of problems ^^ I've played this too much I think.
1) Detection is off. It detects to the back of the sprite, so you fall through tiles at the front.
2) The in-game menu swaps the position of main menu and restart so it's kinda irritating moving to the right one :/
Other than that, this game is frickin amazing! :3
-
Wow. This looks ridiculously good. I can't wait for more progress! :)
-
Leafiness0:
1) Yeah, detection is kinda off. I've been trying to fix it, but been running into a few problems. I think though I just realized what could be wrong....
2) That's a side effect of having the menu fly in from different directions depending on gravity. Do you think it would be better if the menu just flew in from the same place no matter what gravity is pointing to conserve the order of 'menu' and 'restart'?
JC:
Thanks, I'm thinking about adding more special effect tiles :D
-
You could put in some extra code to flip the two options.
-
I could, but that would be kinda awkward....mehhh
In the meantime, my decompressor is randomly shitting all over itself...hopefully I'll be able to get some work on it sometime soon but no new news as of now =/
For the progress/attempts counter, I'm trying to think of a way to make it remember the stats for external levelpacks. The only ways that I can think to do that are...
1) Unarchive, write data to, and rearchive the level set every time the level is played
2) Force user to keep levelset in RAM, and if the set is deleted, the stats are lost
3) Somehow make an appvar that can keep track of all the stats at once (this would require a crapload of unecessary code) and that also needs to be archived/rearchived every time the game is run.
Yeah so basically none of these choices are pretty. Any other ideas? Or is it ok to disable these stats? (How helpful/cool are they? If it helps, I can make the game keep track of attempts/progress per game run, a la the Impossible Game)
-
I think option 1 or 3 sounds the best. Personally I wouldn't mind the archiving, as I think the stats would be cool. Perhaps you could make it an option. (I.E. Save Stats or Quick and Volatile)
-
Unarchiving/Archiving isn't a big deal if the stats are less than about a 100 bytes. I have to Garbage Collect every about six-eight times I compile a 6,000 byte program and Axe archives a backup, which is a little annoying.
-
Problem is I really really don't want to do 3 and 1 the appvar being unarchived/rearchived would be ~1.5k, unless I had two files for each levelset which would just be stupid. 2 I do t like because if I was the user I would hate it and I'd be archiving and unarchiving a lot already. I don't like the idea of so much automatic archiving and unarchiving of a larger variable not only because it sort of wears the flash but also because it will take ages after exiting :P
I think a good compromise would be to have temporary stats. this would be relatively easy to do: basically have an attempt and percentage counter show on the pause screen :)
-
try to use SMC
-
Finally got compression working -_-
@ aeTIos: How about giving more detailed advice than just 'try to use SMC'? How would that help me? Why would I want to use SMC? Do you think I haven't already thought about it? The problem is that SMC and writeback wears the flash even more than archiving and unarchiving. besides, i don't even think it would work. Can you think of a way to do it using SMC?
-
I have the game on my ipod now. It's kinda addicting. Hope it feels the same way on calc :)
-
I can't believe this final release is taking so long; it seems that all the loose ends (level editor, compression, ext. lvl support) are taking longer than the creation of the engine itself O_o
Leafiness; Fixed the collision bug ^^ but now I have to rearrange some of the levels because they abused the glitchy collision haha :P
-
I can't believe this final release is taking so long; it seems that all the loose ends (level editor, compression, ext. lvl support) are taking longer than the creation of the engine itself O_o
Welcome to my world :P Hope you can get the release out soon ^^
-
I can't believe this final release is taking so long; it seems that all the loose ends (level editor, compression, ext. lvl support) are taking longer than the creation of the engine itself O_o
Welcome to my world :P Hope you can get the release out soon ^^
yeah, I guess that's how it is for me and Portal X. BuilderBoy spent a lot of time on the engine, and I don't really know how much my time compares (I'm probably doing much much less than he did), but that's what it feels like, for sure.
-
I cant wait for any of the three games, Portal X, Graviter, or this one, Gravity Guy. They all look AMAZING, and I would love to be able to do something like these in axe. Props to you all for the effort.
-
Soon...
I must build a level editor. Which isn't really that hard...just annoying...sigh..then fix the levels and add a menu interface...oh and the stats thing. On the other hand I just submitted my early action application to college so maybe I'll be able to find more time...
-
Finished, put into zContest.
Here's the first official release :D Nothing really new, just overall cleaner and I also added 2 more levels.
Now to start on Cemetech's contest :O
-
This looks really good! Nice job!