After 2 days of programming, and 1.5 days of configuring, I present: IcyCraft for the TI-84+CE!

This game is a Minecraft look-alike, and despite the 2D graphics, the world is actually in 3D!

All of the block/item textures are stored seperately from the program itself, and 98% of the block behaviors are customizable!

The textures for this game have to be 8x8. I am not going to change this, because there are up to 256 sprites. If there were 256 16x16 sprites, it would require more bytes than the maximum appvar size. (16*16+2)*256 = 66048 Razz
The format of these sprites means that they can be made and exported using TileMapE! shameless self promotion
The block/item behaviors are written using hexidecimal look-up-tables, and 16 byte block/item names.
The crafting recipes are written seperately, and can have up to 6 ingredients, and 1 result. The ingredients can't be any more than a stack, otherwise the recipe will never craft. This is only because of the way it searches the inventory for the items necessary to craft something. So even if you have enough of an item in your inventory, you need enough of it in one stack.

Each vertical layer of the world data is written into a seperate appvar, to maximize the possibilities.Each chunk is 8x8 tiles. The X, Y and Z chunk coordinates go from 0-255. I have put in a catch for when there is too much data in the appvar. When there is more than 984 chunks in a layer, it will simply repeat the very last chunk generated for that layer.
984 chunks is actually a lot of blocks (for a calculator). Each layer can have up to 62976 blocks. The game generates blocks from layers 0-64. The game will generate 4093440 blocks in total, which is more than the entire calculator's flash memory can store. The true maximum space that can be generated is 16121856 blocks, despite that being over 4 times the memory of the calculator.

I will be uploading a download to the Cemetech archives as soon as I believe the game has enough default content.

Eye candy:



IcyCraft version 2.1 is now in the archives!


Anyone who has any content suggestions for IcyCraft, or have experienced any bugs, or gameplay issues: please feel free to post here!
CC22 rules wrote:
You cannot copy or use part of any other program, and no program previously published is eligible; this has to be entirely new.


Unfortunately this means this program is ineligible because it was started before the contest was announced so it isn't "entirely new".
_iPhoenix_ wrote:
CC22 rules wrote:
You cannot copy or use part of any other program, and no program previously published is eligible; this has to be entirely new.


Unfortunately this means this program is ineligible because it was started before the contest was announced so it isn't "entirely new".


Good point. Good thing I am withdrawing it from the contest Razz
I like it how I got added to the Credits to this! Thank you Beck for making this!
Version 2.8.3 is now archives pending!

Eye candy:
The inventory editor in action:

Testing break/place/replace:

Farming/BUD test:

My world:
Looking fantastic! I didn't see an explanation for this yet, why is the screen limited to 9x9 tiles?
TheLastMillennial wrote:
Looking fantastic! I didn't see an explanation for this yet, why is the screen limited to 9x9 tiles?

Well, I could have up to 15x15 tiles, but I chose 9x9; mostly because that's what I've always done since I came up with this engine.
The chunks are 8x8 tiles each.
The rendering is done from a buffer, which is loaded from 4 'quadrant' pointers, each one pointing to a chunk in RAM.
This buffer is copied from the chunks. Having this buffer makes clipping and BUD checks a lot faster.
If I made the viewport larger than 15x15, I would need 9 chunk pointers in order to draw the viewport.

So, to answer your question: there isn't really a reason, other than 9x9 being the least number of tiles which benefits from this algorithm; but I could do up to 15x15
I know I said that I'd do this a while ago, so I'm doing it now.
Here is the dev info for IcyCraft 2.8.3 (latest release)
"ICYtxp00" Appvar

Code:

Textures for IcyCraft are most easily made using TileMapE.
Just export a tileset from TileMapE and call it "ICYtxp00"

If you are editing the default textures, then do this instead:
Edit "icy" from TileMapE, then export it as "ICYtxp00"
Edit "icyitm" from TileMapE, then export it as "ICYitm"
Lastly, use ICE to compile and run "ICYTXSRC" (provided in this folder), and the textures will be ready to go!

NOTE: If you need TileIDs higher than 0xBF (191), then you will need another tileset.
Edit "ICYTXSRC" and have it append that data (exported) to the end of "ICYtxp00", after "ICYitm" has been appended.

If you would like to use another software to make the tileset, make sure that the sprites are 8x8 and 66 bytes long each, formatted as: X size, Y size, x*y pixels. Otherwise IcyCraft will not work as expected.

"ICYbvr00" Appvar

Code:

The behavior packs are essentially hexidecimal Look-up-Tables.
There are 256 tiles, each tile gets its own entry.
It is ordered as follows:

256 bytes: block/item flags
[high] bit 7 - if set, the player will not be able to move onto this tile
       bit 6 - if set, this tile will move the player up or down
       bit 5 - if the above is set: set=up, unset=down
       bit 4 - if set, this tile can be interacted with
       bit 3/2 - 00=chest, 01=crafting table, 10=furnace, 11=Third (unused) crafting method
       bit 1 - if set, this block can be placed
[low]  bit 0 - if set, this block can be broken

256 bytes: tile downward place

256 bytes: tile upward place

256 bytes: tile damage values (if the block is placeable, will act as value needed to break. Otherwise it acts as a tool)

1024 bytes: tile drop values
      first byte: drop item
      second byte: drop amount
      next 2 bytes: unused

64 bytes: Z>64 tile spawning
64 bytes: Z=64 tile spawning
64 bytes: Z<64 tile spawning
64 bytes: Z<24 tile spawning
The above 4 lines: First byte is default 'tile broken' tile, up to 62 different tileIDs to spawn, followed by a null. If the first 2 tileIDs to spawn are null, it will always spawn null

4096 bytes: TileID names. Each one is [up to] a 15 character string, followed by a null.


In the "default_resource_pack_source" folder, there will be a program called "ICYBVSRC". This is the ICE source file for both the recipes and behaviors

"ICYrec00" Appvar

Code:

Each recipe is 16 bytes long.
There must be 2 null bytes at the end of the file, otherwise the player can scroll past it in the crafting menu, causing unexpected effects!

Each recipe starts with 1 byte determining how it must be crafted.
00 can be crafted from any method
01 can only be crafted from a crafting table
02 can only be crafted from a furnace

The following 2 bytes are the resulting TileID and amount to give.
The next 12 bytes are the ingredients. TileID, amount.
NOTE: any recipe with an ingredient requiring more than 64 of an item CANNOT be crafted.


Hope this helps anyone who wants to develop resource packs and mods for IcyCraft! Smile
I am in the process of overhauling the engine internals, to make way for a few important new features!
This is requiring me to roll most of the constants into a list of pointers, instead of having a name for each pointer.
(This is a workaround for the 85 variable limit in ICE)

TODO:
-Biomes
-Structures
-Entities
-Tool damage
-Tool classes
-Add actual creative mode, rather than a seperate inventory editor
TBD:
-Item tags (would allow for enchanted and named items)
-Signs (only if the above is implemented)

Get hyped! Cool Very Happy
I have been working!
The creative inventory has been integrated. Now just polishing it up.
Biomes are now implemented
Structures are now implemented
Hunger and eating is also implemented and done.

The only things left for me to do before I release version 2.9.1 is add more content, and wring out the user interface bugs.

Very Happy Very Happy Smile
Yes! I can't wait!
I love the progress!
Can we have an in game tutorial?
slimeenergy wrote:
Can we have an in game tutorial?

Why? There is a perfectly good README included and that would only take up more space, so there would be less space for worlds Razz
beckadamtheinventor wrote:
slimeenergy wrote:
Can we have an in game tutorial?

Why? There is a perfectly good README included and that would only take up more space, so there would be less space for worlds Razz

A how to guide could be an optional addon, but I do see how it can be unnecessary. I'd prefer having a tutorial on-calc so I don't have to keep referring to the README, but then again I'd probably only need to glance over it a few times before I learn the game. It's probably not worth the effort of making it an optional addon, so I retract my original question.

Also:
I have no idea why, but I can't figure out how to mine blocks orthogonal to me. I'm probably just missing something obvious. I read in the README that you use the movement keys to break/place, but it doesn't seem to be doing anything when I run into the wood tile.
Jeffitus wrote:
slimeenergy wrote:
beckadamtheinventor wrote:
slimeenergy wrote:
Can we have an in game tutorial?

Why? There is a perfectly good README included and that would only take up more space, so there would be less space for worlds Razz

A how to guide could be an optional addon, but I do see how it can be unnecessary. I tend to prefer being able to learn to play on-calc without having to refer to the README.

This is literally not how calculator games work. The readme is there for a reason, so the game file itself isn't unnecessarily large. What I usually do is have a brief explanation in-game, but more in-depth instructions in the readme.


Yea, but perhaps a list of keys and what they do would be useful. If you read the whole post you would have seen that I decided to retract my original statement as it wouldn't be worth the effort of making it an optional addon when you could just learn the game after a few glances of the README.
slimeenergy wrote:
beckadamtheinventor wrote:
slimeenergy wrote:
Can we have an in game tutorial?

Why? There is a perfectly good README included and that would only take up more space, so there would be less space for worlds Razz

A how to guide could be an optional addon, but I do see how it can be unnecessary. I'd prefer having a tutorial on-calc so I don't have to keep referring to the README, but then again I'd probably only need to glance over it a few times before I learn the game. It's probably not worth the effort of making it an optional addon, so I retract my original question.

Also:
I have no idea why, but I can't figure out how to mine blocks orthogonal to me. I'm probably just missing something obvious. I read in the README that you use the movement keys to break/place, but it doesn't seem to be doing anything when I run into the wood tile.

That is because there are two keys for breaking and two keys for placing.
[Y=]/[2nd] break up/down
[Alpha]/[math] place up/down
Also: use the apps key to lock/unlock player movement. This helps when placing interactive tiles, so they don't activate add you place them.

RTFM SVP Razz
beckadamtheinventor wrote:
slimeenergy wrote:
beckadamtheinventor wrote:
slimeenergy wrote:
Can we have an in game tutorial?

Why? There is a perfectly good README included and that would only take up more space, so there would be less space for worlds Razz

A how to guide could be an optional addon, but I do see how it can be unnecessary. I'd prefer having a tutorial on-calc so I don't have to keep referring to the README, but then again I'd probably only need to glance over it a few times before I learn the game. It's probably not worth the effort of making it an optional addon, so I retract my original question.

Also:
I have no idea why, but I can't figure out how to mine blocks orthogonal to me. I'm probably just missing something obvious. I read in the README that you use the movement keys to break/place, but it doesn't seem to be doing anything when I run into the wood tile.

That is because there are two keys for breaking and two keys for placing.
[Y=]/[2nd] break up/down
[Alpha]/[math] place up/down
Also: use the apps key to lock/unlock player movement. This helps when placing interactive tiles, so they don't activate add you place them.

RTFM SVP Razz


Oh, I understand now. I apologize for my stupidity. I was assuming "break up" meant breaking the block a layer above you for some reason, rather than the block on the same layer as you.
There is already progress on 2.9.2! Very Happy



Already implemented:
* Custom Texture pack loading
* Custom Behavior pack loading
* Remembering the current behavior/texture packs, so you don't have to input them every time you load the game!
This looks really cool, but the player is very hard to see on the green tiles. Is there an option to change the player sprite?
Jeffitus wrote:
This looks really cool, but the player is very hard to see on the green tiles. Is there an option to change the player sprite?

Yes, there is. Through modding it is possible to change just about everything in IcyCraft!
(Detailed modding info coming soon)
  
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
Page 1 of 2
» All times are UTC - 5 Hours
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

 

Advertisement