This is a read-only snapshot of the ComputerCraft forums, taken in April 2020.
Antelux's profile picture

MiniatureCraft 2.x Alpha Edition

Started by Antelux, 21 December 2014 - 08:39 PM
Antelux #1
Posted 21 December 2014 - 09:39 PM
Play the alpha! pastebin run FgAggvy1 <directory> <alpha>

If there are any OS's looking to include my game, your allowed to, given you inform me first, and receive my permission.

So, I've been working on MiniatureCraft, and I reformed it. Again.
The first time I did so was to make the game full of features. This time around, however, efficiency and performance are much more of a top priority.

And so, I give you MiniatureCraft: 2.x Alpha Edition. It's Github Branch can be found here.

I put the "2.x" as I'm not sure what version it shall be, as there are so many changes to the game. Making it something like "MiniatureCraft 3.0" seems rather silly to me.

So, here's a list of changes as of now:
  • Every API (Except for Chat) has been completely redone, optimized, and just cleaned up in general. APIs also have changed to return a table of functions.
  • APIs no longer have their functions injected into _G.
  • Error logging has been made nicer and easier for use by APIs and the game. You can find errors in the error folder.
  • require(), unload(), and reportError() (See above) are the only functions put into _G. These functions are used to load or unload APIs, or report errors.
  • The Menu and File API have been removed.
  • The following APIs have been added to the game: Noise, Client, Interface, Server, Keyboard, Keybindings, and Timer.
  • The Buffer API now supports shaders.
  • Commands can now be added to the game.
  • World generation has been completely overhauled. The world is now procedural and infinite. Though, players can only travel the overworld as of now.
  • The Player and Entity APIs now are more object oriented. You call the function Player.player(name) or Entity.entity(id) to get the player or entity object, and modify it directly (i.e. player.x = 1, player.color = colors.blue, etc)
  • The Client API is used for connecting to servers, and getting general info about the game state, such as being paused or not.
  • Mods now are required to return a table. Check the latest page for what parameters they can have.
  • The Noise API is used for generating the chunks.
  • The Server API is used for allowing people to play on your server.
  • The Interface API is used for drawing and updating interfaces and GUIs.
  • The Keyboard API is used for getting the currently held down keys.
  • The Keybindings API is used for setting and getting keybinds.
  • The Timer API is used for creating timers which don't require events to be used.
  • Many Assets have been tweaked, modified, etc.
  • Tiles and blocks can now have a tick() function which is called 20 times a second.
Here are the controls as of now:
WASD keys are used to move the player.
Left Shift is used to lock the player's facing direction.
R will unload all chunks from memory, without saving them. This will be automatic later.
E will exit the game.

Left and Right Click will place or break a block or tile.
The scroll wheel changes the asset you currently have selected.

I ask that you guys try out this new version, and give me your input on it. Thanks.

Here's the old post for version 1.98b-Beta:
SpoilerSo! I'm sure alot of you remember this from a while back. Recently, I had been remaking the entire game from scratch, and it seems to be working out fine so far.

Whats New:
* Much more sensible world generation code, cleaned up and made more efficient.
* Less memory consuming tables, and a complete overhaul of how maps work.
* Worlds can actually be any sized rectangle, as compared to the weird way of before.
* Blocks, tiles, items, or basically just about any asset can have (theoretically) an infinite amount of animations, and each individual block / tile in the world holds data for which animation its on, so not all of the same blocks / tiles change their animation to the same exact thing. (Though, they all change their animation at the same time, half a sec)
* Animations can also have different times assigned to them. One animation can happen once a second, up to twenty times a second, or anything in between.
* New generation tools, such as "brushes".
* Complete overhaul of the Player API. It's designed to be able to hold data for multiple players now, instead of just one. Useful so that when I make a server script, I can reuse the APIs available instead of making separate ones.
* Assets are no longer serialized in separate files, there is one file called "Assets" that adds a function which returns the assets. Why? Saves a ton of space compared to serializing it.
* Adding mods in is much easier, one universal function to do it.
* Once you reach the borders of the map, the offset will stop changing, so you wont see that weird drawing bug on the edges.
* Assets are no longer limited to IDs 1 - 1000. They are now limited to 1 - Infinity.
* The game now automatically checks for the directory it's being ran from. No more hassles when changing the location of the game.
* The game auto-updates whenever a new version is available.
* Faster buffer in general, at least 25 - 50% faster.
* Sandboxing of lua scripts and mods.
* Worlds save and load in binary, allowing for smaller file sizes.
* Added the ability to chat, and run commands from here as well.
* Better pocket computer support.
* Better and faster game engine.
* A lighting system.
* A time system.
* NoColor Support.
* More overall stability.
* Working entities.
* Better in-game interfaces.
* Plenty of new functions for modders.
* Blocks such as chests, which keep their content.
* Auto-save feature.
* And more! (Lots more of internal stuffs.)

Key Features:
* Loading / Saving your worlds.
* Survival / Creative Modes.
* A Time System.
* Crafting / Smelting.
* A Variety of Blocks and Items.
* Options menu for tweaking your character.
* Inventory Management.
* (Finite) Randomly generated worlds, which can be made from 64x64 to 256x256 when creating your world.
* Pick up and play controls.
* Modding.
* In-game animations.
* Entities.
* Auto-world saving.
* Trees grow, water flows, etc.
* Rather fast buffer.

Controls:
Controls in game:
W or Arrow Key Up: Up
A or Arrow Key Left: Left
S or Arrow Key Down: Down
D or Arrow Key Right: Right

E: Interacts with the block your facing. If there isn't a block, then it opens your inventory.
Shift: Keeps character from switching direction when moving.
Space: Uses the currently equipped item on the block / tile directly in front of you.
Backspace: Enters the Pause menu.
T: Enters the chat. Similarly, "/"enters the chat as well, used for doing commands quicker.

F1: Hides the GUI / Exits the chat.
F3: Shows / Hides Debug info.

Controls in menus: (Default, only changeable via editing code)
W or Arrow Key Up: Moves up.
A or Arrow Key Left: Moves left.
S or Arrow Key Down: Moves down.
D or Arrow Key Right: Moves right.
E: Usually exits the menu.

Enter: Chooses the currently selected item.
Gray boxes are for text input. Click them to enter text as you normally would.

Considered / Planned / Upcoming Features:
* Ability to tie Lua scripts to just about any kind of asset.
* Revamped Menu API.
* Actual multiplayer.
* Better Entities.
* New assets as more of the game is put together.
* Better Lighting system.
* Ability to change key bindings.
* Redstone: Should be possible, and easy enough to do. Gonna look into this.
* The "Underworld": A nether like dimension.
* "Stream Mode": Says below.
* Fire: Because who doesn't like fire.
* TNT: Because who doesn't like explosions.
* Mob Spawners: Because the caves need some kind of meanies.
* Dropped items as an entity.
* The ability to make mobs and blocks larger than 1 pixels, because reasons.
* Particles: The ability to define and add particles as an asset, because that might be cool.
* Game Launcher: Ideally, from here, you could look at the latest MiniatureCraft news, download mods, and look at errors the game throws back.
* Fishing: Everyone likes fish.
* Held Torches: Walk around with more light.
* Your suggestion here, if you post it, and I like it.

To-do (To next release):
* Make the chat commands have more restrictions!
* Make it so that you can add new dimensions instead of just modifying current ones
* Finish the lighting system so it works with blocks.

Just to get an idea of some of the changes compared to the old MiniatureCraft, here's a sample of a 128x128 map generated by the current code: (Levels are like layers, the higher number being the higher "layer.")
SpoilerThis is "The Outerworld," or level 1. Here, clouds and cacti spawn naturally. The black tiles are "Infinite Fall Tiles," and touching them is like falling off the "Clouds." They do similar damage to lava.
Spoiler

This is "The Overworld," or level 0. Here, stone, coal, water, sand, flora, trees, and cacti all naturally spawn. There are also "Staircases" leading up and down each level.
Spoiler

This is "The Upper Caves,", or level -1. Here, dirt, stone, iron, and coal spawn naturally.
Spoiler

This is "The Midpoint,", or level -2. Here, stone, coal, and gold spawn naturally.
Spoiler

This is "The Lower Caves," or level -3. Here, stone, coal, gems, bedrock, and lakes of lava spawn naturally.
Spoiler

Final Notes on World Generation:
* As you go deeper into the levels, caves are less likely to spawn.
* Certain ores can only be found on their respective levels.
* It's just about complete. I may add a "Underworld" in the future with a nether-like feel, but for now, the necessary levels have been made.

So again, let me know what you guys think, what you do want to see, and what you don't want to see. Thanks!
Edited on 01 November 2015 - 09:41 PM
Antelux #2
Posted 22 December 2014 - 11:45 PM
(Mostly) Finished up the world generation. The lighting API will be next soon enough, after some player bugs are fixed.
Antelux #3
Posted 03 January 2015 - 08:26 PM
Hey. It's been a bit since I made my last post, so I'll just do a quick update on the game.

I've added A LOT more stuff, but again, it's mostly internal code rewrites. It should be alot more efficient than the old game, less clunky, and easier to understand. Though I won't go into detail about all that was added simply because it was internal, here's a sneak peak at whats done so far.



Hopefully this goes well.
Antelux #4
Posted 04 January 2015 - 07:29 PM
Hey. I finally made it so that there is a function to update the world, similar to what chunk updates do in minecraft.

Now, water and lava are able to "flow" into holes tiles. Grass is also able to (slowly) creep onto dirt blocks.
I'll be adding the ability for trees and crops to grow, too.

Right now, the method of checking what things should flow or grow right now is hardcoded. In the future, I'll make it so that any asset with the type "liquid", "sapling", or "seed" will be able to grow or flow anywhere, regardless of it being in a mod or not. This should be easy enough to do, and you expect this to be done by the time the game is released.

I would make a screenie or a gif, but I'm too lazy :P/>

P.S. It's okay guys, you can post here too. Besides, how else will I know if anyone is actually gonna play this or not? Though, I expected other posts by now.
Edited on 04 January 2015 - 06:31 PM
MKlegoman357 #5
Posted 04 January 2015 - 07:38 PM
We're just silently waiting for the game to be completed :P/>. I'm most interested in modding this thing..
Antelux #6
Posted 04 January 2015 - 09:39 PM
Modding is probably gonna be one of the funnest things you can do with the game.

At the game's completion, you'll be able to do:
* Add your own assets (Ofc)
* Tie scripts to block and items
* Create new and customized entities with their own behavior
* Create plugins for the server script
* Change / add in your own world generation code
* And other stuff I can't think of at the moment

EDIT: Basically, just about anything I do in the game is do-able by mods.

Right now, I'm tackling a bug with the player not centering in the screen correctly, as well as the player being unable to place blocks / tiles.
Should be fixed soon though, and then I can get back to completing the interfaces.
Edited on 04 January 2015 - 08:41 PM
Antelux #7
Posted 07 January 2015 - 10:19 PM
This information was moved to the top post.
Edited on 03 July 2015 - 05:39 PM
MKlegoman357 #8
Posted 07 January 2015 - 10:38 PM
Automatic updates? yes. Depending on internet connection? no. I think that having the program download all files it need on each run is a bad thing. It's slow, it's eating internet and if you restart it a lot you will only get frustrated by the speed of your internet connection. Also, that would mean you wouldn't be able to play the game offline.
Antelux #9
Posted 07 January 2015 - 10:45 PM
Automatic updates? yes. Depending on internet connection? no. I think that having the program download all files it need on each run is a bad thing. It's slow, it's eating internet and if you restart it a lot you will only get frustrated by the speed of your internet connection. Also, that would mean you wouldn't be able to play the game offline.

Actually, the game isn't THAT big that it will take 10 minutes each run. It'll be around 5 - 10 seconds, as compared to the 1 second needed if the files were actually there. In fact, as of now, the game is only ~100 KB.

Also, this is just an option, meaning it won't be the only way to play the game. I just want input on if it's worth adding.
I'll clarify anything that's asked, though.
MKlegoman357 #10
Posted 07 January 2015 - 10:50 PM
Actually, the game isn't THAT big that it will take 10 minutes each run. It'll be around 5 - 10 seconds, as compared to the 1 second needed if the files were actually there. In fact, as of now, the game is only ~100 KB.

Also, this is just an option, meaning it won't be the only way to play the game. I just want input on if it's worth adding.
I'll clarify anything that's asked, though.

Oh, I thought you wanted to make this the only way to play the game. Well, personally I think that downloading files on each run is a bad program design, if it is going to be just an option, then ok, do it, as long as it will be able to boot without internet connection, or downloading any files.

EDIT: also, it's not just about how big the game is, it's actually more about how many files there are and what internet connection you have.
Edited on 07 January 2015 - 09:51 PM
Antelux #11
Posted 07 January 2015 - 11:08 PM
Alright then. Again though, any last minute ideas / suggestions / criticism? Still taking any if any of you have creativity to share.
If not, I guess you guys can sit on back for the release. Hopefully, this game will be as fun (and as popular) as I aim it to be.
Edited on 07 January 2015 - 10:08 PM
Bomb Bloke #12
Posted 08 January 2015 - 02:31 AM
Y'know, the streaming idea kinda meshes in with another plan I've been thinking about - simple file compression applied to pastes. Main thing that's been putting me off is RAM constraints, but it'd make it quite simple to turn the entire contents of a drive into one single download.

Another thing I'd been considering was making a "RAID" out of floppy disks, though someone beat me to it. Not sure if they got their project working, though.

On the whole, though, I agree that downloading the script every time you run it is a bad idea, no matter how small it is. Server's gotta open a connection to Pastebin and so on. Having the program look for a /update parameter on launch wouldn't hurt, though.

If you want this script to be seen, I'd suggest making a short YouTube video showing it in action and putting that up on eg the FTB GD forum. There's a lot more traffic in those parts. Likewise, as many people are tied to certain ComputerCraft versions (as the only reason they have it installed is because they're using certain modpacks), ensuring your code runs on CC 1.5 (MC 1.4.7) all the way through to 1.65 (MC 1.7.10) would help as well.
Agent Silence #13
Posted 08 January 2015 - 07:34 PM
You could have a file download peer to peer system, sort of like Pando Media Booster. Imagine this. Someone in your vicinity running the program with a wireless/wired modem connected to you. You broadcast an "update check". They receive it then broadcast their version and you broadcast your version. If either one of you has a higher version number they will begin to transfer data over.
MKlegoman357 #14
Posted 08 January 2015 - 07:37 PM
You could have a file download peer to peer system, sort of like Pando Media Booster. Imagine this. Someone in your vicinity running the program with a wireless/wired modem connected to you. You broadcast an "update check". They receive it then broadcast their version and you broadcast your version. If either one of you has a higher version number they will begin to transfer data over.

Alert: turn on your sarcasm detector

So an easy way to let hackers inject a trojan into your computer? Sure, why not! I'd love to hack into some computers and steal their personal info :D/>
Antelux #15
Posted 10 January 2015 - 04:47 AM
I think I managed to have blocks have scripts now.
Any tile/block/item or alike that has a script attached to it will be sandboxed for better client protection.
Trees grow! It's fun to watch. (Not really, you'll be waiting for a 1/1000 chance every half second, 1/500 chance each second)

Almost there!
Bomb Bloke #16
Posted 10 January 2015 - 05:28 AM
I think I managed to have blocks have scripts now.
Any tile/block/item or alike that has a script attached to it will be sandboxed for better client protection.

"Sandboxed" how?

Do they get access to term and events and so on?

That is to say, can/will there be computer blocks?
Antelux #17
Posted 10 January 2015 - 04:51 PM
When I say sandboxed, it will have access to some APIs.
For example, the APIs fs or io won't be accessible. However, file writing and reading will be done via the File API.

To get access to events and alike, you would need to make yourself an interface. As for term, any drawing to the screen should only be done in scripts for an overlay.

And lastly, it is (theoretically) possible to implement the whole computerseption thing. I was planning on doing it myself, actually. I'm just not sure if I should have them run on lua, or a BASIC interpreter.

For anyone one who is interested, there is a (As of now, not fully finished) API documentation on my github page. Feel free to check it out every now and then. All the functions there will be available to modders.
cdel #18
Posted 11 January 2015 - 01:17 PM
so excited for this :D/>
Agent Silence #19
Posted 12 January 2015 - 07:24 PM
Could you port this to CClights2?
Antelux #20
Posted 12 January 2015 - 09:34 PM
Sorry if progress has been rather slow lately. On regular school days, I get a freaking ton of homework to do, not leaving me much free time. You can expect to see lots of progress done over the weekends.

Could you port this to CClights2?
I've never used CCLights before, so I wouldn't know how at the moment. Besides, I'd rather finish the game before making a port of it.
Antelux #21
Posted 16 January 2015 - 01:35 AM
Alright! Time for a quick update on what I've been doing.

Because I thought the old main menus were ugly and ugh and stuff, I've been experimenting with a new, tab based menu.

Of course, from here you can see an incomplete version of the menu.
Though, I want some thoughts on if it looks okay so far. I'm always able to change it's colors and stuff.

You can select different tabs simply by clicking on them. Simple.
From the singleplayer tab, you'll be able to create worlds, and load preexisting ones.
From the multiplayer tab, you'll be able to add and play on other servers.
Ideally, from the mods tab, you'll be able to not only see what mods you have installed, but you'll also be able to browse other mods from here. It'll just grab a pastebin link with a list of mods and their descriptions. Of course, there will need to be mods out for players to play, so on the game's release, I'll probably release some mods as well. (A computer mod, and maybe some other simple stuff)
From the options menu, you'll be able to rename your player, set their color, turn on or off Stream Mode, and maybe some other stuff. (Options to set themes for the launcher maybe?)

I've been thinking of adding a "News" menu. Potentially, it'll act in the same way you see info on the Minecraft launcher on startup. (What's been added to new updates, the game's current status, other fun messages, etc)
Anyway, let me know what you guys think about these features. Once I'm done with the interfaces and menus, the game will be around 95% complete, the rest being just sandbox related scripts.
We're almost there!
Edited on 16 January 2015 - 12:36 AM
Agent Silence #22
Posted 16 January 2015 - 03:23 AM
Can you PM me a beta so I can start modding away?
It is such a glorious program!
Antelux #23
Posted 16 January 2015 - 08:29 PM
I've been considering to have a pre-release for those who just can't wait.
It'll probably be out this weekend if I do plan to release it. Otherwise, for now, try to keep your excitement in :P/>
Antelux #24
Posted 20 January 2015 - 09:37 PM
Sorry for such slow progress, finals are coming up, gotta study, etc.
However, I think I finally got a sand boxing script up. We're getting there.
Antelux #25
Posted 23 January 2015 - 12:34 AM
I wasn't too sure if I could do it. Had to borrow some stuff from my OS I gave up on a long time ago.

Theoretically, I should actually be able to run the game in the game, in the game, in the game… you get the point :P/>
Computers are looking likely to come. Though, they wouldn't use the default ComputerCraft OS, but rather something really simple.
I'll name it "MicroOS" :P/>

Anyway, beside some slight problems I'm having with the event listening, looks like modding is rather powerful. I made that computer mod in 32 lines.
Though, as of now, I have yet to put in multi-computer support. Any computer you open would run the same coroutine. I'm sure I can add the support in an extra 10 lines or so :P/>

So, that's just a quick sneak peak. Still dealing with my finals, but hey, we're getting somewhere.

EDIT: Wow I used :P/> three times… er, four now.
Edited on 22 January 2015 - 11:35 PM
Bomb Bloke #26
Posted 23 January 2015 - 01:58 AM
What's that, a 37x11 display? If I can scrape together time, I'll see if I can't write your first treasure disk. :lol:/>
Geforce Fan #27
Posted 25 January 2015 - 02:55 AM
don't forget pocket computers
can't wait to run a computer on minecraft on minuaturecraft on my computer!
efficiency at its finest
Edited on 25 January 2015 - 01:55 AM
Antelux #28
Posted 25 January 2015 - 04:50 PM
Almost done documenting these functions. Again, you can find them here.
What I need to do for the first release:

* Fix Crafting Menu
* Make lighting less laggy
* Finish up the start menu
* Make better entity scripts
* Fix a weird chest bug

Hopefully I can do this, and have the game released this month, or February.
Edited on 28 January 2015 - 06:10 PM
Agent Silence #29
Posted 25 January 2015 - 07:49 PM
I wonder, if I was to make the Computers play miniature craft
hmmm
Antelux #30
Posted 27 January 2015 - 11:59 PM
Finally fixed the weird crafting bug. Time to make entities stop moving in only one direction, and fix up chests.
I might delay the lighting for the first release. It's kinda buggy.

Other than that, I've added a new API; Chat. It's pretty self explanatory.


Upon first release, you'll be able to chat and do commands and stuff. Just gotta make the interface show what's been said so far. Commands do work though, however.
EDIT: Oh, I forgot to mention. I've added doors as well. Oddly enough, I'm actually using the Menu API to make them open and close, simply because I can have a script run when they're interacted with.
Edited on 27 January 2015 - 11:06 PM
Phoenix323 #31
Posted 28 January 2015 - 01:54 AM
Where to download
lare290 #32
Posted 29 January 2015 - 01:11 PM
So when is first release coming?
Agent Silence #33
Posted 29 January 2015 - 08:05 PM
Where to download
No download yet.

So when is first release coming?
Probably near the middle of February
Antelux #34
Posted 14 February 2015 - 07:07 PM
Hey! Just wanted to let you guys know the project isn't dead.

So, it turns out, the server script might be delayed more than expected. It turns out computercraft just isn't fast enough to run the server script in game. Though, it may be alot on my part. The server could use some optimizations, but it might be a bit. So, instead, I just focused on finishing the core parts of the game itself. I might release it sometime this week, after brushing and tweaking up some functions and alike. My only concerns right now are:

– Fix a weird bug with the lighting where some parts of the screen are still seen
– Save the storage table that some blocks (such as chests) have
– New: Crafting bug where you can't craft even with the right amount of materials.
– Newer: Crafting bug where the menu seems to act funny in displaying recipes.

As far as entities go, I'm not sure why, but they only seem to like to go in one direction after being spawned. They may be delayed as well to allow for quicker game release. Sorry it's been taking so long, but I'm really close to releasing the game. You may want to check back now and then on the progress.

EDIT: Finally added some pocket computer support. Some menus may still look clippy, but at least they can all be interacted with now.
Edited on 15 February 2015 - 06:08 PM
MKlegoman357 #35
Posted 14 February 2015 - 08:07 PM
It's ok, don't rush too much! We can wait :)/>. We not only want a 'game', we want a finished and a working good game. You're not getting payed for this (at least not that I know of :P/>) and you're doing it, I guess, just for fun, so take your time. As seen on this thread, you've done a lot of work, good luck with finishing it!
Antelux #36
Posted 14 February 2015 - 08:29 PM
It's ok, don't rush too much! We can wait :)/>. We not only want a 'game', we want a finished and a working good game. You're not getting payed for this (at least not that I know of :P/>) and you're doing it, I guess, just for fun, so take your time. As seen on this thread, you've done a lot of work, good luck with finishing it!

Thanks! I just didn't want to get everyone hyped up, and have them wait a few more months. That would be rather annoying I'm guessing.
Also, I'm not being paid to do this. Just all for fun. But a release can be expected this week at the rate I'm going at currently. Hope you guys like the game.
Edited on 14 February 2015 - 07:29 PM
Geforce Fan #37
Posted 15 February 2015 - 07:34 AM
-snip-
Honestly, I wouldn't run a server on computercraft anyway. I'm fairly sure computercraft uses this API for http: http://w3.impa.br/~d...ware/luasocket/
so just load that up in plain old lua and run your code.


I has question.
How are you saving your files? Are you just saving them as a serialized table or something special? While developing a game-engine a while back(still haven't finished, very close &amp; active though), I ran into problems trying to use serialized tables for a format because they where too big–taking up the screen was a whopping 40KB. I was able to reduce this by subbing out spaces &amp; new lines, however, it was still a whopping 5KB to take up the screen.
Eventually I created a binary format for the pixels themselves, and a table for 3 or so other things, reducing file sizes by 85%.
Edited on 15 February 2015 - 06:41 AM
Lignum #38
Posted 15 February 2015 - 12:24 PM
Honestly, I wouldn't run a server on computercraft anyway. I'm fairly sure computercraft uses this API for http: http://w3.impa.br/~d...ware/luasocket/
so just load that up in plain old lua and run your code.

It doesn't. The http API uses whatever Java provides. That library depends on a C library, which means you can't use it in your program anyway. Regardless, I think he means rednet servers, which would make a lot more sense.
MKlegoman357 #39
Posted 15 February 2015 - 12:59 PM
More about the server: what's so slow about it? The fastest response/update time can be one tick (about 1/20 seconds), that's not too bad, although not very good either.
Antelux #40
Posted 15 February 2015 - 05:54 PM
I has question.
How are you saving your files? Are you just saving them as a serialized table or something special? While developing a game-engine a while back(still haven't finished, very close &amp; active though), I ran into problems trying to use serialized tables for a format because they where too big–taking up the screen was a whopping 40KB. I was able to reduce this by subbing out spaces &amp; new lines, however, it was still a whopping 5KB to take up the screen.
Eventually I created a binary format for the pixels themselves, and a table for 3 or so other things, reducing file sizes by 85%.

Here's an example of what the overworld looks like after being saved:
Spoiler50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|55:2|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|56|56|56|51|51|51|51|51|51|51|51|51|51|51|51|56|56|56|50|50|50|50
50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|56|56|51|51|51|51|51|51:1|51|51|51|51|51|51|51|51|51|51|51|51|56|56|50|50
50|50|50|50|50|50|50|50|50|50|50:28|50|50:3|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50:3|50|50|50|50|50|50|50|50|50|56|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|56:4|50
50|50|50|50|50|50|50|50|50|50:28|50|50:3|50:3|50:3|50|50|50:28|50|50|50|50|50|50|50|50|50|50:26|50|50:3|50:3|50:3|50|50|50|50|50|50|50|56|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|56
50|50|50|50|50|50|50|50|50|50|50|50|55:2|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|55:2|50|50|50|50|50|50|50|50|56|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|56
50|50|50:28|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|56:4|50
50|50|50:27|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50:26|50|50|50|50|50|50|50|50|56|56|56|56|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|56|56|50|50
50|50|50|50|50|50|50|50|50|50|50|50:28|50:26|50|50:27|50|50|50|50:28|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|56|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|56|56|56|50|50|50|50
50|50|50|50|50|50|50|50|50|50|50|50|50|50:26|50|50:3|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50:28|50|50|56|51|51|51|51|51|51|51|51|51|51|51:1|51|51|51|51|56|56|56|56|56|56|56|50|50|50|50:26|50|50|50
50|50|50|50|50|50:28|50|50|50|50|50:26|50|50|50|50:3|50:3|50:3|50|50|50|50|50:26|50|50|50|50|50|50:28|50|50|50|50|50|50|56|51|51|51|51|51|51|51|51|51|51|51|51:1|56|56|56|50|50|50|50|50|50|50|50|50|50|50|50:26|50|50
50|50|50|50|50|50|50|50|50:26|50|50|50|50|50|50|55:2|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|56|51|51|51|51|51|51|51|51|51|51|56|50|50|50|50:26|50|50|50|50|50|50|50|50|50|50|50|50|50
50|50|50|50:26|50|50|50|50|50:26|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50:26|50|50|50|50|50|50:26|50|50|56|51|56|56|51|51|51|51|56:3|56|56|56|50|50|50|50|50|50:3|50:28|50|50|50|50|50|50|50|50|50:28|50
50|50|50|50|50|50|50|50:28|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|56|56|51|51|50|50|56|56|56|56:3|50:3|50:3|50|50|50:26|50|50|50|50:3|50:3|50:3|50|50|50|50|50|50|50|50|50|50
50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|56|51|51|51|51|56|50|50|50|50|50|55:2|50|50|50|50|50|50|50|50|55:2|50|50|50|50|50|50|50|50|50|50|50
50|50:26|50|50:27|50|50|50|50|50|50|50|50|50|50|50:26|50|50|50|50|50|50|50:3|50|50|50|50:26|50|50|50|50|50|56|51|51|51|51|51|51|56|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50:3|50|50
50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50:3|50:3|50:3|50|50|50|50|50|50|50|50|56|51|51|51|51|51|51|56|50|50|50|50|50|50|50|50|50|50|50:26|50|50|50|50|50|50|50|50|50|50|50:3|50:3|50:3|50
50|50|50|50|50:28|50:27|50|50|50|50|50|50|50|50|50:26|50|50:26|50|50|50|50|55:2|50|50|50|50|50|50|50|50|50|56|51|51|51|51|51|51|56|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50:26|50|50|50|50|50|50|55:2|50|50
50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50:26|50|50|50:28|50:28|50|50|50|56|51|51|51|51|51|51|56|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50:28|50
50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|56|51|51|51|51|56|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50:26|50|50|50|50|50|50|50|50|50|50|50
50|50|50:26|50|50|50|50|50|50|50|50|50:3|50|50|50|50|50|50|50|50:26|50|50|50|50|50|50|50|50|50|50|50|50|50|56|56|56|56:3|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50
50|50|50|50|50|50|50|50|50|50:26|50:3|50:3|50:3|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50:3|50:3|50:3|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50:28|50|50|50|50|50|50|50|50|50|50
50|50|50|50|50|50|50|50|50|50|50|55:2|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50:3|50|50|55:2|50|50|50|50|50|50|50:3|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50:28|50|50:27|50:28|50|50
50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|56|56|56|56|56|56|56|56|50|50|50|50|50:3|50:3|50:3|50|50|50|50|50|50|50|50:3|50:3|50:3|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50:28|50
50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|56|56:4|51|51|51|51|51|51|51|51|56|56:4|50|50|50|55:2|50|50|50|50|50|50|50|50|50|55:2|50|50|50|50|50|50:27|50|50|50|50|50|50|50|50|50|50|50|50|50|50
50|50:3|50|50|50|50|50|50|50|50|50|50|50:27|50|50|50|56|56|51|51|51|51|51|51|51|51|51|51|51|51|56|56|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50:26|50|50|50|50|50|50|50|50|50
50:3|50:3|50:3|50|50|50|50|50|50|50|50|50|50|50|50|50|56|51|51|51|51|51|51|51|51|51|51|51|51|51|51|56|50|50|50:27|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50:26|50|50|50|50|50|50|50|50
50|55:2|50|50|50|50|50|50|50|50|50|50|50|50|50|56|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|56|50|50|50:3|50|50|50|50|50|50|50|50|50|50|50|50|50:3|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50
50|50|50:27|50|50|50|50|50|50|50|50|50|50|50|50|56|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|56|50|50:3|50:3|50:3|50|50|50|50|50|50|50|50|50|50|50:3|50:3|50:3|50|50|50|50|50|50|50|50|50|50|50|50|50|50
50|50|50|50|50|50|50|50|50:28|50|50|50|50|50|50|50|56|51|51|51|51|51|51|51|51|51|51|51|51|51|51|56|50|50|50|55:2|50|50|50|50|50|50|50|50|50|50|50|50|55:2|50|50|50|50|50|50:28|50|50|50|50|50|50|50|50|50
50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|56|56|51|51|51:1|51|51|51|51|51|51|51|51|51|56|56|50|50|50|50|50|50|50|50|50|50:27|50|50|50|50:26|50|50|50|50|50|50:27|50|50|50|50|50|50:3|50:26|50|50|50|50|50
50|50|50|50:26|50|50|50|50|50|50:3|50|50|50|50:27|50|50|50|50|56|56|51|51|51|51|51|51|51|51|56|56|50|50|50|50|50|50:27|50|50|50|50|50|50|50|50:26|50|50|50|50|50|50|50|50|50:26|50|50|50|50:3|50:3|50:3|50|50|50|50|50
50|50|50|50|50|50|50|50|50:3|50:3|50:3|50|50|50|50|50:26|50|50|50|50|56|56|56|56|56|56|56|56|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50:3|50|50|50|50|50|50|50|55:2|50|50|50|50|50|50
56|56|56|56|56|56|56|56|50|55:2|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50:28|50|50|50|50|50|50|50|50:3|50:3|50:3|50|50|50|50|50|50|50|56:4|56|56|56|50|50
51|51|51|51|51|51|51|51|56|56|56|56|50|50|50|50|50|50|50|50|50:3|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|55:2|50|50|50|50:26|50|50|50|56|51|51|51|51|56|50
51|51|51|51|51|51|51|51|51|51|51|51|56|56|50|50|50|50|50|50:3|50:3|50:3|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|56|51|51|51|51|56|50
51|51|51|51|51|51|51|51|51|51|51|51|51|51|56|50|50|50|50|50|55:2|50|50|50|50|50|50|50|50|50|50|50|50:27|50|50|50|50:27|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50:26|50|50|50|50|56|51|51|51|51|56|50
51|51|51|51|51|51|51|51|51|51|51|51|51|51|51|56|50|50:28|50|50|50|50|50|50|50|50|50:28|50|50|50|50|50|50|50|50|50|50:28|50|50:27|50|50|50|50:28|50|50:28|50|50|50|50|50|50|50|50|50|50|50|50|56|51|51|51|51|56|50
51|51|51|51:1|51|51|51|51|51|51|51|51|51|51|51|56|50|50:3|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|56|56|56|56|50|50
51|51|51|51|51|51|51|51|51|51|51|51|51|51|56|50|50:3|50:3|50:3|50|50|50|50|50:28|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50:27|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50
51|51|51|51|51|51|51|51|51|51|51|51|56|56|50|50|50:1|55:2|50|50|50|50:28|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50:27|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50:3|50|50:26|50|50|50
51|51|51|51|51|51|51|51|56|56|56|56|50|50|50:27|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50:3|50:3|50:3|50|50|50|50
56|56|56|56|56|56|56|56|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50:26|50:27|50|50|50|55:2|50|50|50|50|50
50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50:26|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50
50|50|50|50|50|50|50|50|50|50|50|50|50|50|50:28|50|50|50:27|50|50|50|50:27|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50:26|50|50|50:3|50|50|50|50|50|50|50|50|50|50:26|50|50|50|50|50|50:28|50|50|50|50|50|50
50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50:26|50|50|50|50|50|50|50:3|50:3|50:3|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50:26|50|50|50|50|50|50
50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|55:2|50|50|50|50|50|50|50|50|50|50|50|50|50:26|50|50|50|50|50|50|55:7|55:7|55:7
50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50:27|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50:26|50|50|50|50|50:3|50|50|50|50|50|50|50:3|50|50|50|50|50|50|50|50|50|50|50|50|55:7|62|55:7
50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50:3|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50:3|50:3|50:3|50|50|50|50|50:3|50:3|50:3|50|50|50|50|50|50|50|50|50|50|50|55:7|55:7|55:7
50|50|50:26|50|50:28|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50:3|50:3|50:3|50|50|50|50|50|50:28|50|50|50|50|50|50|50|50:28|50|50|50|50|55:2|50|50|50|50|50|50|55:2|50|50|50|50|50|50:28|50|50|50|50|50|50:26|50|50|50
50|50|50|50|50|50|50|50|50|50:3|50|50|50|50|50|50|50|50|50|50|50|55:2|50|50|50|50|50|50|50|50|50|50|50:28|50|50|50|50|50|50|50:26|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50:28|50|50|50
50|50|50|50|50|50:26|50|50|50:3|50:3|50:3|50|50:3|50|50:26|50|50|50|50|50|50|50|50|50|50:3|50|50|50|50|50|50:26|50|50|50|50|50|50|50|50|50|50:27|50|50|50|50|50|50|50:26|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50
50|50|50|50|50|50|50|50|50|55:2|50|50:3|50:3|50:3|50|50|50|50|50|50|50|50|50|50:3|50:3|50:3|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50:3|50|50|50|50|50|50|50|50|50|50|50|50:26|50|50|50|50|50|50|50
50|50|50|50|50|50:26|50|50|50|50|50|50|55:2|50|50|50|50|50|50:26|50|50|50|50|50|55:2|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50:3|50:3|50:3|50|50|50|50|50|50|50|50|50|50|50:3|50|50|50|50|50|50|50
50:3|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50:27|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50:26|50|50|50|50|50|50|55:2|50|50|50:27|50|50|50|50|50|50|50|50:3|50:3|50:3|50|50|50|50|50|50
50:3|50:3|50|50|50|50|50|50|50|50|50|50|50|50|50|50:26|50|50|50|50|50|50:26|50|50|50:28|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50:3|50|50|50|50|50|50|50|50|50:26|50|55:2|50|50|50|50|50|50|50
55:2|50|50:3|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|55:1|55:1|55:1|50|50|50|50|50|50|50|50|50|50:3|50:3|50:3|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50
50|50:3|50:3|50:3|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|55:1|63|55:1|50|50|50:26|50|50|50|50|50|50|50|55:2|50|50|50|50|50|50|50:3|50|50|50|50|50|50|50|50|50|50|50
50|50|55:2|50|50|50|50|50|50:26|50|50|50:27|50|50|50|50|50|50|50|50|50:27|50|50|50|50|50:27|50|50|50|50|50|50|55:1|55:1|55:1|50|50|50|50|50|50|50|50|50|50|50|50:26|50|50|50|50|50:3|50:3|50:3|50|50|50|50|50|50|50|50|50|50:1
50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50:26|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|55:2|50|50|50|50|50|50|50|50|50|50|50
50|50|50|50|50|50|50|50|50|50:28|50|50|50|50|50|50|50|50|50|50:26|50|50|50|50|50|50|50:3|50|50|50|50|50|50:27|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50
50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50:26|50|50:3|50:3|50:3|50|50|50|50|50|50|50|50|50|50|50:28|50|50|50|50|50|50|50|50|50|50:27|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50
50|50|50|50|50|50|50|50|50|50|50|50|50:28|50|50:28|50|50|50|50|50|50|50|50|50|50|50|55:2|50|50:27|50|50|50|50|50|50|50|50|50|50:27|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50
50|50|50:28|50|50|50|50|50|50|50|50:28|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50:27|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50
50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50|50

Kinda looks ugly, but basically it works like this:
Each number represents a tile. So the number "50" is actually the ID for grass. However, if there is a ":", that means that there is a block on top of the tile. For example, 56:4 would mean that the asset id of 4 is on top of the asset id of 56. I'm not sure how I could get the saves to be any smaller. Other small things, such as the player data, is just saved as a serialized table, taking less than a kilobyte. However, even the smallest worlds (64x64) take up huge amounts of space. The one I just finished generating is around 7/10 the game's size itself (Which is around 112kb atm) and the largest worls (128x128) are nearly three times as large as the game itself. You mentioned something about a binary format. It would be interesting to know if this could help be a solution to making small saves. I'm just not exactly sure how it would work doing so.

Also, yes, I do mean rednet servers. Speaking of them:

More about the server: what's so slow about it? The fastest response/update time can be one tick (about 1/20 seconds), that's not too bad, although not very good either.

It's just the amount of data that needs to be sent over repeatedly. The world, the players, and the entities, all of which you can probably guess have plenty of data tied to them, need to be sent over to the client at a moments notice. Now, serializing the whole world works, but takes quite a few seconds, even on CClite. So, the way I plan to do it, is to copy parts of the world table (The ones necessary for the client) and then serialize it. I haven't tried it yet, but as you imagine, the server could get rather resource intensive pretty quickly. For now, I'm still steadily working on the game's release, but I'll return to the server afterward.
Edited on 15 February 2015 - 04:59 PM
Lignum #41
Posted 15 February 2015 - 08:00 PM
Kinda looks ugly, but basically it works like this:
Each number represents a tile. So the number "50" is actually the ID for grass. However, if there is a ":", that means that there is a block on top of the tile. For example, 56:4 would mean that the asset id of 4 is on top of the asset id of 56. I'm not sure how I could get the saves to be any smaller. Other small things, such as the player data, is just saved as a serialized table, taking less than a kilobyte. However, even the smallest worlds (64x64) take up huge amounts of space. The one I just finished generating is around 7/10 the game's size itself (Which is around 112kb atm) and the largest worls (128x128) are nearly three times as large as the game itself. You mentioned something about a binary format. It would be interesting to know if this could help be a solution to making small saves. I'm just not exactly sure how it would work doing so.
You can further cut down the file size by merging repeating tiles into one. E.g: 50|50|50|50|50 becomes 50x5. In addition that, here's some documentation on binary mode. You should switch to that, it'll spare you the separators.

It's just the amount of data that needs to be sent over repeatedly. The world, the players, and the entities, all of which you can probably guess have plenty of data tied to them, need to be sent over to the client at a moments notice. Now, serializing the whole world works, but takes quite a few seconds, even on CClite. So, the way I plan to do it, is to copy parts of the world table (The ones necessary for the client) and then serialize it. I haven't tried it yet, but as you imagine, the server could get rather resource intensive pretty quickly. For now, I'm still steadily working on the game's release, but I'll return to the server afterward.
I suggest that you send the whole world to the clients when they connect. After that only send block changes. As for entities, do the same, send all of them at once and after that only send the new information when something has changed. I'm currently working on a game where I do this and it's worked very well so far.
Bomb Bloke #42
Posted 15 February 2015 - 10:29 PM
You could use my package API to compress the content before writing it to the drive. Using your own reduction techniques on top of this - eg, the RLE method suggested by Lignum - is still definitely worthwhile. Heck, just the RLE will likely solve your problems.
Geforce Fan #43
Posted 15 February 2015 - 10:54 PM
That's actually pretty clever.
Essentially, binary format let's you work with binary. Each character has eight spaces for either a 1 or a 0. This means there are 64 unique patterns possible in one byte.
However, you could run into issues with having more than 64 different item types. A possible solution I just thought of is writing 2 bytes per pixel, giving a whopping 256 unique possibilities per pixel. This would mean a 1 character reduction per pixel, and 156 more types in 2 bytes.
If you want, I'll upload a beta of game-engine(the file format is finished) in which you can fork my saving from. It works like this: 4 bytes are reserved for which color the pixel is, then the other 4 are Boolean. For new y &amp; x values, there's a certain pattern inserted, so it leaves you with 62 possible patterns per byte. This being said, you could specify the pixel is brown, and that it's type 1 per say, and it knows that brown type 1 is a log.
theorigninalbit helped me greatly in creating this save format, you can also talk to him.
Edited on 15 February 2015 - 09:58 PM
Lignum #44
Posted 15 February 2015 - 11:10 PM
You only need one byte for 256 possibilities. 1 byte = 8 bits -> 2^8 = 256.
If you're using the first 4 bits for the ID, you're left with 2^4 (16) possibilities. So, in this case either more bits should be used or the additional data should be left out completely since the IDs appear to be quite big. Since the existing format doesn't seem to store any additional data, I suppose it's not needed anyway.
Geforce Fan #45
Posted 15 February 2015 - 11:27 PM
You only need one byte for 256 possibilities. 1 byte = 8 bits -> 2^8 = 256.
If you're using the first 4 bits for the ID, you're left with 2^4 (16) possibilities. So, in this case either more bits should be used or the additional data should be left out completely since the IDs appear to be quite big. Since the existing format doesn't seem to store any additional data, I suppose it's not needed anyway.
8^2 = 8*8 = 64.
8^2 ~= 256
1 byte has 64 possibilities.
https://duckduckgo.c...=ffab&amp;ia=answer
powers explained:
http://www.purplemat...es/exponent.htm
Edited on 15 February 2015 - 10:32 PM
MKlegoman357 #46
Posted 15 February 2015 - 11:37 PM
You only need one byte for 256 possibilities. 1 byte = 8 bits -> 2^8 = 256.
If you're using the first 4 bits for the ID, you're left with 2^4 (16) possibilities. So, in this case either more bits should be used or the additional data should be left out completely since the IDs appear to be quite big. Since the existing format doesn't seem to store any additional data, I suppose it's not needed anyway.
8^2 = 8*8 = 64.
8^2 ~= 256
1 byte has 64 possibilities.
https://duckduckgo.c...=ffab&amp;ia=answer
powers explained:
http://www.purplemat...es/exponent.htm

It's the other way around: 2^8 = 256; you can read about bytes on the wikipedia:

Computer memory is designed in a binary architecture, multiples are expressed in powers of 2.
Lignum #47
Posted 15 February 2015 - 11:37 PM
8^2 = 8*8 = 64.
8^2 ~= 256
1 byte has 64 possibilities.
https://duckduckgo.c...=ffab&amp;ia=answer
powers explained:
http://www.purplemat...es/exponent.htm

And 2^8 ~= 8^2. Take a look at this.
EDIT: Ninja'd
Edited on 15 February 2015 - 10:38 PM
Geforce Fan #48
Posted 16 February 2015 - 12:16 AM
….

I'm in advanced math and I made this mistake
Anyhow, this means you would have 256 types per byte. So you could probably just live with 1 byte per character, or 2 characters and you get a ridiculous 65536 types.
If you manage to use up all of those types, then someone give you a medal.
——-
Also, how are you rendering the game right now? It's really laggy on minaturecraft 1.0. You're not going through the ENTIRE map while rending are you? You should only be going through what's going to be on the screen.
Another thing I noticed in the 1.0 topic is that you where looking for a different buffer system. If you havn't yet found one, I recommend Redirect by GopherAtl here: http://www.computerc...irect-ctrlkeys/
It's over 2 years old but its stood the test of time, and still works great today.
Edited on 16 February 2015 - 12:30 AM
Antelux #49
Posted 16 February 2015 - 04:09 PM
You can further cut down the file size by merging repeating tiles into one. E.g: 50|50|50|50|50 becomes 50x5. In addition that, here's some documentation on binary mode. You should switch to that, it'll spare you the separators.

I suggest that you send the whole world to the clients when they connect. After that only send block changes. As for entities, do the same, send all of them at once and after that only send the new information when something has changed. I'm currently working on a game where I do this and it's worked very well so far.

This sounds like a pretty good solution. I'll take a look into.

Also, how are you rendering the game right now? It's really laggy on minaturecraft 1.0. You're not going through the ENTIRE map while rending are you? You should only be going through what's going to be on the screen.
Another thing I noticed in the 1.0 topic is that you where looking for a different buffer system. If you havn't yet found one, I recommend Redirect by GopherAtl here: http://www.computerc...irect-ctrlkeys/
It's over 2 years old but its stood the test of time, and still works great today.

No, I'm not rendering the entire map. It's always been what's on screen. Right now, I'm using a string buffer that I made a while back. The old buffer was just a table that mapped out the whole screen. As of now, the game seems to run alright on pocket computers, given you don't spam the event system by holding down a key. On computers, however, it's still rather slow. This is probably due to the game having to process more than before. So, as of now, it's recommended you play on a pocket computer.

However. The game runs extremely fast and well when played on a monitor. I'm not entirely sure why, but if you get one of those keyboard peripherals, the speed of the game shouldn't be a problem at all once you play it on a monitor. This was just tested on the latest stable version of computercraft on minecraft 1.7.10
Edited on 16 February 2015 - 03:09 PM
Lignum #50
Posted 16 February 2015 - 04:14 PM
You should try out this buffer, which is designed to be fast. I've never used it before but it looks very promising.
Geforce Fan #51
Posted 17 February 2015 - 04:10 AM
You should try out this buffer, which is designed to be fast. I've never used it before but it looks very promising.
I highly doubt it's faster than redirect

….
That's the issue–it lags if you hold down keys
I released a beta of game-engine here: http://www.computerc...gine-for-games/
If you launch the testgame, you'll notice that holding down keys does not cause lag at all. And honestly, if you turn on trace, you'll see that there's quite a lot of function calls. I don't know how you've gotten it to the point where holding keys lags, but it's definitely an issue and is definitely fixable.
Edited on 17 February 2015 - 05:18 AM
Antelux #52
Posted 17 February 2015 - 04:59 AM
That's the issue–it lags if you hold down keys
I released a beta of game-engine here: http://www.computerc...gine-for-games/
If you launch the testgame, you'll notice that holding down keys does not cause lag at all. And honestly, if you turn on trace, you'll see that there's quite a lot of function calls. I don't know how you've gotten it to the point where holding keys lags, but it's definitely an issue and is definitely fixable.

It's not really an issue. When holding down a key, the event system is spammed as a result. If your program is slowish (Like mine), then it can't update whatever in realtime, causing the computer to still catch up on previous events instead of deal with the current ones. I try to make the processing having to be done when input is given at minimal (A timer updates the world in terms of scripts, the input doesn't). I've considered making a system which filters out spam of keys and alike, but I'll also take a look at your game engine, and see if anything there catches my interest.

As far as the game's buffer goes, I've been experimenting with some other buffers, seeing how they are. I'll get back to you guys on that.
Edited on 17 February 2015 - 03:59 AM
Bomb Bloke #53
Posted 17 February 2015 - 05:39 AM
However. The game runs extremely fast and well when played on a monitor.

Probably because every time you perform an operation through the regular "term", you're doing it through a window - thanks to multishell. Using an external monitor bypasses all that.

It's possible that you could circumvent this by grabbing term.native() and redirecting to that. I haven't tried it, though. Obviously this would mess up multishell behaviour if it works, but I doubt that's such a great price to pay.
Geforce Fan #54
Posted 17 February 2015 - 10:46 PM
….
This is really good advice. I'm actually going to update the test game I made for Game-Engine to do this! The Window API is ridiculously slow.
Kudos to dan2000 for allowing us to bypass it.
Has anyone made a topic about doing this? OSes and games really ought to do this for extra performance. Game-engine runs so much faster!
Not to mention an OS has nothing to loose from this!
Anyhow, I added
term.redirect(term.native())
to the top of miniaturecraft 1.0 and guess what: holding down keys no longer lags it at all. In fact, it goes blazingly fast!
Something to note, though, is the weird delays while moving. It, to my eyes, appears to move 3 or so times, then take a short pause, and move 3 times again. I don't see this in game-engine at all.
Miniaturecraft is actually pretty fun when it's not lagging!

Question: What is all the yellow stuff in miniaturecraft?
Edited on 17 February 2015 - 10:05 PM
Bomb Bloke #55
Posted 17 February 2015 - 11:41 PM
So the term.native() thing works. Problem is that it really would be quite wonky if people tried to use it alongside multishell's tab system. It's a bit… inelegant.

Better, if possible, to kill multishell with the TLCO, or better yet, to just leave it alone and give the user the choice. Though I've got a vague memory that might not work so well on it (as opposed to against the regular shell), and it wouldn't surprise me if 1.7 squashes it completely.
Geforce Fan #56
Posted 17 February 2015 - 11:47 PM
So the term.native() thing works. Problem is that it really would be quite wonky if people tried to use it alongside multishell's tab system. It's a bit… inelegant.

Better, if possible, to kill multishell with the TLCO, or better yet, to just leave it alone and give the user the choice. Though I've got a vague memory that might not work so well on it (as opposed to against the regular shell), and it wouldn't surprise me if 1.7 squashes it completely.
sorry, squashes the top level coroutine hack, or squashes bypassing the window API?
Edited on 17 February 2015 - 10:47 PM
Bomb Bloke #57
Posted 17 February 2015 - 11:48 PM
TLCO.
Antelux #58
Posted 20 February 2015 - 09:02 PM
Hey guys. Sorry, I've been away from my computer for a bit. Even now, I'm posting from my tablet. I knew the window api did have an effect on the game's performance. However, I never knew it could be bypassed in the way talked about above. That's definitely going to be added to the game for a major speed up. I'll try to finish up some other things once I get on my computer. Though, my birthday is in a few days or so, so I'll probably be caught up in that. Anyway, thanks for your input and suggestions to make the game better. I plan on experimenting with all these, such as the saving in binary and so on. Thanks for being patient too.
Edited on 20 February 2015 - 08:02 PM
MKlegoman357 #59
Posted 20 February 2015 - 09:20 PM
…or better yet, to just leave it alone and give the user the choice…

In other words, make it a setting, whether to redirect to a term.native() or just leave it running in a multishell window.

BTW, happy upcoming birthday! :)/>
Bomb Bloke #60
Posted 20 February 2015 - 10:55 PM
Well, I was more thinking that individual scripts shouldn't try to break multishell, but rather they should rely on the user to eg specifically pre-run a dedicated script for the purpose of performing the break (ideally via TLCO), say via a startup script.

That way if we ever get a "proper" way to disable multishell, there won't be a ton of scripts floating around that need to be tweaked. That said, I doubt thing's'll get too far out of hand if you just take the "easy" route of redirecting to term.native(). It's inelegant, but I'd expect it to work no matter what happens with multishell in the future.

What's this about a birthday? I for one tend to put lots of different birth dates into lots of different sites.
Geforce Fan #61
Posted 21 February 2015 - 12:38 AM
What's this about a birthday? I for one tend to put lots of different birth dates into lots of different sites.
Birthday: January 1st, some random year
If they'll let me, I'll pick a year that makes me negative years old.
Edited on 20 February 2015 - 11:38 PM
Antelux #62
Posted 21 February 2015 - 07:02 AM
Question: What is all the yellow stuff in miniaturecraft?

Forgot to answer this. It's actually sand. There are supposed to be lakes of water like there are now. However, I was never able to implement it, due to a world generation bug. It's fixed now, of course.
Antelux #63
Posted 21 February 2015 - 07:34 AM
Alright. I've uploaded a 2.0 Beta to github. You should be able to play the game using the installer found here. I'll update the installer to be nicer and better in a bit, but now you guys should be able to play. I haven't put in the lighting or the binary saves yet. When I do, I'll make a separate post in the programs section. For now, post any bugs / errors on the game's github page, and make sure it's repeatable.
Edited on 21 February 2015 - 06:56 AM
MKlegoman357 #64
Posted 21 February 2015 - 11:53 AM
What's this about a birthday? I for one tend to put lots of different birth dates into lots of different sites.

…Though, my birthday is in a few days or so, so I'll probably be caught up in that…

I've realized that it sounded like I said 'Happy Birthday' to you (Bomb Bloke) :P/>, it was meant to Detective_Smith.
Antelux #65
Posted 21 February 2015 - 04:20 PM
So. Some slight problems.

My hard drive just died. Luckily, it didn't take miniaturecraft with it, since I put it on github just yesterday. It's going to take a while for me to recover my files, but at least I won't have to start from scratch. Just letting you all know, the updates for miniaturecraft is going to be delayed rather significantly. Sorry about this. I can only ask you guys to continue to be patient like you've been. Thank you.
Bomb Bloke #66
Posted 22 February 2015 - 01:05 AM
I gave it a go, but couldn't get past the main menu - crashes, and hides the error somewhere. :(/>
Antelux #67
Posted 22 February 2015 - 06:41 AM
I gave it a go, but couldn't get past the main menu - crashes, and hides the error somewhere. :(/>

Any errors the game makes are saved to a file called 'errorlog' in the game's directory. It looks like if you load a world and press one of the arrow keys immediately after, you'll be able to avoid the bug. Checking it out now. Also, once I'm finished changing a few minor things, there will be an FPS counter. You should be getting 2 FPS normally when your idle. Lower values are okay when moving. Anything higher? Well, I have yet to get an FPS value higher than 2. Also, since this is the beta, the version is now 1.9xx-Beta. I'll change it back to 2.0 when it's out of beta.
Edited on 22 February 2015 - 05:45 AM
Geforce Fan #68
Posted 22 February 2015 - 07:10 AM
So. Some slight problems.

My hard drive just died. Luckily, it didn't take miniaturecraft with it, since I put it on github just yesterday. It's going to take a while for me to recover my files, but at least I won't have to start from scratch. Just letting you all know, the updates for miniaturecraft is going to be delayed rather significantly. Sorry about this. I can only ask you guys to continue to be patient like you've been. Thank you.
dang, good thing you uploaded it

This is REALLY buggy, but I suppose that's to be expected for a beta.
You have to press S after loading a world or else it will crash.
You can't name worlds, clicking on the name box will freeze.
You can't terminate this.
Clicking options freezes

Question: Do you have a console system? Can you write messages to a file with a single command?
With Game-Engine, the console was one of the first things I made. It's absolutely essential, because a lot of times, you can't just print stuff to the screen. I suppose you may be able to get by with writing things to the chat, but a console system would be far superior.
Another thing with a console system, is that it also serves as a little Lua prompt, you could interact with the world through code from there.
I'm also close to finishing a compiler. It will have a function to unlocalize all variables, so, while debugging, you can see EVERYTHING. You could always just take that section of it on your personal copy while programming, just don't upload it to github.
Well, I was more thinking that individual scripts shouldn't try to break multishell, but rather they should rely on the user to eg specifically pre-run a dedicated script for the purpose of performing the break (ideally via TLCO), say via a startup script.
I made something for this
http://www.computerc...the-window-api/

[For reference, the double post auto-merging has a time limit of five or ten minutes. -L]
[Thanks -G]
Edited on 22 February 2015 - 09:56 PM
Antelux #69
Posted 22 February 2015 - 08:48 PM
You can't name worlds, clicking on the name box will freeze.

Actually, it's not that it's frozen, it's just that it doesn't draw. Since the standard read() function doesn't draw the screen, you'll only see what you typed in after typing it in and pressing enter.

You can't terminate this.

I'll try to add that in.

Clicking options freezes

Looks like your right. I'll also investigate this.

Question: Do you have a console system? Can you write messages to a file with a single command?
With Game-Engine, the console was one of the first things I made. It's absolutely essential, because a lot of times, you can't just print stuff to the screen. I suppose you may be able to get by with writing things to the chat, but a console system would be far superior.
Another thing with a console system, is that it also serves as a little Lua prompt, you could interact with the world through code from there.
I'm also close to finishing a compiler. It will have a function to unlocalize all variables, so, while debugging, you can see EVERYTHING. You could always just take that section of it on your personal copy while programming, just don't upload it to github.

The closest thing I have is the chat (Enter it by pressing 't' or '/'), and the function that causes errors to be put in a file called 'errorlog'. If you guys can, please post what the error is by reading this file. What I will be fixing:

Release 1.91c-Beta:
– Cursor remains on screen after chat is opened will be fixed.
– Options menu crashes on selection will be fixed
– Worlds crash unless you press something immediate after loading one will be fixed
– Ability to see what you type in the input boxes will be added
– The ability to terminate the program will be added
– Item crashing will be fixed.

I've considered making the type of console you stated above. I'll look into this.
Edited on 23 February 2015 - 02:48 AM
Bomb Bloke #70
Posted 23 February 2015 - 03:21 AM
Any errors the game makes are saved to a file called 'errorlog' in the game's directory.

I did suspect you'd've implemented a logging system, but when I checked I found nothing. The crashes I encountered weren't recorded to disk.

Following the above advice about the S key I was able to get the game proper to start (arrow keys don't seem to work).

It seems you forget to re-hide the cursor when the chat box is closed.

If I press E I get an inventory. This lets me highlight my "punch", and if I then go up to a tree with that and hit space, then the game crashes. No log of either sort is generated.
Antelux #71
Posted 23 February 2015 - 03:43 AM
I did suspect you'd've implemented a logging system, but when I checked I found nothing. The crashes I encountered weren't recorded to disk.

That's strange. The logging seems to work for me. I even repeated the bug about using the punch item, and an error log was created for me.

Following the above advice about the S key I was able to get the game proper to start (arrow keys don't seem to work).

I meant to say the WASD keys, but I guess I unconsciously wrote the arrow keys instead.

It seems you forget to re-hide the cursor when the chat box is closed.

I didn't. There just seems to be a bug that keeps the cursor regardless. Going to add it to the list.

If I press E I get an inventory. This lets me highlight my "punch", and if I then go up to a tree with that and hit space, then the game crashes. No log of either sort is generated.

Just finished fixing that. I had some weird code where it should draw the screen. Don't know why. I'll release the bug fix update in a few days.
Edited on 23 February 2015 - 02:45 AM
Bomb Bloke #72
Posted 23 February 2015 - 03:49 AM
That's strange. The logging seems to work for me. I even repeated the bug about using the punch item, and an error log was created for me.

Ah - I see what's going on, you're not writing the log to the game's directory, you're writing it to root - where I've got a few dozen other files for it to hide amongst. ;)/>
Antelux #73
Posted 23 February 2015 - 04:19 AM
Ah - I see what's going on, you're not writing the log to the game's directory, you're writing it to root - where I've got a few dozen other files for it to hide amongst. ;)/>

Yeah. I changed it to be written to the game's directory in the future update. Would make more sense this way.
Perhaps I'll implement the auto-update feature early. Should be easy-ish to do.
LDDestroier #74
Posted 23 February 2015 - 10:56 PM
Imagine having Miniaturecraft inside of computers inside MiniatureCraft inside of Minecraft! Oh the overhead!

EDIT: Oh, and best of luck in this game! I might actually take the trouble to install it on every computer I use!
Edited on 23 February 2015 - 09:57 PM
Geforce Fan #75
Posted 23 February 2015 - 11:21 PM
BlombBlake is wrong in saying it does not ouptut anything to the errorlog–it does.

mc:98: attempt to index ? (a nil value)
happy debugging!(world's best oxymoron). From what it looks like to me, you never defined the "Screen" variable in that function.
Also, from what it looks like to me, the whole bug where you have to press S could be fixed by rendering the buffer once after the world loads. The reason it exists is because you only render the buffer after a keypress, which is fine for now, just render it 1 time only before checking for keypresses the first time
Edited on 23 February 2015 - 10:25 PM
Antelux #76
Posted 23 February 2015 - 11:36 PM
happy debugging!(world's best oxymoron). From what it looks like to me, you never defined the "Screen" variable in that function.
Also, from what it looks like to me, the whole bug where you have to press S could be fixed by rendering the buffer once after the world loads. The reason it exists is because you only render the buffer after a keypress, which is fine for now, just render it 1 time only before checking for keypresses the first time

I already fixed the item glitch for the upcoming bug fix release. I'll try the method you suggested about the world bug, though.
You can also expect auto updating to be in the next release. No more constant re-installing.

EDIT: Looks like it didn't work. I forgot that that's actually what I tried doing. I suspect the buffer is trying to call for something that isn't actually in the buffer. I'll have to investigate some more.
Edited on 23 February 2015 - 10:37 PM
Geforce Fan #77
Posted 24 February 2015 - 02:01 AM
happy debugging!(world's best oxymoron). From what it looks like to me, you never defined the "Screen" variable in that function.
Also, from what it looks like to me, the whole bug where you have to press S could be fixed by rendering the buffer once after the world loads. The reason it exists is because you only render the buffer after a keypress, which is fine for now, just render it 1 time only before checking for keypresses the first time

I already fixed the item glitch for the upcoming bug fix release. I'll try the method you suggested about the world bug, though.
You can also expect auto updating to be in the next release. No more constant re-installing.

EDIT: Looks like it didn't work. I forgot that that's actually what I tried doing. I suspect the buffer is trying to call for something that isn't actually in the buffer. I'll have to investigate some more.
This is the time console systems come in handy. You could, for example, print "exists" into the console if the variable "Screen" exists, and then go from there.
Antelux #78
Posted 24 February 2015 - 09:41 PM
Alright. Made a quick installer update to make it look nicer, and allow it to be used for future updating.

To run it, do pastebin run FgAggvy1 <directory>
If you give it a directory argument, the installer will run without the graphical parts of it.
Could be used for OS's, or if you just don't wanna see the graphical part, and want to skip directly to downloading it.

This is the time console systems come in handy. You could, for example, print "exists" into the console if the variable "Screen" exists, and then go from there.

Eh, not really too sure about this. The error logging is enough for me, but maybe I'll add this in if I find more use from it.
Edited on 24 February 2015 - 11:40 PM
Bomb Bloke #79
Posted 25 February 2015 - 12:15 AM
P.S. If there are any OS's looking to include my game, your allowed to, given you inform me first, and receive my permission.

That's "first post" material, not "fourth page". :P/>
Antelux #80
Posted 25 February 2015 - 12:40 AM
That's "first post" material, not "fourth page". :P/>

Yeah, your probably right. Lemme move that now.
However! I found out why the game crashes with worlds and the options menu. I made a really dumb mistake, a typo in the buffer's table to convert the numbers to hex.
Only three more things until next beta release:
– Make it so you can see what your typing
– Make a button to quit
– Add in the auto update feature
Edited on 24 February 2015 - 11:49 PM
Boom #81
Posted 28 February 2015 - 02:12 AM
Nice!
Antelux #82
Posted 04 March 2015 - 03:39 PM
Alright. Sorry it took me a while, I've been busy with lots of homework and family related stuff, but I finally bring you update 1.94d-Beta! (It's not 2.0 until some features are done)

What's new:
* The cursor no longer remains on screen when the chat is opened.
* No more menu crashes.
* Worlds no longer crash when opening them.
* You can see what you type in the input boxes now.
* You can now exit the game from the main menu.
* Items no longer crash when using them.
* Faster* buffer (Like 0.05 seconds quicker).
* Worlds are now saved in binary mode. Say hello to more space (Ex. 64x64 Worlds went from 70-90kb -> 40kb).
* The game now auto-updates itself.
* Fixed the weird crafting bug. You can now craft correctly.
* Better PDA support.
* Other trivial stuff, like changes to some assets, some menus, etc.

Theoretically, you can play the whole game in survival now. Though, I'll still be updating the game, as expected. :P/>

One final note on the auto-updating though. Make sure your not blocking github, and that your connected to the internet.
If your not connected to the internet, edit (YourDirectory)/mc, and scroll down until you see local checkForUpdates, and change that to false. Otherwise, have fun!
Edited on 04 March 2015 - 02:43 PM
CrazedProgrammer #83
Posted 04 March 2015 - 05:40 PM
Awesome game!
Antelux #84
Posted 04 March 2015 - 09:32 PM
Awesome game!

Thanks. I'll consider it out of beta once I:

- Re-add Lighting
- Save the storage table
- Save blocks / tiles that have an ID bigger than 255
- Add random spawn placement

Once it's out of beta, I'll probably begin to work on the server side of things.
Antelux #85
Posted 04 March 2015 - 10:25 PM
Alright, just finished making a (Completely Incomplete) tutorial on making mods. It's a start for all you eager modders.
You can check it out here.
Edited on 04 March 2015 - 09:25 PM
ATMunn #86
Posted 06 March 2015 - 08:17 PM
I REAALLY wanna play this, but the installer won't work… I get this error: string:67: attempt to index ? (a nil value) Am I doing something wrong? I am just running the installer…
Antelux #87
Posted 06 March 2015 - 10:52 PM
I REAALLY wanna play this, but the installer won't work… I get this error: string:67: attempt to index ? (a nil value) Am I doing something wrong? I am just running the installer…

That's weird. Works fine for me. Make sure your not blocking github in your CC config. That may be the problem.
The installer also doesn't work on CClite. Don't know about other emulators, though.

Also, I've added NoColor support for the upcoming version (Not sure why you would want to play the game in black and white though :P/>), and I've made the buffer slightly (0.05 seconds, give or take) faster once again. It's especially fast when drawing on pocket computers. I just need to make it so that it can draw to monitors again, as I've seem to had broken the compatibility.
Edited on 06 March 2015 - 09:53 PM
Antelux #88
Posted 06 March 2015 - 11:43 PM
Just finished up adding in more information regarding modding, specifically adding in recipes and creating crafting tables. You can read more about this here (Thanks to InputUsername for the cleaning up the page as well).
ATMunn #89
Posted 07 March 2015 - 07:38 PM
[quote
ATMunn, on 06 March 2015 - 03:17 PM, said:

I REAALLY wanna play this, but the installer won't work… I get this error: string:67: attempt to index ? (a nil value) Am I doing something wrong? I am just running the installer…

That's weird. Works fine for me. Make sure your not blocking github in your CC config. That may be the problem.
The installer also doesn't work on CClite. Don't know about other emulators, though.

Also, I've added NoColor support for the upcoming version (Not sure why you would want to play the game in black and white though :P/>), and I've made the buffer slightly (0.05 seconds, give or take) faster once again. It's especially fast when drawing on pocket computers. I just need to make it so that it can draw to monitors again, as I've seem to had broken the compatibility. ] THANK YOU! I guess I had GitHub blocked in my config. That was the problem. Thank you so much!
ATMunn #90
Posted 07 March 2015 - 08:04 PM
Ok… How do you close chat? I've found the only way to get out of chat is to restart the computer. I've tried everything else you could think of. Am I missing something?

Edit: If you try to /tp the game crashes.
Edited on 07 March 2015 - 07:06 PM
Loopin #91
Posted 07 March 2015 - 09:34 PM
Pressing F1 should close the chat window.
Thats the key for hiding the HUD
Edited on 07 March 2015 - 08:38 PM
Antelux #92
Posted 07 March 2015 - 11:09 PM
If anyone is confused about the controls, they're basically the same as ones from here.
Also! Just put out another update: 1.96c-Beta.

What's new this version:
– Added NoColor Support (To an extent).
– Faster Buffer* (Around 0.05 Seconds faster, give or take).
– Fixed a bug where mods wouldn't load properly.
– Random Spawn Placement
– New functions: Level.setSpawnPoint(), Level.getSpawnPoint(); Player.hurt(); Player.heal()
– Storage table is now saved and loaded (Things like chests keep their contents now).
– Working entities (Press F2 to spawn some in. This is a temporary key).
– Less crashy commands.

Let me know of any bugs, preferably on Github.
Also, thanks Loopin for adding some stuff to the wiki as well.

EDIT: You'll most likely have to delete your world saves for comparability.
ALSO: The game has an auto-save feature where it saves the world every five minutes.
Edited on 08 March 2015 - 12:33 AM
Antelux #93
Posted 18 March 2015 - 08:52 PM
Okay, it's been a while since I've said anything. However, the new update is right around the corner.

So far, I've:
- Added a few extra functions.
- Made the drawer directly make changes to the buffer, potentially allowing for speedups.
- Added the ability for entities to be saved when the map is.
- Added a really basic (and ugly :P/>) looking underworld. Isn't accessible without using the /warp command though.
- Added some basic lighting.

The lighting script is working out as planned, just got to make it look nicer in game.



It'll look something like the old lighting system, but for now, it supports objects with light. Gotta add a time system too, and fix a few bugs.
SpencerBeige #94
Posted 19 March 2015 - 01:02 PM
does the player have to hold a flashlight to make it light around them?
Antelux #95
Posted 19 March 2015 - 08:29 PM
does the player have to hold a flashlight to make it light around them?

Nope. The game automatically lights the area around them up. I was thinking of allowing the player to hold a torch / lantern in order to get a bigger amount of light, though.
The lighting also looks a bit better now. Gotta put in the final touches.
cdel #96
Posted 19 March 2015 - 09:41 PM
With the modding api, would it be possible to create something like a glowing block,and have youc considered particle effects?
Antelux #97
Posted 19 March 2015 - 09:48 PM
With the modding api, would it be possible to create something like a glowing block,and have you considered particle effects?

Yes, it is possible to make a glowing block or tile (once the next update comes out, that is). In your assets, simply add
 lightSource = radius (number) 
As for particle effects, I have considered them. However, if I am to add them, it would be at a later date. Once I'm done with releasing the game out of beta, I plan to jump straight into multiplayer capabilities.
Edited on 19 March 2015 - 08:48 PM
SpencerBeige #98
Posted 19 March 2015 - 10:23 PM
With the modding api, would it be possible to create something like a glowing block,and have you considered particle effects?

Yes, it is possible to make a glowing block or tile (once the next update comes out, that is). In your assets, simply add
 lightSource = radius (number) 
As for particle effects, I have considered them. However, if I am to add them, it would be at a later date. Once I'm done with releasing the game out of beta, I plan to jump straight into multiplayer capabilities.

i have a problem. how do you deal with block breaking? im making a game where it takes time to mine, and without mouse_up out yet, i cant do this. do you do this? if so, how?
Antelux #99
Posted 19 March 2015 - 11:54 PM
i have a problem. how do you deal with block breaking? im making a game where it takes time to mine, and without mouse_up out yet, i cant do this. do you do this? if so, how?

In my game, a function named Player.useItem(playerName) is used when space is pressed. It grabs whatever item the player currently has selected. Then, after getting their direction, it checks what block / tile the player is facing with their coordinates. Once that's done, the item is checked to see if it's a tool or not, and damage is applied to the block/tile if it is one.
Edited on 19 March 2015 - 10:55 PM
SpencerBeige #100
Posted 20 March 2015 - 12:12 AM
mm thast smart. i was wondering how to break things ;p
biggest yikes #101
Posted 20 March 2015 - 06:07 PM
"NoColor Support"
Me: Wait a second..
*checks code with Windows Grep*
Oh, you did actually… Cool! :D/>
I like this program, but how exactly do you break blocks? There's no documentation of the controls..
Edited on 21 March 2015 - 12:53 PM
Antelux #102
Posted 20 March 2015 - 06:17 PM
The controls are very similar to the old version of the game, found here.

To break blocks, equip an item that can do so (i.e. Punch or a tool), then press space when facing the block you want to break.
biggest yikes #103
Posted 20 March 2015 - 06:20 PM
The controls are very similar to the old version of the game, found here.

To break blocks, equip an item that can do so (i.e. Punch or a tool), then press space when facing the block you want to break.
Okay, thanks!
I kind of want to make a sort of "MCEdit" for this, would that not be cool?
Edited on 20 March 2015 - 06:18 PM
Antelux #104
Posted 20 March 2015 - 11:10 PM
Okay, thanks! I kind of want to make a sort of "MCEdit" for this, would that not be cool?

I'm fine with any external programs made to edit things like the map. No problem at all. Just ask me if you plan to redistribute my assets or any part of the game.

As far as exiting the chat goes, press F1 to do so. When not in chat, F1 hides the HUD.
Edited on 21 March 2015 - 07:43 PM
Tag365 #105
Posted 31 March 2015 - 01:40 AM
I recommend you to make the worlds infinite.
Edited on 03 April 2015 - 10:50 PM
Lupus590 #106
Posted 31 March 2015 - 02:12 AM
I recommend you to make the worlds infinite. (*5)

no need to ask 5 times, also do you know how hard it is to make a game world infinite? try counting to infinity

while it is a valid request, it will be a difficult one to fulfil, the game will have to be able to build the map. (also space issues)
Geforce Fan #107
Posted 31 March 2015 - 11:23 PM
I recommend you to make the worlds infinite.

I recommend you to make the worlds infinite.

I recommend you to make the worlds infinite.

I recommend you to make the worlds infinite.

I recommend you to make the worlds infinite.
Improve the effeciency of your code, as so:

for i=1,5 do
  print"I recommend you to make the worlds infinite."
end
:lol:/>

I recommend you to make the worlds infinite. (*5)

no need to ask 5 times, also do you know how hard it is to make a game world infinite? try counting to infinity

while it is a valid request, it will be a difficult one to fulfill, the game will have to be able to build the map. (also space issues)
Have you seen the way Game-Engine handles maps? They could be infinite, although the way I render them, the further you went the longer it'd take to load. So a filled 200x200 map might take 7 seconds or so, and a 250x250 might take 7.5.
The save functionality, however, allows for variable sized maps, just as long as you don't try to get x or y values >1
If you have a 200x200 map, and let's say on the first column, and there are pixels like this:
XXXX
and then that's it for that column, there's a single character that says "Hey, this column is over, move to the next one!".
Edited on 31 March 2015 - 09:29 PM
Antelux #108
Posted 06 April 2015 - 03:01 AM
Hey, it's been sort of a while. Been catching up in school work. But, since I have a bit more time now, I can gladly say that the lighting system works to almost all expectations. It changes based on the time of day, and whether or not your above ground.

Some parts of the lighting looks kinda buggy, and I've been having trouble updating the lighting of blocks and tiles. It does work,
but it seems to break multiple timers and the chat. I have yet to find out why.

I've also added a few extra functions here in there, here is a list of them so far:
Menu.drawMenuBox()

Menu.Write()


Level.setInGame()

Level.isInGame()

Level.setSingleplayer()

Level.isSingleplayer()

I'll have to update github sometime later for documentation on these. Also, on a side note:

I recommend you to make the worlds infinite.

I originally was going to do this. However, because of ComputerCraft's default size restraints, I limited the world to how it is now. Even saving it in the current binary format I have it in just wouldn't cut it for infinite worlds with the given space available. Sorry about that. Though, as Geforce Fan said, if your looking to do the sort of thing, you can check out his Game Engine. Anyway, back to programming!
ItsRodrick #109
Posted 06 April 2015 - 05:15 PM
An epic game… but shouldn't it be at Programs > Games?
Antelux #110
Posted 07 April 2015 - 02:20 AM
It was moved, thankfully. Anyway, here's a picture of that much* nicer looking lighting I made.



It doesn't seem to be too laggy, and I've optimized it so that it only updates lights where players are at. There are still a few bugs with it, but I plan to fix it soon.
Edited on 09 April 2015 - 05:16 PM
Elpis #111
Posted 07 April 2015 - 02:51 AM
This seems amazing but whenever I try to install it as "mini" I get the error "mini:27:attempt to index ? (a nil value)" while installing
SpencerBeige #112
Posted 07 April 2015 - 03:01 AM
lightning idea: make fire. i dont know if fire's already there, but, you could have to make a (somewhat) expensive block, atleast more expensive then a torch. afterwars, you light it, and it gets 50% more light range!
MKlegoman357 #113
Posted 07 April 2015 - 07:36 AM
lightning idea: make fire. i dont know if fire's already there, but, you could have to make a (somewhat) expensive block, atleast more expensive then a torch. afterwars, you light it, and it gets 50% more light range!

Hiw about a fire mod? :P/>
Antelux #114
Posted 07 April 2015 - 03:36 PM
This seems amazing but whenever I try to install it as "mini" I get the error "mini:27:attempt to index ? (a nil value)" while installing

I'm not sure what exactly is wrong. Using CC for 1.7.10, I both downloaded the installer with pastebin get, and ran it with pastebin run. No problems seemed to have occurred for me. Are you running it in a emulator or using a different CC version?

lightning idea: make fire. i dont know if fire's already there, but, you could have to make a (somewhat) expensive block, atleast more expensive then a torch. afterwars, you light it, and it gets 50% more light range!

In the game, a player is able to craft a lantern. Lanterns have the largest amount of light, with glowstone being second (As shown in the picture a few posts above), and torches being last. Of course, the lantern is the most expensive to craft.

As for the fire in general, there is a fire asset in the game with textures and everything, but it doesn't actually do anything. I've been debating as whether or not to add fire to the game, as it would be a pain to put out.
Antelux #115
Posted 07 April 2015 - 05:03 PM
Just a quick notice, I've made a significant improvement to the buffer. Expect the game's speed to be at least twice as fast, if not more.
Though, there's a slight bug with the buffer. Once I tackle it, and fix the light bug I've stated about before, you can expect a release.
Antelux #116
Posted 10 April 2015 - 02:57 AM
Alright. After finding out about a silly mistake I made, the buffer is finally fixed. It seems to be blazing fast, at least according to some tests I ran it through. Though, the lighting bug is still apparent. I've also been re-working the menu API into the Interface API. Long story short, it'll be easier to create interfaces without the hassle of doing everything by hand. For example, as of now, this piece of code will make an interface that looks like the inventory one, without the listing of contents in it.


Interface.newInterface("Inventory", { -- What the inventory interface could look like
  gui = {{"rectangle", {2, 4, 18, 14, colors.blue, {colors.blue, colors.white}}}},
  text = {{"INVENTORY", 3, 4, colors.blue, colors.yellow}}
})

I'm getting really close to making this how it should be. Also, on a side note, I'm looking into adding some animations into the game, after seeing an awesome game like NightFall do it wonderfully. What exactly? Perhaps some slide ins and outs, but I have a few that I think will really make this game's animations stand out.
Edited on 10 April 2015 - 12:58 AM
Bomb Bloke #117
Posted 10 April 2015 - 08:45 AM
Have you taken a look at the current CC beta? A new function, term.blit(), could theoretically allow you to speed things up further still.
Antelux #118
Posted 10 April 2015 - 06:10 PM
Have you taken a look at the current CC beta? A new function, term.blit(), could theoretically allow you to speed things up further still.

Didn't even know the Beta had this. Really looking forward to it's changes, and I'll see what I can do using term.blit().
Tag365 #119
Posted 10 April 2015 - 06:34 PM
If you type only spaces in the chat then the game crashes. Can you fix it please?
SpencerBeige #120
Posted 11 April 2015 - 12:42 AM
If you type only spaces in the chat then the game crashes. Can you fix it please?
if only we had string.Snip() from c#, ahh, me love that thingy majigger
thewmatt #121
Posted 15 April 2015 - 06:10 AM
this is cool but, what are the controls? :huh:/>
Bomb Bloke #122
Posted 15 April 2015 - 07:21 AM
Same as v1.
Antelux #123
Posted 15 April 2015 - 09:39 PM
this is cool but, what are the controls? :huh:/>

Updated the post to prevent future confusion on such.
CrazedProgrammer #124
Posted 18 April 2015 - 01:51 PM
Can I include MiniatureCraft in my upcoming program Strafe?
It is a Steam-like game distribution program.
It would be very cool to have this game on there :D/>
Antelux #125
Posted 18 April 2015 - 03:10 PM
Can I include MiniatureCraft in my upcoming program Strafe?
It is a Steam-like game distribution program.
It would be very cool to have this game on there :D/>

Go right ahead.

I've been remaking how the game's main loop runs recently.
Previously, I tried to get it to work with coroutines. Unfortunately, I failed the first time.
However! I've finally been able to get it to work. It feels a bit more smooth in game, but sometimes you won't see changes update immediately. It's pretty close, though.

There are two coroutines, Render and Game.
The Render coroutine draws the game, while the Game coroutine updates the game.
Of course, the Game coroutine runs before Render.

In the debug menu, you can look at the FPS and UPS.
The FPS actually works now! You can set a target one as well by editing "mc." The default value is 20, as that's the max.
UPS stands for updates per second. It tells you how many times the world, entities, etc, is being updated every second. Unfortunately, animations are a bit broken now because of this.They change 20 times a second…
You guys can look forward to the future ability to change how fast your asset animations move with this new system, though.

The UPS is generally the same as the FPS. However, sometimes the FPS can fluctuate, while the UPS stays relatively constant. I'm also still working with the new interface API. Hopefully, I'll be able to finish this sometime soon.

The lighting bug is also fixed.

All in all, this system is going to be a rather large advantage for future programming I might incorporate with it, such as the interface API. And yes, when in game, on SP, I can generally get 20 FPS and UPS.
Edited on 18 April 2015 - 01:14 PM
Phoenix323 #126
Posted 20 April 2015 - 08:43 AM
where is the download
CrazedProgrammer #127
Posted 20 April 2015 - 09:33 AM
where is the download
pastebin run FgAggvy1 [directory]
Creator #128
Posted 20 April 2015 - 06:20 PM
where is the download

Read the main post before asking such a question.
AUSTINMARTINGAMEING2 #129
Posted 22 April 2015 - 10:40 PM
Can I use This in My OS
biggest yikes #130
Posted 24 April 2015 - 12:06 AM
There should be some sort of marker for the edge of the world
Antelux #131
Posted 25 April 2015 - 02:04 AM
Can I use This in My OS

Sure! Go right ahead.

There should be some sort of marker for the edge of the world

Can you explain a bit more on this?
comp500 #132
Posted 25 April 2015 - 09:27 AM
You could have a file download peer to peer system, sort of like Pando Media Booster. Imagine this. Someone in your vicinity running the program with a wireless/wired modem connected to you. You broadcast an "update check". They receive it then broadcast their version and you broadcast your version. If either one of you has a higher version number they will begin to transfer data over.

Alert: turn on your sarcasm detector

So an easy way to let hackers inject a trojan into your computer? Sure, why not! I'd love to hack into some computers and steal their personal info :D/>
oh… have you ever heard of bittorrent?
well… bittorrent gets around this by using hashes.
the hash identifies the program, so the updater only needs to download the hash, then copy over the file from someone else and verify it
biggest yikes #133
Posted 02 May 2015 - 10:22 PM
There should be some sort of marker for the edge of the world

Can you explain a bit more on this?
Each world has an edge where you can't progress (I think the biggest world has an edge at X: 128, Y: 128), and right now if you try to move outside that border it's just impossible, and there's no way to tell at a glance. I'd like to be able to have some sort of block that is placed on the edge of the world, so you can tell that's at the edge just by a glance.

Also, out of curiousity, is it intended that you can /give yourself an entity? (try /give Player 400 [replace Player with your name], and you'll get a Zombie)
Edited on 02 May 2015 - 08:51 PM
Antelux #134
Posted 03 May 2015 - 12:31 AM
Each world has an edge where you can't progress (I think the biggest world has an edge at X: 128, Y: 128), and right now if you try to move outside that border it's just impossible, and there's no way to tell at a glance. I'd like to be able to have some sort of block that is placed on the edge of the world, so you can tell that's at the edge just by a glance.

The screen offset stops changing whenever you reach the borders. If this isn't working for you, perhaps I'll add in an option to change it in the future.

Also, out of curiousity, is it intended that you can /give yourself an entity? (try /give Player 400 [replace Player with your name], and you'll get a Zombie)

Not intended at all. The thing is, the commands are implemented without any real restrictions. I'll be sure to add a restriction for that, and a few others for the upcoming update.
While we're on the topic of the upcoming update, the reason it's taking so long is because I'm trying to finish up adding in the new Interface API, which will replace the Menu API. It's a bit more complicated to use, but should make things easier in the end.

Also, soon enough, I plan to add a new way for mods to interact with the game.
Basically, mods will be able to provide a "loop" function. The function is provided with "events," which can be:
- "interact" events, returns which player interacted with which block using which asset. (Useful for protection scripts)
- "death" events, returns which player died and cause of death.
- "chat" events, returns which player said what.
- "attack" events, returns which player/mob/block hurt another player/mob/block

I'm thinking of what other events to add. All in all, the next update will change/overhaul massive parts of the game, and modding.
It might be a while longer.
biggest yikes #135
Posted 03 May 2015 - 12:35 AM
Also, out of curiousity, is it intended that you can /give yourself an entity? (try /give Player 400 [replace Player with your name], and you'll get a Zombie)

Not intended at all. The thing is, the commands are implemented without any real restrictions. I'll be sure to add a restriction for that, and a few others for the upcoming update.
I didn't think so :P/>
Still want spawn-eggs, though
Edited on 02 May 2015 - 10:35 PM
ExplosiveFerrets #136
Posted 14 May 2015 - 02:06 AM
I think you should make an online server function. (Via HTTP not rednet)
Antelux #137
Posted 14 May 2015 - 03:08 AM
I think you should make an online server function. (Via HTTP not rednet)

I was actually thinking of this rather recently, after seeing some API's which act as a rednet replacement, having it use HTTP instead.
Once I make a rednet server, a HTTP one wouldn't be so far away from it.
Edited on 14 May 2015 - 01:09 AM
Longorio #138
Posted 14 May 2015 - 12:38 PM
I have to say this is awesome! :lol:/> Im looking forward for the final version! :D/>

PD: This is my first Post, so I 'd like to say hello everyone in this community! :P/>
Antelux #139
Posted 14 May 2015 - 12:53 PM
PD: This is my first Post, so I 'd like to say hello everyone in this community! :P/>

Welcome to the community! I hope you enjoy it here. :)/>
Antelux #140
Posted 14 May 2015 - 02:20 PM
Updated the game to 1.98b-Beta!

What's new this version:
– New functions: Menu.drawMenuBox(), Menu.Write(), Level.setInGame(), Level.isInGame(), Level.setSingleplayer(), Level.isSingleplayer()
– Direct Buffer Interfacing with the game's main drawer. Potentially allows for faster rendering.
– Entites are now saved.
– A (Really Ugly) Underworld, Some slight world tweaks. Disabled for now until it's complete.
– A basic lighting system.
– Major buffer speed up, atleast twice as fast, if not more.
– Partly fixes an offset bug, where you could see purple textures.

* Allows assets to define a new variable: "animationSpeed"
== Here is the information on it.
– The speed must be atleast than 1.
– Setting the number to "20" makes it happen once every second.
This means multiples of 20 equal 1 second. 40 = 2 seconds, 60 = 3 seconds, etc
– Setting the number to "10" makes it happen twice a second.
– Setting the number to "1" makes it happen 20 times a second, the fastest possible.

* Mods can now add in their own generation code
== Supply the function File.addMod() with a table called "Generation"
– File.addMod(Generation = {
[Dimension Number (Ex 0 for overworld)] = {
["before"] = generationFunction(), – Used if you want to run the function before the specific dimension is generated, leave empty if not used.
["after"] = generationFunction() – Used if you want to run the function after the specific dimension is generated, leave empty if not used.
}
})
– Your function is handed the whole dimension you requested. From there, you can use a loop like so:
local width, height = Level.getSize()
for x = 1, width do
for y = 1, height do
– Your code here
end
end

* Completley overhauled how the game's main loop works.
== Two coroutines, render and game
– the render coroutine draws to the screen.
– the game coroutine updates the world and everything in it.
- Both are ran based on the target FPS (Default is 20)
- Both are timed to see how long it takes to run
* the game coroutine runs in UPS (updates per second)
* the render coroutine runs in FPS (frames per second)
biggest yikes #141
Posted 15 May 2015 - 01:27 AM
startup GUI seems to be glitched in CCEmuRedux, refresh lag occurs
EDIT: Game crashes when trying to punch the blocks around a staircase.
Player:255: attempt to perform arithmetic __sub on nil and number
seems like it's because "Hard Rock" doesn't have a health number, just "unbreakable = true"
Edited on 14 May 2015 - 11:37 PM
Antelux #142
Posted 15 May 2015 - 01:54 AM
startup GUI seems to be glitched in CCEmuRedux, refresh lag occurs

Yeah, there does seem to be refresh lag. I might have overlooked this. But don't worry. The next update will be one that focuses on aesthetics, and making the game look nicer, so I'll try to fix this. For example, water actually looks like it's shimmering now, and the chat wraps by words, not letters, and allows for color code support (&amp;#) for future multiplayer.

EDIT: Game crashes when trying to punch the blocks around a staircase.
Player:255: attempt to perform arithmetic __sub on nil and number
seems like it's because "Hard Rock" doesn't have a health number, just "unbreakable = true"

That shouldn't happen. "unbreakable = true" is a replacement for the health parameter, making sure the block is invincible.
I tried punching the blocks, and I didn't seem to crash or anything. I'm continue to look into it, however.

Thanks for reporting these!
biggest yikes #143
Posted 15 May 2015 - 10:55 PM
Weird.
I've checked the code, and I can't seem to find anything to say it wouldn't crash.
It subtracts the health by the damage, and the damage is set to 0, but the health of the block is never set either, meaning it subtracts a number from nil, and stuff goes bad.
If line 252 is changed from
if Assets[Area.Block.ID].unbreakable then totalDamage = 0 end
to
if Assets[Area.Block.ID].unbreakable then totalDamage = 0 Area.Block.Health = 1 end
it seems that it works fine, but you can test this yourself if you want.

This one isn't really a glitch, but you can sort of "camouflage" if you set your name to "", color to green, and face right. In the overworld, you'd be invisible.
Can you spot me in this photo? No? Didn't think so.

I guess it could become unfair for other players, but then again, real Minecraft has the same issue with custom skins.
Edited on 15 May 2015 - 09:09 PM
Antelux #144
Posted 15 May 2015 - 11:20 PM
Weird.
I've checked the code, and I can't seem to find anything to say it wouldn't crash.
It subtracts the health by the damage, and the damage is set to 0, but the health of the block is never set either, meaning it subtracts a number from nil, and stuff goes bad.
If line 252 is changed from
if Assets[Area.Block.ID].unbreakable then totalDamage = 0 end
to
if Assets[Area.Block.ID].unbreakable then totalDamage = 0 Area.Block.Health = 1 end
it seems that it works fine, but you can test this yourself if you want.

Even weirder, I tried what I did earlier, and only now did it crash. Of course, I fixed it, simply making it so that it won't even run the code if the block is unbreakable.

This one isn't really a glitch, but you can sort of "camouflage" if you set your name to "", color to green, and face right. In the overworld, you'd be invisible.
Can you spot me in this photo? No? Didn't think so.

I guess it could become unfair for other players, but then again, real Minecraft has the same issue with custom skins.

That's one of the reasons why there are name tags on players. Though, I'm not sure why I don't see your player's name tag, unless you disabled it.
biggest yikes #145
Posted 15 May 2015 - 11:20 PM
-snip-
That's one of the reasons why there are name tags on players. Though, I'm not sure why I don't see your player's name tag, unless you disabled it.
set the name to "" (empty string) and it goes poof, no more nametags
Edited on 15 May 2015 - 09:21 PM
Antelux #146
Posted 15 May 2015 - 11:23 PM
set the name to "" (empty string) and it goes poof, no more nametags

Woops, completely just read over that. I'll make it so that there is a name tag on players with blank names (Player), and have their color change if the foreground color is the same as their color.
Edited on 15 May 2015 - 09:23 PM
biggest yikes #147
Posted 15 May 2015 - 11:24 PM
set the name to "" (empty string) and it goes poof, no more nametags

Woops, completely just read over that. I'll make it so that there is a name tag on players with blank names (Player), and have their color change if the foreground color is the same as their color.
You could just tell the UI to never allow an empty string, and if the properties file is edited refuse to open a world
This post was before that edit, sorry :P/>
Edited on 15 May 2015 - 09:26 PM
ExplosiveFerrets #148
Posted 16 May 2015 - 02:09 PM
I think you should make an online server function. (Via HTTP not rednet)

I was actually thinking of this rather recently, after seeing some API's which act as a rednet replacement, having it use HTTP instead.
Once I make a rednet server, a HTTP one wouldn't be so far away from it.

Okay, good. (sorry for really delayed reply :P/>)
Thefdjurt #149
Posted 22 May 2015 - 03:04 AM
I got this errorlog
Level:559: 'for' initial value must be a number
This game look like it's going to be great +1
Antelux #150
Posted 22 May 2015 - 05:13 PM
I got this errorlog
Level:559: 'for' initial value must be a number
This game look like it's going to be great +1

Took a look at it. I'm not sure why it did that, as you didn't give too much context on it. I did make the function check for the variables needed, though, just in case it happens again.

Also, thanks! It's always nice to hear that people are still trying this. The next update, which I said would focus mainly on aesthetics, should have smoother game play as well, as I added in functionality for something that has been there since the very first releases. I won't spoil it too much, but this update will be pretty good.
Antelux #151
Posted 23 May 2015 - 03:32 AM
Well, here we are. The 150th post for MiniatureCraft, @7,900+ Views. Never thought the game would have that many posts, or views. (Though, to be fair, a majority of the posts are my own :P/>)
Anyway! There's been a lot of improvements and additions to the version of the game I'm working on.
I won't go into much detail, but I'll leave this sneak peak.



It's going pretty well. You can expect this new generation code, the ability to add seeds, and some other stuff I won't spoil.
Edited on 23 May 2015 - 01:37 AM
Antelux #152
Posted 24 May 2015 - 07:09 PM
So, I've been experimenting with some new title screens.
I had simple and clean in mind, so here's what I came up with.



Any thoughts?
CrazedProgrammer #153
Posted 24 May 2015 - 08:21 PM
Nice, but the text is a little hard to see.
You could change the background color to another color to distinguish the text from the background.
Edited on 28 May 2015 - 07:12 PM
Thefdjurt #154
Posted 26 May 2015 - 08:01 PM
snip
Looks cool, but like CrazedProgrammer said, make to the text stand out more with a different background
ry00000 #155
Posted 28 May 2015 - 03:39 PM
It installed MiniatureCraft 1.98 when I ran the install!
MKlegoman357 #156
Posted 28 May 2015 - 09:11 PM
It installed MiniatureCraft 1.98 when I ran the install!

If you look at the topic title you'll find the answer ;)/>
biggest yikes #157
Posted 29 May 2015 - 01:28 AM
It installed MiniatureCraft 1.98 when I ran the install!
That's the latest! MiniatureCraft 2.0 isn't complete yet.

//offtopic
sneak peak
http://theoatmeal.co...mics/sneak_peek
Edited on 28 May 2015 - 11:31 PM
SpencerBeige #158
Posted 30 June 2015 - 12:00 AM
you could get the saves smaller by converting it to hex.
Antelux #159
Posted 03 July 2015 - 01:17 AM
you could get the saves smaller by converting it to hex.

Can you give me an example of this?
SpencerBeige #160
Posted 03 July 2015 - 03:39 AM
nvm just tried it out, hex actually increases the size of the file significantly. doubles it a few times.
Rougeminner #161
Posted 03 July 2015 - 08:15 AM
this is a while new level to computercraft… pretty awesome if you ask me can't wait to see the finished project. i saw some chat about modding this. Computercraft for this would be amusing :D/>
Bomb Bloke #162
Posted 03 July 2015 - 08:24 AM
If you're still having issues with the size of your save files, you might consider giving Package a try.

The idea is that you load it as an API, then when you go to deal with your save files you use package.open() instead of fs.open(). The rest of your code you leave exactly the same; it'll apply LZW compression / decompression to everything that goes through the file handle.

There are a couple of catches; one is that there'll be a bit more server load when reading / writing (I don't know how much, but you may or may not need to put some work into yield management), and the other is that files written with the package API can't be read by the fs API (or vice versa).
Antelux #163
Posted 03 July 2015 - 07:30 PM
If you're still having issues with the size of your save files, you might consider giving Package a try.

The idea is that you load it as an API, then when you go to deal with your save files you use package.open() instead of fs.open(). The rest of your code you leave exactly the same; it'll apply LZW compression / decompression to everything that goes through the file handle.

There are a couple of catches; one is that there'll be a bit more server load when reading / writing (I don't know how much, but you may or may not need to put some work into yield management), and the other is that files written with the package API can't be read by the fs API (or vice versa).

Thing is, even though this does seem very promising, mods which add blocks will most likely have IDs above the value 256. I've thought about making each ID two bytes instead, but that would double the file sizes, so I'm sort of stuck between having a limited ID for blocks and tiles with smaller file sizes, or unlimited IDs (Well, up to 65535 that is) with larger file sizes. So, the question is, how would Package deal with this?
Bomb Bloke #164
Posted 04 July 2015 - 03:17 AM
All Package does is seek to more efficiently store whatever it is you ask it to write. If you hand it a whole bunch of two-byte IDs, what'll actually go to disk will generally end up taking less space than that (on average), although when you read the information back later you should get exactly what you started with. The rule of thumb is that the more times a given sequence of bytes/characters/whatever is repeated in your data stream, the better the compression ratio will be.

Of course, implementing your own techniques for reducing the amount of data you need to write would help a lot (whether or not you're using Package) - you can do it far more efficiently yourself, as you know ahead of time what your data's going to look like and can optimise your methods accordingly. Even incorporating basic RLE would do no end of good.

I'll go over the techniques I used in WorldPorter, which allowed me to store something like a million blocks per megabyte (or was it two million? I forget), by translating string IDs. First, here's a (somewhat abridged for clarity) extract of the saving code:

Spoiler
local fileOut, commonBlocks, last, amount = fs.open(shell.resolve(filename), "wb"), {}

local function writeString(text)
	for i = 1, #text do fileOut.write(text:byte(i)) end
end

local function writeInt(num)
	fileOut.write(bit.band(num, 255))
	fileOut.write(bit.brshift(num, 8))
end

local function doWrite()
	if type(commonBlocks[last]) == "table" then
		if #commonBlocks > 255 then writeInt(0) else fileOut.write(0) end
		writeString(commonBlocks[last][1])
		fileOut.write(0)
		fileOut.write(commonBlocks[last][2])
		commonBlocks[last] = true
	elseif #commonBlocks > 255 then writeInt(last) else fileOut.write(last) end

	if amount > 255 then
		fileOut.write(0)
		writeInt(amount - 1)
	else fileOut.write(amount) end
end

for y = 1, ymax do for z = 1, zmax do for x = 1, xmax do
	local next = scan[y][z][x]

	if not (commonBlocks[next.name] and commonBlocks[next.name][next.metadata]) then
		commonBlocks[#commonBlocks + 1] = {next.name, next.metadata}
		if not commonBlocks[next.name] then commonBlocks[next.name] = {} end
		commonBlocks[next.name][next.metadata] = #commonBlocks
	end

	if commonBlocks[next.name][next.metadata] == last then
		amount = amount + 1
	else
		if last then doWrite() end
		last = commonBlocks[next.name][next.metadata]
		amount = 1
	end
end end end

doWrite()

"scan" is a table populated with information about blocks in the world. Each x/y/z element is a table that was obtained via commands.getBlockInfo(); for eg, scan[10][45][5] might look like:

{
  ["name"] = "minecraft:stone",
  ["metadata"] = 0
}

As the encoding loop runs, it checks to see if the commonBlocks table has a key named after whatever block type is currently being inspected. If so, it checks for a sub-table indexed against the block's metadata value.

If these aren't both found, it adds a copy of the block's table to commonBlocks (as a numeric index, #commonBlocks + 1, remembering that #commonBlocks doesn't count the string-based keys), then generates the missing sub-tables and stores the length of #commonBlocks under them. In this way, every block name and metadata combination is translated to a unique number, and that unique number can be used to get the block name and metadata back.

When writing to disk (in the doWrite() function), the code inspects the commonBlocks table to see if the string/metadata table is present for the current block to be written. If it is, then it writes those values to disk, and then replaces the table with a boolean. If the boolean is present, it instead just writes the index number (using one byte to do it if there are less than 256 entries in the table, or two bytes once the length exceeds that amount) - thus every string/metadata combo only gets written to the file once, and is thereafter represented as a number. Decompression is the same process in reverse - if you find an explicit string/metadata combo in the file (introduced by an index of 0), add it to the commonBlocks table. If you find a number, it's guaranteed to translate to a string/metadata combo you already added. Read one byte per block until the table has at least 256 entries in it, then start reading two.

So that's a basic dictionary-based system for dealing with block names. Then there's the RLE, which is even simpler:

Whenever a block is encountered, it isn't written to disk right away. Instead the code compares it against whatever the last block was. If it's a match (in terms of both name and metadata - it has to be the exact same entry in commonBlocks!), then it simply increments an "amount" counter instead of writing anything.

As soon as a different block is encountered, the previous block's representation gets written along with the amount of times it was seen (using one byte for the amount if less than 256, or three bytes in those rare occasions where it's more - a 0 followed by a two-byte int). Thus, on average, huge runs of dirt/air/stone are recorded using a few bytes.

In the source, the code that writes is around lines 318-358 (running in parallel with the code that's actually filling the "scan" table with information), whereas the code reading it back (while wrestling with commands.setBlock()) is around 464-497.

An important aspect of lossless data compression is that you don't get something for nothing - it's merely a method of representing information more efficiently, the cost being processor time and RAM usage. The more chaotic the original data stream is, the less you can do to reduce its size (it's very easy to describe the fabled painting of "a polar bear in a snow storm" ("it's a pure white canvas"), but the "mona lisa" can't be summed up so simply). If you run Package over the top of these techniques, you'll probably end up with a smaller filesize again, but the actual effect Package had would be less pronounced than if you used Package alone.
Rougeminner #165
Posted 05 July 2015 - 04:54 AM
this is probably going to sound really stupid but. [Start Idea] say you had 256 blocks in minicraft pure vanilla, and lets say you stored them in a method of which you named one and could call block 128 by doing 1:128 "but what if i had multiple types of this block like a furnace On and Off" 1:128[0] and 1:128[1] that way you could support up to 255 mods. this system can continue to be expanded just by morphing the concept a tiny little bit.[!stop idea!]

Like i said this idea probably won't work as it took me 2 min to come up with and all me programming ideas almost never play out for the better but it might be worth a shot what ever you do please don't ask me for the code this is a concept not a proof of concept.

I apologize if this fails or is all around a bad idea and will never work in your code.

Rougeminner
Rougeminner #166
Posted 05 July 2015 - 05:26 AM
i get an error when i try and download it. what version of computercraft is this for i get string:67 error attempt to index
Antelux #167
Posted 05 July 2015 - 06:30 PM
- snip -

If I do end up using package, do you mind if I include it within the files of MiniatureCraft itself, and maybe even modify it a bit, given I give full credit?

- snip -

I'm not sure if I fully understand what idea you're trying to present. If you want, do you think you can rephrase it?
Also, as far as the error goes, make sure http is enabled, and github isn't blocked in your CC config.
Bomb Bloke #168
Posted 06 July 2015 - 12:36 AM
If I do end up using package, do you mind if I include it within the files of MiniatureCraft itself, and maybe even modify it a bit, given I give full credit?

Go for it.
Antelux #169
Posted 06 July 2015 - 07:06 PM
After some experimenting, turns out that using Package gives a great improvement on file size.
When I generated a 64x64 world, normally it would be 40kb all together for the world, but with Package, the file size was reduced to 4.3kb for the whole world.
Basically, it's 1/10 it's old size.

With this in mind, I might consider making worlds infinitely generated, seeing how file sizes are so small.
Though, I have yet to make the IDs two-bytes long. It won't be too hard to do, and hopefully, it doesn't impact the new size too much.
Bomb Bloke #170
Posted 07 July 2015 - 01:29 AM
Likely the two-bytes thing wouldn't even double it, but I doubt it'd be much of an issue even if it did.

It struck me that, depending on how much you're hurting for space, it may be worth stripping out most of Package's code. This version offers only the "open" and "lines" functions, and is somewhat less than half the size.
Antelux #171
Posted 07 July 2015 - 02:24 AM
Likely the two-bytes thing wouldn't even double it, but I doubt it'd be much of an issue even if it did.

It struck me that, depending on how much you're hurting for space, it may be worth stripping out most of Package's code. This version offers only the "open" and "lines" functions, and is somewhat less than half the size.

I've already stripped out what was needed from your program. Thanks for the reminder, though.
Rougeminner #172
Posted 12 July 2015 - 06:07 PM
never mind about my idea. it was just an idea i had at 4 AM so i probably wasn't going to work anyway…
Antelux #173
Posted 13 July 2015 - 01:42 AM
If anyone is wondering, MiniatureCraft is still being worked on. It's just having some slow progress.
Though, it has a bunch of new features that I'm sure you guys will love.

Here are the major ones:
* There are now entities in the game. They spawn regularly in the world.
* Lots of GUIs have changed.
* The game is getting ready for multiplayer. Some functionality has been put into it.
* A new player energy system which is used for using anything in game.
* Asset tweaking for more balanced health.
* You can now use a hoe to create farmland. You can place seeds on it.

There's a whole bunch of other changes (30+) that you guys can look forward to as well.
Edited on 14 July 2015 - 06:21 PM
Bomb Bloke #174
Posted 13 July 2015 - 02:28 AM
* A new energy system which is used for using anything in game.

"Anything" as in pickaxes? Furnaces? …. Turtles?
Antelux #175
Posted 13 July 2015 - 03:06 AM
"Anything" as in pickaxes? Furnaces? …. Turtles?

Energy is used to use any tool or place blocks. As far as turtles go, I guess it would use energy to place down a turtle :P/>
But don't worry, energy regens pretty quickly.
Bomb Bloke #176
Posted 13 July 2015 - 04:55 AM
Ah, so player energy. Sounds like it calls for a food system!
Antelux #177
Posted 14 July 2015 - 08:19 PM
Ah, so player energy. Sounds like it calls for a food system!

Well, there is food in game. Though, it's not used for restoring energy. It'd probably be pointless because of how fast it regenerates.

Though, it's used for healing yourself. You don't regenerate health in game, so you'll have to make some food :P/>
Creator #178
Posted 14 July 2015 - 08:27 PM
When is 2.00 comming out?
Antelux #179
Posted 14 July 2015 - 08:53 PM
When is 2.00 comming out?

I have no set release date. Though, if I can get everything that I want done, which isn't too much, probably later this month, or early next month.
ebernerd #180
Posted 17 July 2015 - 04:49 PM
I've never downloaded this, and yet I've watched the post evolve over the past few months. xD
I just played it and I love it. You've done so well with it. Good job!
biggest yikes #181
Posted 19 July 2015 - 03:28 PM
I've watched the post evolve over the past few months.
Posts.. they grow up so fast
There's a whole bunch of other changes (30+) that you guys can look forward to as well.
Did you add spawn eggs?
Edited on 19 July 2015 - 01:29 PM
Antelux #182
Posted 19 July 2015 - 10:38 PM
I've never downloaded this, and yet I've watched the post evolve over the past few months. xD
I just played it and I love it. You've done so well with it. Good job!

Thanks :D/> If you liked the current version of the game, I think you'll love the upcoming one.

Did you add spawn eggs?

Yep. All six of them.
SKGaming #183
Posted 27 July 2015 - 03:28 AM
This is Really awesome! But I found a bug <_</>
If you /tp out of bounds, and then exit the chat, you'll return to your spawnpoint but now, You are gone!
Your character is invisible, You can't die, You can't move and you can't use items.
You can, still, open your inventory, mess around, type in chat ( /tp doesn't work btw), but you CAN'T PROGRESS IN ANY WAY, SHAPE OR FORM!
Even reloading the world or even reseting the computer won't work.
Also, Spawning inside blocks. Nou'f said.
Sincerely, Sagi.
Antelux #184
Posted 27 July 2015 - 07:00 PM
This is Really awesome! But I found a bug <_</>

Thanks for reminding me about that, forgot to make the command safer. I made it so you can't tp off the map anymore.
Though, the ability to teleport into blocks is intentional.

But, as a side note, I finally made some gifs to show off the new version.

Here's that new main menu I've been working on.


Here's a gif showing the improvements made to the lighting to make it look better. You might not notice it at first, but if you don't, do take notice of how torches don't flicker any more (as well as all other light sources).


Here's another showing off the new entities, as well as killing them.


Lastly, here's one showing what lurks in the caves below.. (plus how players take damage).


Everything is going pretty well so far. The amount of changes have reached 50 so far.
If you have any questions about what was shown, let me know. Otherwise, feedback and criticism would be appreciated. Thanks.
Edited on 28 July 2015 - 04:10 PM
Jcat46 #185
Posted 29 August 2015 - 05:37 AM
I enjoy this idea. +rep or something.

The only downside is this:

I can't run the beta…



I go into my advanced computer, put the command (pastebin run FgAggvy1) into the terminal, and it loads up.
I set the directory to ayylmao and it installs into ayylmao.
so now I have ayylmao in my computer.
I switch to the directory and I find mc, Assets, errorlog and API (folder).
running mc does nothing. Errorlog contains this:

and editing mc contains this:

any help with this?
Antelux #186
Posted 31 August 2015 - 02:29 AM
Can you tell me what CC version you're using?
CaosTECH #187
Posted 03 September 2015 - 08:29 PM
Hey! Love the game, it reminds me of a 2D version of minecraft called Minicraft, but whenever I launch the game,

it takes a moment to launch and whenever I create or load a world it just sits there, doesnt load, as if the game crashed.

I tried to maximize the amount of computer data space possible but it didnt work.

I REALLY want to play it it looks amazing




EDIT -
Btw no error popped up
Edited on 07 September 2015 - 12:23 AM
LDDestroier #188
Posted 03 September 2015 - 10:31 PM
Yeah, I get the exact same problem as Jcat. I can't even edit the file! Something must've goofed up.
Antelux #189
Posted 03 September 2015 - 10:34 PM
Hey! Love the game, it reminds me of a 2D version of minecraft called Minicraft, but whenever I launch the game,

it takes a moment to launch and whenever I create or load a world it just sits there, doesnt load, as if the game crashed.

Yeah, it's based of Minicraft actually.
When it's loading, it's actually creating the world that will be seen in the main menu. If you don't see a file named "errorlog" in the directory your installed the game in, just let it load for a bit.

Speaking of loading, I actually did finish the latest version of the game (2.0.53), but I took it off github. The reason for this is because the game has become too much for ComputerCraft to handle in terms of memory. So yeah, I need to really optimize it. Only recently did I notice that running it on CC-Lite easily takes up 100MB of memory. So the next update will have to wait for a bit.

Though, in the mean time, I am working on a little side project which'll be pretty cool once it's released. My Keyboard API is a part of it.

Yeah, I get the exact same problem as Jcat. I can't even edit the file! Something must've goofed up.

I think it's ComputerCraft running out of memory for the game. Exiting the whole world and running it worked for me, but just barely. Sorry that it doesn't work too well at the moment.
Edited on 03 September 2015 - 08:35 PM
LDDestroier #190
Posted 04 September 2015 - 12:30 AM
Yeah, I get the exact same problem as Jcat. I can't even edit the file! Something must've goofed up.

I think it's ComputerCraft running out of memory for the game. Exiting the whole world and running it worked for me, but just barely. Sorry that it doesn't work too well at the moment.

I used an emulator (ccemuredux). Also, how would it have ran out of memory so fast? And with simply editing the file directly after having installed it? I'm pretty bummed out, the game looks fantastic.
Antelux #191
Posted 04 September 2015 - 03:58 PM
I used an emulator (ccemuredux). Also, how would it have ran out of memory so fast? And with simply editing the file directly after having installed it? I'm pretty bummed out, the game looks fantastic.

The game is really inefficient with a lot of tables, which is probably why it eats up so much memory.
I'm not really sure why it crashes after editing it. Could be the memory problem. The file is pretty big. Try to edit any other file and see if you get the same error. The API/Crafting should be the smallest file, I believe.
Edited on 04 September 2015 - 01:58 PM
CaosTECH #192
Posted 07 September 2015 - 02:21 AM
(Btw I used an emulator and maxed out the possible memory)

Ok So I Downloaded And Ran It, (Beta not full release, for some reason it got removeed and is not on the forum post anymore), but this pops up whenever I run it,
[attachment=2363:Screen Shot 2015-09-06 at 9.14.03 PM.png]






So I typed in "edit /mc" , then this pops up, and severely confused me
[attachment=2364:Screen Shot 2015-09-06 at 9.14.03 PM.png]



Then I used LuaIDE and tried to edit it, then this came up,
[attachment=2365:Screen Shot 2015-09-06 at 9.19.53 PM.png]
Bomb Bloke #193
Posted 07 September 2015 - 01:53 PM
Seems you've accidentally posted the same image twice?

The window API error is a symptom of this bug, which Dan neglected to deal with before letting CC 1.74 out of beta (I'm guessing he decided that a proper fix would be too time consuming to create, and that he figured a workaround would create too great a performance hit). Long story short, characters that would normally be translated to question marks now may instead crash advanced computers (due to their use of multishell and hence the window API).

Beats me as to why MiniatureCraft's source would contain any such characters, but hey. The "quick'n'dirty" workaround is to write a script that term.redirect()'s to term.native() and then shell.run()'s the "problematic" script.
Edited on 07 September 2015 - 11:54 AM
MKlegoman357 #194
Posted 07 September 2015 - 02:09 PM
The program is erroring because things like these are in the main program:


<<<<<<< HEAD
>>>>>>> parent of 3fb0466... 2.0.52 Update (Finally!)
Antelux #195
Posted 07 September 2015 - 04:08 PM
The program is erroring because things like these are in the main program:


<<<<<<< HEAD
>>>>>>> parent of 3fb0466... 2.0.52 Update (Finally!)

That's weird, the program shouldn't have that in there since I reverted the changes…
I'll remove them now.

The window API error is a symptom of this bug

I found which characters were doing it. It was line dashes that were twice the normal size where the license is at the top of the "mc" file. Guess I mistook them for regular dashes.
Edited on 07 September 2015 - 02:13 PM
Antelux #196
Posted 07 September 2015 - 04:33 PM
Alright, I think I fixed it. I was able to download and run the installer, as well as the game, without problem. Though, let me know if any other problems still exist.
Edited on 07 September 2015 - 02:34 PM
CaosTECH #197
Posted 08 September 2015 - 01:26 AM
It Works! But here is a bug report along with some other stuff,

Whenever you place two saplings (One right above the other) the tree bugs out and the wood block changes the color of the ground to brown, as if there is a log there but there is nothing there
Antelux #198
Posted 08 September 2015 - 04:56 PM
Whenever you place two saplings (One right above the other) the tree bugs out and the wood block changes the color of the ground to brown, as if there is a log there but there is nothing there

I wasn't able to repeat this. Do you think you could show me a picture of it happening?
CaosTECH #199
Posted 10 September 2015 - 12:56 AM
Ok, I fixed the bug, one of the files were missing, so I reinstalled the game and it fixed itself
CaosTECH #200
Posted 10 September 2015 - 01:10 AM
Although this bug does keep occouring, heres a link to a video

| | |
\/ \/ \/
SHH! This is a secret link
[media]http://youtu.be/RICZfMm0HB0[/media]










- Edit
I didnt know that it just showed the video :P/>
Edited on 09 September 2015 - 11:10 PM
Antelux #201
Posted 10 September 2015 - 01:46 AM
Thanks for all the bug reports. But, allow me to reassure you that all of those bugs (With the exception of the screen acting out when you spawn too far to the right) were fixed in the dev version of MiniatureCraft. As you may know, I had to revert back to the current version of MiniatureCraft you're using because the current dev version (2.0.52) is too much for ComputerCraft to handle. Once I'm finished optimizing the dev version, you can expect all those bugs and many more to have been fixed, as well as a lot of new features you may enjoy. So, for now, you'll have to wait it out for a bit, sorry.

I'll try to be quicker than not about the optimizing, but school has started again for me, heavily limiting the time I have to myself due to work. So, the wait might be longer than expected.
CaosTECH #202
Posted 10 September 2015 - 04:23 PM
That sounds great! but I understand that school and be very time consuming.

I have recently had help from oeed on creating an OS and would like to include miniature craft in it, I would just like to ask permission

If yes then can I know what file has the exit button on it, because once they exit I want it to go right back to the OS, instead the shell.
Antelux #203
Posted 10 September 2015 - 09:08 PM
I have recently had help from oeed on creating an OS and would like to include miniature craft in it, I would just like to ask permission

If yes then can I know what file has the exit button on it, because once they exit I want it to go right back to the OS, instead the shell.

Sure, go right ahead. I'm not sure what you mean by the "exit" button though. Do you think you could explain a bit further?
Edited on 10 September 2015 - 07:08 PM
Bomb Bloke #204
Posted 11 September 2015 - 01:21 AM
It sounds like he wants to modify MinitureCraft so that it re-launches his OS instead of ending.

Which is the wrong way to do things. If an "OS" launches another script, then the OS is still running, and should be able to resume from where it left off when that script completes.
CaosTECH #205
Posted 11 September 2015 - 12:59 PM
Yeah, I would like it to that way when you click QUIT? it exits the game but goes back into my OS
Lyqyd #206
Posted 11 September 2015 - 06:00 PM
That wouldn't require modifying this game. You should modify your OS to handle running other programs correctly.
CaosTECH #207
Posted 11 September 2015 - 08:36 PM
Uhm no, it would require to edit the game to where when it gets quit, it returns back to the OS. Because whenever the game is quit, it runs the shell
Antelux #208
Posted 11 September 2015 - 08:49 PM
You should modify your OS to handle running other programs correctly.

Yeah, I'd have to agree with this. It should be rather easy to return back to the OS, actually. If you need help with it though, you can let me know and I'll see what I can do.
Lyqyd #209
Posted 11 September 2015 - 09:15 PM
Uhm no, it would require to edit the game to where when it gets quit, it returns back to the OS. Because whenever the game is quit, it runs the shell

I can assure you that no edits to the game will be required. Take a look around the OS section of the forums. Most, if not all, of the examples there do not require specially modified programs.
Konlab #210
Posted 22 September 2015 - 06:39 PM
How can I mod this very cool program?
Antelux #211
Posted 22 September 2015 - 09:16 PM
There is a (albeit incomplete) tutorial on how to mod the game on github. Function documentation can also be found there.
Just be aware that mods may break when I'm done restructuring the game and decide to upload it.
Though, it'll be worth it since you'll be able to do a lot more with modding. If you want extra info on how future modding will work, you can just pm me for the details.
But that update probably won't come for a bit. So, in the mean time, good luck with modding.
Feel free to ask me for help. :)/>
Edited on 22 September 2015 - 10:52 PM
Antelux #212
Posted 11 October 2015 - 11:31 PM
So, I'll give you guys the latest information on the game.

I'm still reworking it to be more efficient and such. As of now, here are some of the major changes:
– APIs and the game itself uses a require() function I wrote up. A lot better than inserting a bunch of the game's APIs into _G. (There's also an unload() function to remove any APIs which are no longer needed.)
– Error logging is better now. It saves the in game time and day, and any API can use it. The file that errored also is in the prefix of the log (ex: if the crafting API errored, the error would log to "Crafting_err" in a separate error folder.)
– Three new APIs: Client, Server, and Timer. The game will be much more server orientated now, and you can expect multiplayer to definitely be available. As for the timer API, it's like os.startTimer(), except without the need for pulling events, and timers of this API can also go on forever, as they take into account how os.time() wraps around from 24 to 0.
– An all new chunk system. I'm working on this in a seperate program, which I'll port to ComputerCraft once I've finished developing it. What this means is, worlds should not only be much, much faster when loading them up, but theoretically, the world should also be infinite.
– A lot of the APIs have been overhauled and made more efficient. Many functions have been put together. For example,
Player.setCoordinates() and Player.getCoordinates() have been combined into the function Player.coordinates() and can be used to set or get a player's coordinates.

There are some other goodies here and there, but that's about it. As of now, the server and client interaction is my main priority. Once I've finished that, I'll work on making better GUIs and such. Perhaps I'll make the furnace resemble the minecraft one. It would take longer to smelt stuff than the normal instantaneous way, but it would also mean you go from 1 Coal = 1 Iron/Gold to
1 Coal = 8 Iron/Gold.

Anyway, here's a picture on how the world generation is looking at the moment. This particular map is shaped to be an island, which isn't what the final product will be.



Hope you guys like the changes so far. Lemme know if you have any questions or concerns about the game.

EDIT: Also, super excited for the project dan is making (being discussed here). Once his secret project is out, MiniatureCraft will probably take a whole new direction in terms of quality. It'll probably resemble MiniCraft at first, and I'll end up trying (and probably failing) at doing some original sprite art for it later. I already have a cool idea for how the game will take advantage of palette switching. If you guys have any ideas as well for the game and the secret project, go ahead and lemme hear them.
Edited on 11 October 2015 - 09:54 PM
CaosTECH #213
Posted 12 October 2015 - 04:50 AM
Hey! This game has come a long way, love the new changes. Just wanted to know… what program are you using for the image of the generated map?


EDIT:
Uh, just wanted to know, is there an actual pastebin link to play the current game, other then the beta? You havn't updated the actual post since May…
Edited on 12 October 2015 - 03:20 AM
Antelux #214
Posted 12 October 2015 - 03:01 PM
I'm using Love2d for the maps, since it'll be easier to put into ComputerCraft once I'm done with it.

As far as the main post goes, I haven't updated it because it pretty much describes everything you need to know about the current release. The beta is the only playable version at the moment, and I probably won't upload the version I'm working on until it's in a playable state.

EDIT: Whoops, forgot to say earlier that I'll also try to add in dungeons and villages in the game to spice things up a bit and encourage exploration. I'll probably hand make a few rooms and have them randomly placed to create a dungeon or village. The lighting system will also be more realistic, and you won't be able to see multiple blocks into something.
Edited on 12 October 2015 - 01:14 PM
CaosTECH #215
Posted 12 October 2015 - 05:43 PM
Ok, sounds cool. Can't wait till its released :)/>
Antelux #216
Posted 19 October 2015 - 09:23 PM
I've implemented the whole chunk system into MiniatureCraft.



Yay.

This picture doesn't show too much of that, unfortunately. The black area on the bottom right is a chunk that hasn't been generated yet.
It doesn't take long to generate the chunks or anything. I just need to make it better tell when it should load chunks or not.

I also need to make it unload any chunks that aren't in use anymore appropriately.

Though, if you were to use the game as is, you can explore an infinitely generating world.
Never thought I'd implement something like it.

Also, on a side note, I added in a modified version of my Keyboard API. It's mostly for GUIs to use and the game itself.
Though, I plan to change it so it can support custom keybindings. So that's fun.
Creator #217
Posted 19 October 2015 - 09:38 PM
Does the project have a github repo?
Antelux #218
Posted 19 October 2015 - 09:45 PM
I'm assuming you're talking about the one I'm working on currently.

At the moment, it doesn't. Though, I've been considering making a separate branch in the current MiniatureCraft github repo for people to test it out and such.
Perhaps I will once I add a few more features to make the game a bit more playable.
CaosTECH #219
Posted 24 October 2015 - 06:22 PM
I have a question, what do you think you will do with Dans CraftOS2.0, or his new version of cc. Which, is going to be a standalone environment
CaosTECH #220
Posted 24 October 2015 - 06:29 PM
HALP! I just tried to install miniature craft and whenever I ran the installer, it said 'Installing…' but it wouldn't install!
Antelux #221
Posted 24 October 2015 - 06:42 PM
I have a question, what do you think you will do with Dans CraftOS2.0, or his new version of cc. Which, is going to be a standalone environment

I'm probably going to bring MiniatureCraft to it. At that point, I'm sure the game will look much better as I'll have access to more pixels. Also, looks like I'll be able to add sounds/music too.
So basically, art and sound will be the main priority when bringing it over. Then I'll add some other features as well, probably some stuff that's hard to do with CC's resolution. I don't have anything particular in mind, however.

HALP! I just tried to install miniature craft and whenever I ran the installer, it said 'Installing…' but it wouldn't install!

Is github blocked in your CC config?
Edited on 24 October 2015 - 04:45 PM
CaosTECH #222
Posted 24 October 2015 - 09:16 PM
I have a question, what do you think you will do with Dans CraftOS2.0, or his new version of cc. Which, is going to be a standalone environment

I'm probably going to bring MiniatureCraft to it. At that point, I'm sure the game will look much better as I'll have access to more pixels. Also, looks like I'll be able to add sounds/music too.
So basically, art and sound will be the main priority when bringing it over. Then I'll add some other features as well, probably some stuff that's hard to do with CC's resolution. I don't have anything particular in mind, however.

HALP! I just tried to install miniature craft and whenever I ran the installer, it said 'Installing…' but it wouldn't install!

Is github blocked in your CC config?
Nice, thats one thing that drove me crazy, no sound. And yeah hopefully the art style will be fantastic.

And for the installer, im using Mimic, From Gravlann's webbrowser emulator because currently I cannot access files on my computer.
Heres a link: https://gravlann.github.io/
And the thing is, it has github.io so I don't think github is blocked
Antelux #223
Posted 24 October 2015 - 09:30 PM
I tried it for myself just now. I'm not exactly sure what's wrong either. Perhaps you should try to see if any other programs which download their contents from Github behave in the same way.
CaosTECH #224
Posted 24 October 2015 - 09:57 PM
Just tried it with OneOS, it does the same thing… Maybe i should contact him about it

For now Im gonna spend a couple of minutes copying and pasting some text :)/>
CaosTECH #225
Posted 25 October 2015 - 01:21 AM
Ok, fixed my computers issue, i have Miniaturecraft Now and im trying to make an awesome mod for it :D/>
CaosTECH #226
Posted 25 October 2015 - 01:45 AM
xD xD xD xD xD xD

Found a bug :)/>

A was using my emulator running miniaturecraft and I created 2 worlds, one of them I already went into, left it, then went into my second one,
It crashed my emulator :)/>
It could have been my mod though. Anyways it could also be how either your game or how computercraft handles the MASSIVE amount of code your game uses.
Antelux #227
Posted 25 October 2015 - 02:08 AM
It can possibly be the game. I've seen it use 100mb on 64x64 worlds I believe in CC-Lite. Though, with the new chunk system in place, It keeps it around 5-10mb because I'm able to load and unload them appropriately.

I plan to release the one I'm working on soon enough on a separate branch on my github respitory.
Just have a few more features I need to put in the game before I do so.
For example, I'm thinking about how to define and load a new file format that can be used similarly to how schematics are used in World Edit. Except, this would be used more for placing down structures during world generation.

I'm glad to hear you're creating a mod, though. Good luck with it. I look forward to see what you make. :)/>
Lemme know if you need any help or have any questions concerning modding, though.
CaosTECH #228
Posted 25 October 2015 - 12:53 PM
K, thx for the support, and also can't wait to see how the new MiniatureCraft works out, atm your probably the best game-maker in CC (that I know of).

Oh and if its not to much trouble i've been working on a game, its kinda like a RPG Survival style game but I still cant get the main features worked out,
In miniaturecraft the screen follows the character, I have taken a look at your api's for miniaturecraft but its a bit complicated. Do you think you could help me?
Heres the pastebin link for you to take a look at it: fdwHMQhb or www.pastebin.com/fdwHMQhb

EDIT: HOLY CRAP! The minute I posted it I went to the pastebin link to see if it works, and its already gotten 94 views? How many people sit on there waiting for the newest upload?
Edited on 25 October 2015 - 11:55 AM
Antelux #229
Posted 25 October 2015 - 02:07 PM
Hey. I took a look at your game and edited it a bit. Basically, what you needed was offset values to make the screen move.
I've implemented such a method to your game. I also changed how you put solid and regular objects in your game, as doing it the way you did before could potentially cause a bit of lag with larger amounts of objects.
Lastly, I've given you a new function checkForCollision(x, y). It's called to see if a player can go to a particular spot or not.
You should take a look at the code to get what you need from it, which can be found at EZ94Hkjk.
Good luck with your game. :)/>
CaosTECH #230
Posted 25 October 2015 - 04:17 PM
Thx, good luck with your game also :)/>
CaosTECH #231
Posted 25 October 2015 - 05:48 PM
Oh hey, one thing about modding, In the tutorial it shows how to make a block, how do I make an item? And also I didn't really get how to crafting part worked.
Antelux #232
Posted 25 October 2015 - 06:32 PM
It's similar to a block. Here are two examples from the game:

[110] = {name = "Iron Sword", durability = 256, damage = 5, type = "sword", texture = {colors.lightGray, "/"}},
[209] = {name = "Bread", replenish = 4, type = "food", texture = {colors.brown, "B"}},

You define them in the same way you would blocks. If you take a look at the Assets file, you can see how different items are used and defined.

Also, as far as adding recipes go, you use the following function like so:

Crafting.setRecipe(ID of Crafting Table, ID of Item to Give, Amount to give, {ID of item required, Amount of item required, ID of item required, …})

Crafting.setRecipe(14, 120, 1, {218, 2, 226, 1})
Running this function is essentially saying that at a Crafting Table (ID 14), players can craft one Gem Sword (ID 120).
They need two Gems (218), and one Stick (226).

Hope that clears it up a bit more.
Edited on 25 October 2015 - 05:32 PM
CaosTECH #233
Posted 25 October 2015 - 06:57 PM
Thx, this is gonna be alot better. Oh hey one thing may I suggest adding in the future, projectiles? Like bows or something. Because im making a magic based mod only to find no bows :P/> Was gonna make a wand or something.

Can I be a bigger noob? I was looking through the items in assets and found a bow :P/>
Edited on 25 October 2015 - 06:19 PM
Antelux #234
Posted 25 October 2015 - 08:22 PM
There is a bow, but it's not functional at the moment. I had a bit of trouble creating one before. Hopefully that'll change in the version I'm working on.
CaosTECH #235
Posted 25 October 2015 - 09:17 PM
Yeah, tested it a bit ago, Anyways hope it does work, gl!
CaosTECH #236
Posted 25 October 2015 - 10:46 PM
Ok, im here with a list of things for the game:


* Fix the mod menu (Mods in there don't show up)

* Make a 'Delete World' option

* Add in a /kill command

* And thats it.

* OH! ALSO! Fix the anvil crafting recipe (Iron Ingot x4, Unknown x3)
Edited on 25 October 2015 - 10:07 PM
Antelux #237
Posted 26 October 2015 - 12:05 AM
I've already fixed the recipe and added the command to the version I'm working on. As far as adding a mod list and option to delete worlds go, I had been taking steps to implement such in the game. Thanks for reminding me though.
CaosTECH #238
Posted 26 October 2015 - 12:48 AM
Welcome :D/>
CaosTECH #239
Posted 26 October 2015 - 02:15 AM
Omg, im sorry that it seems as if im absolutely horrible at programming but im not as well used-to the advanced type of programming that you use, I tried in the "Ask A Pro" section but they, didn't help much. I tried the code in many different ways but still can't get the code to create the newSolidObjects, the code that you wrote. I, and they, don't understand how it works but appearantly you do because you rewrote it. But here is the current code, Whenever I run it… well.. you will see what I mean. I ask it to draw 3 objects, but it draws 4.
Code:
local ScreenWidth, ScreenHeight = term.getSize()
local char = ">"
local playerX = math.floor(ScreenWidth / 2)
local playerY = math.floor(ScreenHeight / 2)
local offsetX, offsetY = 0, 0
local map = {}
function drawCharacter()
  term.setCursorPos(playerX - offsetX, playerY - offsetY)
  write(char)
end
function newObject(x, y, obj)
  map[y] = map[y] or {}; map[y][x] = {obj}
end
function newSolidObject(x, y, obj)
map[ x ] = map[ x ] or {}; map[ x ][ y ] = {obj, true}
map[ y ] = map[ y ] or {}; map[ y ][ x ] = {obj, true}
end
function checkForCollision(x, y)
  return map[y] and map[y][x] and map[y][x][2]
end
function drawMap()
  term.clear()
  for y = 1, ScreenHeight do
		if map[y + offsetY] then
				  for x = 1, ScreenWidth do
						if map[y + offsetY][x + offsetX] then
								  term.setCursorPos(x, y)
								  term.write(map[y + offsetY][x + offsetX][1])
						end
				  end
		end
  end
  drawCharacter()
end
newSolidObject(4,5,"x")
newSolidObject(6,6,"x")
newSolidObject(5,5,"x")

while true do
  drawMap()
  local e, key = os.pullEvent("key")
  if (key == 17 or key == 200) then
		if not checkForCollision(playerX, playerY - 1) then
				  offsetY = offsetY - 1; playerY = playerY - 1
		end; char = "^"
  elseif (key == 31 or key == 208) then
		if not checkForCollision(playerX, playerY + 1) then
				  offsetY = offsetY + 1; playerY = playerY + 1
		end; char = "v"
  elseif (key == 203 or key == 30) then
		if not checkForCollision(playerX - 1, playerY) then
				  offsetX = offsetX - 1; playerX = playerX - 1
		end; char = "<"
  elseif (key == 205 or key == 32) then
		if not checkForCollision(playerX + 1, playerY) then
				  offsetX = offsetX + 1; playerX = playerX + 1
		end; char = ">"
  elseif key == 15 then
		break
  end
end
Edited on 26 October 2015 - 01:17 AM
Antelux #240
Posted 26 October 2015 - 02:27 AM
In the code, you've added an extra line to the function newObject():

map[ x ] = map[ x ] or {}; map[ x ][ y ] = {obj, true}

That reverses the coordinates of the object, making twice the amount of objects that there should be.
If you remove that, you should be fine.

P.S. If you need any more help with this kinda thing, PM me about it so we don't flood this section with things that aren't on topic.
Edited on 26 October 2015 - 01:29 AM
CaosTECH #241
Posted 26 October 2015 - 03:24 AM
Im sorry, the mistake was very clear yet I look for the most complex thing possible. I will try not to do this in the future. And yeah anything else I need help with I will P.M. you
Tag365 #242
Posted 28 October 2015 - 04:33 PM
Finally added chunks to your game huh? I had that in my game since day one. Looks like I might have some work to do on my game.
Antelux #243
Posted 28 October 2015 - 08:22 PM
Yep. I've never actually looked into adding chunks until somewhat recently. But yes, it does appear you have some (friendly) competition. :P/>
LDDestroier #244
Posted 28 October 2015 - 08:55 PM
I finally learned all the keybindings and the game is cooooooooool. I saw multiplayer, and immediately thought of HTTP multiplayer sessions.
Suggestions!
1. HTTP multiplayer servers (hosted on Windows/Linux/Mac, not CC (or CC…))
2. Give yourself a pat on the back for making a badass game
3. GOTO 2
Antelux #245
Posted 28 October 2015 - 11:23 PM
Thanks. I had been thinking about the HTTP server thing, but it hasn't occured to me to use something other than CC to host it. I think I'll go with that instead (I'll use Love2D or something).
Either way, the alpha version I'm working on of the new release should be right around the corner. Just need to make it automatically unload chunks when needed.
Hope you guys will like messing around with it.

Also, on a side note, the Player API has changed drastically.
Now, you call the function Player.get(playerName) and it returns the player data itself.
This drastically reduces the amount of functions needed, and therefore, saves space and memory.
So instead of doing

Player.coordinates("Player", 19, 68)
You can just do

local player = Player.player("Player")
player.x = 19; player.y = 68
This should also be faster than using the functions.

As of now, the Player API only has five functions, including the player() one.
Once getting a player, it also has functions you can call with it. Here's an example of one:

local player = Player.player("Player")
if player:isTakingDamage() then
	  player:giveItem(1, 4)
end
These kind of functions are mostly inventory related ones.
I mean, you could just do

local player = Player.player("Player")
player.inventory[#player.inventory + 1] = {1, 4}
But there are some other things, such as updating a player's inventory, that the functions can do, which is why it's easier to use them.
Edited on 28 October 2015 - 10:24 PM
CaosTECH #246
Posted 29 October 2015 - 01:37 AM
Can't wait, Btw my mod is almost done, The only thing is I don't really think Im going to release it until either the projectiles have been fixed or armor has been added, because I have some cool ideas.
Antelux #247
Posted 01 November 2015 - 03:48 AM
Speaking of modding, it has changed a bit, as you probably know.
Mods now have to return a table in order to be used. Here's some code to show how exactly this'll work.


return {
	-- Self explanitory
	Name = "Test Mod",
	Author = "Tutorial",
	Info = "This is a test mod.",
	Link = "www.YourLinkHere.com",
	Assets = {},

	-- Called every 1/20 of a second, or every tick.
	Tick = function() end,

	-- To do. These functions are to return true if the event should be carried out.
	-- If false is returned, then the event doesnt occur.

	-- Called when someone is attacking someone
	attackHook = function(attacker, victim) end,

	-- Called when someone has killed someone
	deathHook = function(attacker, victim) end,

	-- Called when a block is being damaged, not sure about this one
	damagingBlock = function(player, spotData, dim, x, y) end,

	-- Called when a block is destroyed
	destroyBlock = function(player, spotData, dim, x, y) end,

	-- Called when a player uses an item
	useItem = function(player, itemID, itemDamage, spotData, x, y) end,

	-- Called when a message is said in chat
	chatHook = function(player, message) end,

	-- Called when a player exits a single or multiplayer game
	leaveGame = function() end
}

Of course, mods don't need every function shown in the code. It only needs the functions necessary for the mod itself. You can run any other functions needed for loading the mod before returning the table, such as adding in recipes and such.

Also, when I tried the game in MC, it seemed to run rather smoothly. Though, there is some very tiny, but noticeable lag when the game generates chunks.

The release of the version I'm working on will probably come within next week, if not tomorrow. It'll be put on a separate branch on Github, and the installer will be modified so you can give it a parameter in order to download this version.
Edited on 01 November 2015 - 02:52 AM
Antelux #248
Posted 01 November 2015 - 03:40 PM
I've added shader functionality to the buffer. I know you can't do much with the colors in ComputerCraft in terms of shaders, but I thought, why not. Could make for some interesting results.
Here is some example code for how you can create shaders.

-- Confetti
Buffer.shader(function(pixel, x, y)
      return pixel[1], math.random(50) == 1 and 2 ^ math.random(0, 15) or pixel[2], pixel[3]
end)

-- Reverse
local reverse = {[1] = 32768, [2] = 16384, [4] = 8192, [8] = 4096, [16] = 2048, [32] = 1024, [64] = 512, [128] = 256, [256] = 128, [512] = 64, [1024] = 32, [2048] = 16, [4096] = 8, [8192] = 4, [16384] = 2, [32768] = 1}
Buffer.shader(function(pixel, x, y)
      return reverse[ pixel[1] ], reverse[ pixel[2] ], pixel[3]
end)

-- Grayscale
local grayscale = {[4096] = 32768, [16384] = 32768, [1024] = 32768, [2048] = 128, [8192] = 128, [4] = 128, [2] = 256, [64] = 256, [512] = 256, [16] = 1, [32] = 1, [8] = 1}
Buffer.shader(function(pixel, x, y)
      return grayscale[ pixel[1] ] or pixel[1], grayscale[ pixel[2] ] or pixel[2], pixel[3]
end)

As of now, you only need to call this function once, and you can do all your drawing afterward. Only one shader can be active at a time.
I may change some aspects of this shader system in the future. Though, I can technically do something like this:


Buffer.shader(function(pixel, x, y)
      return Level.getTexture(0, x - ox + player.x, y - oy + player.y)
end)

And it should draw the world faster than it normally would.
If anyone has any thoughts about how shaders should be or if they should even be available for use at all, do let me know.
Antelux #249
Posted 01 November 2015 - 10:02 PM
So, I put the Alpha version on Github. It can be found here.

In order to install it in game, you'll need to run the following command in the shell: pastebin run FgAggvy1 <directory> alpha
Keep in mind you'll need about 90kb of free space on your computer when installing it.

Though, I would appreciate it if people went ahead and tried out the new version, as well as give back constructive criticism and/or errors with the game.

When launching the file, you can supply it with the parameters [name] and . When giving it a color, use a color name, such as cyan, instead of colors.cyan.

Here are the current controls:
WASD = Movement Controls.
Left Shift = Lock Player Direction.
R = Unloads all chunks from memory. Doesn't save them, however.
E = Exits the game.

Left Click = Place down a block / tile.
Right Click = Removes a block.
Scroll Wheel = Change what block / tile you have selected.
Edited on 01 November 2015 - 09:14 PM
CaosTECH #250
Posted 01 November 2015 - 11:35 PM
FgAggvy1:31: attempt to index ? (a nil value)

Heres some bug reports:
it just dont work :)/>
Edited on 01 November 2015 - 10:36 PM
Antelux #251
Posted 01 November 2015 - 11:41 PM
CC version? Github allowed? Emulator? etc?
CaosTECH #252
Posted 01 November 2015 - 11:51 PM
Just saw that you updated it the page. Im using 1.7.4, github is allowed I installed miniaturecraft before on there, im using CCEmuRedux Launcher. If it I can't fix it im probably just gonna download it off of github and put it into the folder
Edited on 01 November 2015 - 10:52 PM
Antelux #253
Posted 02 November 2015 - 12:00 AM
I fixed the installer, just tried it in game. Should work now.
CaosTECH #254
Posted 02 November 2015 - 12:10 AM
K, tested it out, pretty nice with the new chunk system. I understood there is nothing but your character moving around and stuff. One question, when you start off why is your character holding stone? The only bug is the fact that there is no bugs.

Also, there is no start screen and theres alot of files that arent used. Your character just moves around alot. Nothing else. Nothing more.
Edited on 01 November 2015 - 11:12 PM
Antelux #255
Posted 02 November 2015 - 12:20 AM
The player isn't actually holding anything. The stone is just showing what you have currently selected in terms of being in "creative" mode. The alpha version mostly shows off the chunk system, unless you plan to poke around the files and mod a bit. The next update is going to include structures in the world, such as trees or villages. After that point, I'll probably put the whole survival thing back in the game. Menus may not be in for a bit, as I want to focus more on the server as well.
CaosTECH #256
Posted 02 November 2015 - 03:35 AM
K, sounds nice. Im going to look at some of the files in the old Minicraft and the new Minicraft and compare most likely, And I will probably try making either a mod or something that includes some or alot of stuff.
Creator #257
Posted 02 November 2015 - 08:41 AM
1. My scroll wheel does not work, how do I switch blocks?

2. How do I save?

3. Multiplayer?

4. Amazing game!
CaosTECH #258
Posted 02 November 2015 - 05:02 PM
1. My scroll wheel does not work, how do I switch blocks?

2. How do I save?

3. Multiplayer?

4. Amazing game!


There isn't saving in the alpha, there is no multiplayer yet. And yes it is amazing. And about your scroll wheel, look around in the files and change them around a bit for your liking
Edited on 02 November 2015 - 04:02 PM
Creator #259
Posted 02 November 2015 - 05:21 PM
And mods? There was a special menu.
Antelux #260
Posted 02 November 2015 - 09:29 PM
What special menu are you referring to?
Edited on 02 November 2015 - 08:30 PM
Creator #261
Posted 02 November 2015 - 09:50 PM
At a time, there was a menu with new world, mods and similar stuff. Now I get straight to the game and that's it.
Antelux #262
Posted 02 November 2015 - 09:52 PM
Oh. I haven't re-added menus and such to the game yet. You can expect them to come in later updates, though.
Creator #263
Posted 02 November 2015 - 10:13 PM
Ok, thanks!
CaosTECH #264
Posted 03 November 2015 - 02:02 AM
Detective_Smith, I have a suggestion for your game. I was actually thinking of adding this into my game, its to stop your character from going like 80 mph xD. Add a sleep(0.1) for the control that way it has to wait before the character can move again. Or you can also make a sprint button that does something like sleep(0.06)
Antelux #265
Posted 03 November 2015 - 02:50 AM
I actually implemented that originally for the alpha, but decided to wait until I added survival back in, since I'd rather not be slowed down while trying to explore the world. Also, sleep probably isn't too ideal for that kinda thing.
Creator #266
Posted 03 November 2015 - 05:29 AM
Please add the ability to change block by using arrows. Not everyone has a scrollwheel, or a working one.
Antelux #267
Posted 03 November 2015 - 03:57 PM
I'll add that in the next release.
Creator #268
Posted 03 November 2015 - 04:06 PM
Thanks.
Tag365 #269
Posted 03 November 2015 - 04:25 PM
It appears that player entities can move twice as fast as expected if the player holds down two movement buttons at the same time. If the player holds down just one movement button they move one block per two ticks, but if the player holds two at once, the player can move two blocks per tick.
Antelux #270
Posted 03 November 2015 - 05:03 PM
Yeah, that's something I need to fix. I'll probably do it now.
Though, it other news, I thought I'd try to make the game smaller, and I was looking through the files to see which one was the biggest.
Unsurprisingly, it was the Assets file.
After going through it and making it more minimal, I've managed to cut the game by ~14kb; The game is now 77.6 kb.
Now, it'll probably get larger since there's a lot more features I want to add to the game. But, it looks like the game is going to remain relatively small.
Edited on 03 November 2015 - 04:06 PM
Antelux #271
Posted 07 November 2015 - 03:53 AM
Made an early version of a program which allows you to create "structures" for the game.
Essentially, it's used for object importation and placing, such as villages or dungeons.

I have a working file format so far. Though, it's nothing really special. But, what is special is that you guys can expect some cool things in the game.
Who knows. If you explore long enough, maybe you'll stumble upon something rare.
CaosTECH #272
Posted 07 November 2015 - 02:12 PM
Have you thought about adding NPC's? or fixing the mobs currently in the game?
Antelux #273
Posted 07 November 2015 - 02:17 PM
Of course. I haven't fixed the mobs yet because I'm not sure if I want to reform the system I use for them or not. Though, mobs, and maybe NPCs, need a world full of variety to roam around first.
Antelux #274
Posted 08 November 2015 - 02:29 AM
I've updated the game.

Current Changes:

– You can use the arrow keys (up &amp; down) to change the asset you have selected.
– Key system changed, much more responsive now.
– Going diagonally no longer makes you go two blocks in one tick.
– Added support for .structure files, and they're placed in the world.

Known Bugs:

– FPS counter doesn't go off when you press F3 again.
– When pressing F1, the screen no longer draws as fast as it should.
– In game structures may be put too close to other ones.
CaosTECH #275
Posted 08 November 2015 - 03:13 PM
Whens this getting released?
Antelux #276
Posted 08 November 2015 - 03:17 PM
I've already updated the game on Github to include those features.
CaosTECH #277
Posted 08 November 2015 - 03:31 PM
Made an early version of a program which allows you to create "structures" for the game.
Essentially, it's used for object importation and placing, such as villages or dungeons.

I have a working file format so far. Though, it's nothing really special. But, what is special is that you guys can expect some cool things in the game.
Who knows. If you explore long enough, maybe you'll stumble upon something rare.

When is this being released though?
Edited on 08 November 2015 - 02:32 PM
CaosTECH #278
Posted 08 November 2015 - 03:36 PM
Oh wait… just tested it… uh… Whenever the game is ran it crashess saying mc:121: Level:319: attempt to concatenate nil and string
and whenever I try editing a structure it says windows:94: Arguments must be the same length
Antelux #279
Posted 08 November 2015 - 04:05 PM
What version are you using, and are you in an emulator? I just downloaded and ran the game on a fresh comp using CC 1.74 without any issues.
Also, .structure files aren't meant to be edited with the default editor. They're saved in binary, and compressed using functions from Bomb Bloke's Package.
You'd have to use the structure program I've created. As far as releasing it goes, I plan to do so once it's a bit more stable, and better equipped.
Edited on 08 November 2015 - 03:06 PM
CaosTECH #280
Posted 08 November 2015 - 08:49 PM
The Alpha, on CCEmuRedux
Antelux #281
Posted 08 November 2015 - 09:42 PM
Well, I wouldn't know what the problem is then, since you're using an emulator. You might wanna use it in game.
CaosTECH #282
Posted 08 November 2015 - 10:26 PM
Ok, well, im gonna go install minecraft :)/>. Sorry it took so long, I was recking my dad in COD
Creator #283
Posted 08 November 2015 - 10:34 PM
Ok, well, im gonna go install minecraft :)/>. Sorry it took so long, I was recking my dad in COD

You play video games with your dad? I wish mine would too.
Bomb Bloke #284
Posted 09 November 2015 - 12:25 AM
Seems the game sometimes fails to pick up on key_up events, and so your character just keeps running in whatever direction until you tap that button again. Haven't really messed with them much myself, so I'm not sure whether ComputerCraft is failing to provide them to you, or if you're somehow failing to handle them when they're pulled.
Antelux #285
Posted 09 November 2015 - 01:20 AM
I've noticed that as well, and I've changed up the Keyboard API to be faster when dealing with the events, as there's the possibility you've mentioned that it may be the coding.
I haven't tried it in game yet, but it should theoretically prevent that from happening so often.
CaosTECH #286
Posted 09 November 2015 - 01:32 AM
I have built a magnificent house, with lots of stuff, but then I tried opening the door with E, it closed the game… the game doesn't save… See where i'm getting at?
Antelux #287
Posted 09 November 2015 - 01:37 AM
Menus and world saving will be the next thing to come in the next update, and probably more setups for multiplayer.

P.S. If you guys have ideas for in game structures, feel free to send me a pic of how you imagine it to be in game. I might put it in the game. :)/>
Edited on 09 November 2015 - 12:38 AM
CaosTECH #288
Posted 06 December 2015 - 06:05 PM
How about villages? And maybe there could be something like the blacksmith where theres a chest with loot in it
Antelux #289
Posted 07 December 2015 - 08:46 PM
Yeah, I was thinking of doing something like that. I haven't been working on the game as much as I'd like to as of recently, mostly due to school, but also because there's a lot of other mini projects I like to experiment with on my free time, and one of them has really got my attention. Most of them don't make it to the forums, really. I usually work on them to better my understanding of certain topics or of Lua.
LDDestroier #290
Posted 14 December 2015 - 12:30 PM
Ok, well, im gonna go install minecraft :)/>. Sorry it took so long, I was recking my dad in COD

You play video games with your dad? I wish mine would too.

Me too. The only game I ever see my dad playing is Moria on his raspberry pi that he SSH's into.
chexo3 #291
Posted 16 December 2015 - 03:07 PM
How do we use this? Bit confused as to what directory and alpha mean.
Antelux #292
Posted 16 December 2015 - 10:17 PM
Anything enclosed in <> means it's optional. Giving the argument <directory> will download all the game's files into a folder of your choosing. Giving the argument <alpha> will decide whether or not you want to download the alpha, aka the latest version of the game, or not.


pastebin run FgAggvy1 mc true

Running that on a computer console will download the contents of the alpha version of the game into a folder called "mc."
The alpha parameter can be anything, really, as long as it's defined.

Similarly, running this code would download the contents of the game into a folder named "fun." It would be the regular version of the game, instead of the alpha, however.


pastebin run FgAggvy1 fun

If you decide to run it without a <directory> and <alpha> argument, it will instead launch a GUI to help you choose where you'd like to install the game.

Hopefully this helps to clear things up.
Edited on 16 December 2015 - 09:17 PM
ExplosiveFerrets #293
Posted 05 February 2016 - 06:34 PM
Is this project dead?
Antelux #294
Posted 05 February 2016 - 08:29 PM
No. I just happen to be taking a break from this.
I'm currently working on Luva, a programming language of mine.
I'd like to be able to work on it enough so that in the future, I can use it to bring MiniatureCraft over to CraftOS 2.0.
Edited on 05 February 2016 - 07:29 PM
ExplosiveFerrets #295
Posted 05 February 2016 - 08:48 PM
Ah, okay.
kpv8186 #296
Posted 15 February 2016 - 05:15 PM
Very good game but it needs something…
Edited on 16 February 2016 - 07:02 AM
Antelux #297
Posted 16 February 2016 - 02:56 PM
Anything specific you have in mind?
LDDestroier #298
Posted 17 February 2016 - 01:14 AM
Anything specific you have in mind?

I think it's very lacking in stuff that it needs. More specifically, things that are conducive to being good elements in a medium of things.

But more to the point, it definitely needs a something to do a thing that has a function.
Antelux #299
Posted 17 February 2016 - 01:45 AM
That's sort of a bit vague.
Silver07 #300
Posted 17 February 2016 - 08:10 PM
There should seriously be a 3D Version of this made :P/>
Creator #301
Posted 17 February 2016 - 09:07 PM
There should seriously be a 3D Version of this made :P/>

Much lag, little fun.
Edited on 17 February 2016 - 08:08 PM
Antelux #302
Posted 17 February 2016 - 09:08 PM
Much lag, little fun

Pretty much. Though, CC 2.0 is right around the corner. Might be possible there.
Though, I plan to make a MiniatureCraft with better graphics for it before anything else.
3d6 #303
Posted 17 February 2016 - 11:44 PM
There should seriously be a 3D Version of this made :P/>
That's already been done! It's called Minecraft, a lot of people around here play it
TheRockettek #304
Posted 22 April 2016 - 07:05 PM
\\ Just your typical error message.
Error log generated on day 1 at 12:41 PM.

Looks like the error occured on line 321.
Here's what went wrong:

'for' limit must be a number

You should probably report this error.
Edited on 22 April 2016 - 05:07 PM
Antelux #305
Posted 22 April 2016 - 09:14 PM
Perhaps some more detail would be nice, such as CC version, was an emulator being used, and what you were doing/trying to do before the error occurred.
LDDestroier #306
Posted 22 April 2016 - 11:28 PM
Hm, would it be appropriate to call MiniatureCraft a roguelike?
Edited on 22 April 2016 - 09:28 PM
Antelux #307
Posted 23 April 2016 - 02:25 AM
Well, I can see how some elements of it can be roguelike. Though, if we take the definition found on Wikipedia:
Wikipedia said:
Roguelike is a subgenre of role-playing video games characterized by a dungeon crawl through procedurally generated game levels, turn-based gameplay, tile-based graphics, and permanent death of the player-character.

Some of these aspects can be applied to MiniatureCraft, as it is procedurally generated, has tile-based graphics, and is planned to be more dungeon crawl-y. Though, it isn't really turn-based, nor is there (currently) perma-death. So, if we're very strict definition wise, I'd have to go with it probably isn't the best label for the game. Though, if we're not so strict, we still can't forget that (as Wikipedia continues about this specifically) many roguelikes are heavily influenced by fantasy elements, such as magic.

As for what a more appropriate label would be, I'd have to stick with the term sandbox.
Edited on 23 April 2016 - 12:27 AM
Bomb Bloke #308
Posted 24 April 2016 - 02:58 PM
The perma-death is a rather important factor - it's not so much that dying means you start over (though that's important), it's that it's typically tied with a difficulty curve which nearly ensures the casual player will die, and often early during a given playthrough, at that. To win, you play over and over again (dying many times) until you've got such a detailed understanding of the underlying game mechanics that you could write a book about them.

Rogue-likes want you dead, and your reward for figuring out how to survive what they've thrown at you thus far is nearly always discovering a wonderful new way to die. They're not like eg Diablo where it's just a matter of keeping your hitpoint total up while wading through enemies, or Minecraft where the threat of dying only ever comes up if you go out of your way to look for it.
Edited on 28 April 2016 - 12:21 AM
asdfghjkl #309
Posted 27 April 2016 - 10:59 PM
I'm running into a problem that's probably incredibly obvious to people more familiar with LUA, and I apologize for that. When I try to do "pastebin run FgAggvy1 mini", I get this. https://gyazo.com/791bd61b1889b0379b083a377d9824db
The code it's referencing is assert(loadstring(http.get("http://pastebin.com/raw.php?i=4nRg9CHU").readAll()))() I'm not familiar enough with any programming language to be sure, but is it because its trying to call something that isn't defined? I'm running Minecraft 1.7.10, on CC 1.74 (And tested on 1.75 to be sure). I checked, and HTTP is also enabled in the config. Is there a dependency I'm derping hard on? Again, I am sorry for what I am sure is a pretty stupid mistake on my part! But regardless, thanks!
KingofGamesYami #310
Posted 27 April 2016 - 11:54 PM
Change the URL to http://pastebin.com/raw/4nRg9CHU . Sometimes it doesn't redirect properly for whatever reason.
Edited on 27 April 2016 - 10:55 PM
LDDestroier #311
Posted 28 April 2016 - 12:11 AM
Change the URL to http://pastebin.com/raw/4nRg9CHU. Sometimes it doesn't redirect properly for whatever reason.

You included the period in the URL.
KingofGamesYami #312
Posted 28 April 2016 - 12:55 AM
Actually, I didn't. The forum software did… (I'll fix it anyway)
asdfghjkl #313
Posted 28 April 2016 - 03:54 PM
Maybe I'm doing it wrong, but I changed the line to look like https://gyazo.com/ff6179ed0a7897045db131ca76d77ce2 . The readAll is still there, I didnt touch it, it's just cut off in the picture. When I save it and try to run it, I still get attempt to call nil on line 17. I also tried just doing pastebin get 4nRg9CHU, as well as variations on the pastebin link. If any of you have an idea as to what it would be, that would be awesome. Thanks!
Antelux #314
Posted 29 April 2016 - 04:08 PM
Is Github blocked in your config?

EDIT: I'm just gonna change up the installer a bit. Unfortunately I never put much work into it.

EDIT #2: Tried it in MC 1.8 with CC 1.76, installer worked fine for me.
Edited on 29 April 2016 - 05:33 PM
asdfghjkl #315
Posted 30 April 2016 - 03:30 AM
This is interesting. Whatever you changed got the installer to download and run, but now when I run the mc.lua file, I get attempt to call nil on line 39, which is "dofile(APIFolder.. "\Buffer")". Could it be an incompatibility from me using an outdated version? Our server is on 1.7.10, CC 1.74, with a handful of peripherals mods. Anyway, don't worry about it too much. Its probably something on my end. Thanks anyway, though. :)/>
Antelux #316
Posted 30 April 2016 - 03:38 AM
I don't think it should be giving such an error. Are you running the game on a clean comp from the shell?
asdfghjkl #317
Posted 30 April 2016 - 03:48 AM
Its from the shell, but not entirely clean. Give me a minute to log back in, and I'll try it with a fresh one.
Antelux #318
Posted 30 April 2016 - 03:53 AM
Alright. It doesn't necessarily have to be entirely clean, MiniatureCraft just needs access to the shell API. That's what I'm guessing is what's causing the error.
If that doesn't work, try going to line 35 and changing MainFolder to the name of the folder the game is in. If it's in root, just put it as an empty string.

EDIT: Just realized you said it attempted to call nil as the error. That's strange, as I don't think dofile is a newly added thing.
Edited on 30 April 2016 - 02:00 AM
asdfghjkl #319
Posted 30 April 2016 - 04:00 AM
Hm. I made a new computer, and the only thing on it was the installer, and I'm still getting the attempt to call nil on line 39. Now, the server owner had edited either the default startup or something in the default bios so that it requires you to enter a label the first time you boot the computer. I'm honestly not sure how that was done, but maybe that's what's causing the problem?
Antelux #320
Posted 30 April 2016 - 04:02 AM
Well, if it's modified as you say, it may also be modified so that the function dofile isn't available. Try going into the default lua console, and see what you get when typing in and entering "dofile"

If you also want to be safe and see whether or not it's the server, it should work if you try on singleplayer, given you haven't modified the startup either for computers.
Edited on 30 April 2016 - 02:04 AM
asdfghjkl #321
Posted 30 April 2016 - 04:04 AM
"nil"

https://gyazo.com/6b216cf03df71b67a50930f7a1f00328

I
t must have somehow been removed then? Idk. Ill try redownloading the mod and trying it in single player.

Edit: We're also running the CCEdu+normal CC version as well. Would the packaged version have removed the dofile function?
Edited on 30 April 2016 - 02:07 AM
Antelux #322
Posted 30 April 2016 - 04:06 AM
I don't think you have to redownload the mod. But trying it in singleplayer will help as to telling whether or not the function was removed by the server owner. If it was, I suggest asking them to put it back.
asdfghjkl #323
Posted 30 April 2016 - 04:13 AM
Tried it in singleplayer, still got the same problem. I'll try the ComputerCraft-only version of the mod. I wouldn't be surprised if the version that includes EDU was the problem. Load times are a bit long, sorry it's taking so long to get back to you in between these.
Antelux #324
Posted 30 April 2016 - 04:15 AM
It's no problem. Happy to help out. But lets bring it to PMs since this looks like this conversation will be continuing for a bit.
Edited on 30 April 2016 - 02:15 AM
asdfghjkl #325
Posted 30 April 2016 - 04:19 AM
So with clean versions of both the normal CC and CC+CCEDU, it still causes the attempt to call nil error. It might be a mod conflict, then? I could try removing all other computer-related mods and then giving it a shot.

Edit: I tried removing all the CC related add-ons, and I'm still getting the error. I'm curious to know what caused it, but I can't think of much else that would cause this kind of issue. Don't stress too much over it if you don't have any ideas, you've done a really good job of helping out. :)/>
Edited on 30 April 2016 - 02:37 AM
vargaszm #326
Posted 18 May 2016 - 01:35 AM
i can't break blocks
Antelux #327
Posted 18 May 2016 - 10:00 PM
Perhaps being a bit more descriptive would be helpful.

For example:
Alpha?
CC Version?
Emu?
What exactly you're doing to try to break blocks?
XGN ArchTyler #328
Posted 22 May 2016 - 02:44 AM
I really support your idea of this game, can't wait to see what future updates come out! I played it myself and found a few bugs, or things that should be tweaked.
1. The player speed is too much, turn it down a bit :P/>
2. I can't interact with things, I press 'E' and it closes the game. Older versions it doesn't do this, is it crashing or something?
3. Too much awesomeness

Anyways, keep up the good work!
Antelux #329
Posted 24 May 2016 - 11:24 PM
1. The player speed is too much, turn it down a bit :P/>

I haven't found a good way to make it so that you don't move annoyingly slow, or in a way that feels right.
Still experimenting though.

2. I can't interact with things, I press 'E' and it closes the game. Older versions it doesn't do this, is it crashing or something?
You've most likely downloaded the Alpha. It's intended to do that in that version.
If you want to download the version of the game that's better suited for actual gameplay, just run the installer without any extra parameters.

3. Too much awesomeness . . . Anyways, keep up the good work!
Thanks! Hope you'll like the upcoming multiplayer update. :)/>
XGN ArchTyler #330
Posted 25 May 2016 - 12:29 AM
Thanks! Hope you'll like the upcoming multiplayer update. :)/>

ooh that sounds nice, can't wait! This is by far the best game I have ever seen for CC, besides Helios.
Antelux #331
Posted 01 June 2016 - 09:16 PM
Alright, I've been making some good progress over these past few days.

I'm very close to making it so that multiple players can join and move around on a server. I plan to post a picture when I do so :)/>
The buffer has also been changed so that you can now run MiniatureCraft with multishell. No more grabbing native term.
I'm made some changes to Package as well, which will reduce file saves even further. Managed to save 25 chunks in about 1kb.
With that in mind, if you had a completely clean computer, you could save around 25000 chunks at most, which should be plenty.
All in all, things seem promising so far.
Edited on 01 June 2016 - 07:18 PM
Antelux #332
Posted 01 June 2016 - 11:37 PM


Finally got it to work. Now I just need to polish it.
Bomb Bloke #333
Posted 02 June 2016 - 03:05 AM
The buffer has also been changed so that you can now run MiniatureCraft with multishell. No more grabbing native term.

This may already be what you had in mind, but if you're now using the window object multishell assigns your tab, you can use it to help reduce flicker reduction by playing with its setVisible() function. Doesn't work so well prior to CC 1.74, but as of that build, windows are decently fast buffers.
Antelux #334
Posted 02 June 2016 - 09:18 PM
When I was editing my buffer to allow it to be used with multishell, I remembered you saying that in an earlier post, so it has already been implemented.
Thanks for the previous tip and current reminder, though. :)/>
XGN ArchTyler #335
Posted 15 June 2016 - 09:14 PM
A big congrats to Detective_Smith for hosting one of the biggest games on CC. You have the hottest game on here (Based on replies) and the second most viewed game (first is a game-library, not particularly an actual game itself) You have come a long way from the first release of this game to now and you are still working hard on fixing up the game and making it amazing.

I am rating this game with a 9/10 because some features are missing it is still one of the best.
Antelux #336
Posted 26 June 2016 - 05:22 AM
- snip -

Thanks! The game really has come a long way, almost two years have passed by. How time flies.
I've made some really, really big changes to world generation: Biomes! Plenty of them, and mostly complete.
They use a temperature and rainfall map, really simple stuff that just involves making more noise.
I'll make a picture or gif of it later when I feel like they're fully polished.
Another little thing many will notice is that trees and other structures will no longer spawn inside of each other. Don't know about you guys, but it would always bother me. =P
Chunks are also now automatically loaded and unloaded. Sometimes a chunk might be missed, but it really surprises me how simple it was to implement the basics of it. Don't know why I didn't do it sooner.
Lastly, I've added the ability for assets to have sub IDs. This is useful for blocks that you feel are the same but look slightly different. For example, all the different colored leaves I've added now occupy the IDs 11.0 - 11.5, with each block being in the tenths place (11.1, 11.2..)

Overall, big changes are happening, and as such, this'll be one of the biggest updates. You guys can have fun playing multiplayer and exploring a completely new world.
XGN ArchTyler #337
Posted 26 June 2016 - 06:30 AM

Sounds great! I like the "sub ID" thing, just like actual minecraft with the block data thing. Anyways, wow I didn't realize that it has been two years now. Time does fly.
Antelux #338
Posted 26 June 2016 - 04:24 PM
Alright, I have some pictures of the biomes. Do keep in mind that I most likely will change the name of them to better suit their appearance.

In this, the yellow areas are deserts with cacti, and the green (not lime area in the middle) area is a tropical grass land, which has trees with lime colored leaves. It might be a bit hard to tell, but there's also tall grass there, disguised as the percent sign.
Spoiler

The lighter, or lime grass area is a taiga, filled with the primary colored flowers, tall trees, and random rocks.
Spoiler

Here, we see a huge tundra biome (where all the snow is at). Violets, or the purple flowers that are kind of hard to see, are found only here, much like the usual three red, blue, and yellow flowers are only found in the taiga. We also see trees with grayish leaves and a new variant of wood called Angel Wood. We can also see at the middle left that huge hard rock formations occur in this biome as well, and lakes of water will have huge sections of ice covering them.
Spoiler

In this, I'm mostly showing off the desert biome in the middle. We can see that sandstone also forms here in large amounts.
Spoiler

Here, I show the temperate deciduous forest, which is sort of spread throughout the screen, pointed out by the different colored trees that can be found there, which are yellow, orange, and red. We can also see at the bottom left a bit of the savanna biome, which has some trees and the biome-native Lilies, or pink flowers.
Spoiler

I'm not trying to point out any specific biome in this picture, I just thought the landscape looked nice.
Spoiler

This is only five of the eleven biomes in game, but I decided to showcase them because they're the most noticeable. Tell me what you guys think, such as suggestions, criticism, comments, etc, and perhaps tell me your favorite biome so far. Mine is the temperate deciduous forest :P/>
Edited on 27 June 2016 - 02:58 AM
Bomb Bloke #339
Posted 27 June 2016 - 01:41 AM
Here, I show the temperature deciduous forest, which is sort of spread throughout the screen, pointed out by the different colored trees that can be found there, which are yellow, orange, and red.

Honestly, their temperature appears to be "on fire".
Antelux #340
Posted 27 June 2016 - 04:57 AM
Honestly, their temperature appears to be "on fire".

Oh wow, I really made that mistake twice! Time to fix that up to "temperate."
Antelux #341
Posted 27 June 2016 - 11:12 PM
Did a little work on the polar biome, the coldest biome there is.



Polar biomes spawn in winter biomes like this one, generally in the center. This just happens to be a large winter biome which is why the polar biome is so big. They're distinguished by the frozen trees and cyan roses.
XGN ArchTyler #342
Posted 29 June 2016 - 05:47 AM
Did a little work on the polar biome, the coldest biome there is.



Polar biomes spawn in winter biomes like this one, generally in the center. This just happens to be a large winter biome which is why the polar biome is so big. They're distinguished by the frozen trees and cyan roses.

Can I ask how you are getting these images? Like what your "work" environment is and how you get these vertically large pics?
Antelux #343
Posted 29 June 2016 - 03:56 PM
Can I ask how you are getting these images? Like what your "work" environment is and how you get these vertically large pics?

The images themselves are actually 80x80 pixels, but since comutercraft pixels are rectangular, the image will appear to be so as well.
As far as where I'm getting them from, I just use CC-Lite and change the resolution of the computer and such.
XGN ArchTyler #344
Posted 01 July 2016 - 03:47 AM
That would make sense. Anyways, thanks!
Meit #345
Posted 25 July 2016 - 11:37 PM
Is the game being updated?.. and is it still alive?
Seems good, Trying it out instantly btw the multiplayer is cross-servers or its only cross-players (players in server)?
Antelux #346
Posted 26 July 2016 - 12:36 AM
Yeah, I'm still doing stuff with it. It just has to share time with two other projects I happen to be working on, they being non-ComputerCraft related stuff.
And, it is currently only "cross-players."
Meit #347
Posted 26 July 2016 - 06:24 PM
I cant open it, It just says some error in Levels around like 300-360 IdkI forgot but it was a error in for loop I didnt look at it, I am running 1.8.9 latest CC
Antelux #348
Posted 26 July 2016 - 06:37 PM
I can't do much about it without the error message.
mgthomas99 #349
Posted 04 August 2016 - 03:32 PM
What would be funny is if you added programmable computers to the game…
Antelux #350
Posted 04 August 2016 - 04:39 PM
Well, it is quite possible to do, and can be done by modding the game as well. Just not quite high on my priority list to do. :P/>
Bye. #351
Posted 05 August 2016 - 06:44 PM
I can't open the game :(/> . After downloading it and launching mc nothing happen.
I think I'm using the Alpha release
 pastebin run FgAggvy1 minCraft alpha 
Antelux #352
Posted 05 August 2016 - 06:54 PM
Are you getting any error messages? I've fixed a potential error that could've been there.
Bye. #353
Posted 05 August 2016 - 07:21 PM
Are you getting any error messages? I've fixed a potential error that could've been there.
Nothing on the screen but in the errorLog file there is this string:
mc:129:attempt to call nil
Antelux #354
Posted 05 August 2016 - 08:25 PM
I'm not quite sure what the problem is, since installing a fresh version of the game using the arguments you used seems to work fine on CC1.7.
Are you using an emulator? And what version of CC are you using?
Bye. #355
Posted 05 August 2016 - 08:26 PM
I'm not quite sure what the problem is, since installing a fresh version of the game using the arguments you used seems to work fine on CC1.7.
Are you using an emulator? And what version of CC are you using?
CCEmuRedux V1.1-dev.20, Computercraft 1.79, CraftOS 1.7
Antelux #356
Posted 05 August 2016 - 09:23 PM
It's most likely the emulator then, since it seems to work fine in MC. I'd suggest using it there instead.
Bye. #357
Posted 14 August 2016 - 02:00 PM
Why don't you make the player's arrow using the ASCII symbols? You can use \16 \17 \30 \31
ReBraLaCC #358
Posted 22 August 2016 - 12:37 PM
Thought i would give this a try, Downloaded everything and when i run it nothing happens.. gyazo

I don't know what happens inside of there so fix it please :)/>
Jummit #359
Posted 05 August 2017 - 10:20 AM
Thought i would give this a try, Downloaded everything and when i run it nothing happens.. gyazo

I don't know what happens inside of there so fix it please :)/>
I know that this post is not updating so often like it did in 2016, but i have the same issue and i want to play this game! You also could make a pastebin for an older version, so we can play it. Pleeease!
Edited on 05 August 2017 - 08:21 AM
Antelux #360
Posted 05 August 2017 - 06:22 PM
Funnily enough, I looked at this recently and thought about giving it that one, final update to really set the game in stone.
Other than that, I'll need a few details, such as your CC version, whether or not you're using an emulator, if there's an errorlog, etc.
Jummit #361
Posted 05 August 2017 - 07:57 PM
Ok! Wow, i didn't think of getting a response here! I used an emulator, but is there any code difference? I started it in a real MC world (1.10.2) with unborked and it installes the game, but if i start /MC/mc it does nothing. Is there a log file?

PS: I a game like this in development: terrariCCa!
Edited on 05 August 2017 - 06:08 PM
CLNinja #362
Posted 05 August 2017 - 10:07 PM
Ok! Wow, i didn't think of getting a response here! I used an emulator, but is there any code difference? I started it in a real MC world (1.10.2) with unborked and it installes the game, but if i start /MC/mc it does nothing. Is there a log file?

PS: I a game like this in development: terrariCCa!

I'd reccomend not advertising competitors on someone elses program.
Antelux #363
Posted 06 August 2017 - 02:40 AM
Ok! Wow, i didn't think of getting a response here! I used an emulator, but is there any code difference? I started it in a real MC world (1.10.2) with unborked and it installes the game, but if i start /MC/mc it does nothing. Is there a log file?

While I'm definitely not as active as I used to be, this place definitely keeps a hold on me, so I check the forums frequently. :D/> ( Oh whoops, unintentional rhyme. Oh well.)
But yeah, sometimes emulators aren't 100% accurate to the real thing, unfortunately.
The log file should be called 'errorlog' in the same folder as the game (which in this case is MC).
I'll check out this behavior in a bit myself and see what happens.

I'd reccomend not advertising competitors on someone elses program.

Well, it depends, but l don't take any offense either way. :)/>
I like to think of it as friendly competition. Can really motivate people to make something great if done right.
Edited on 06 August 2017 - 12:42 AM
Jummit #364
Posted 06 August 2017 - 06:21 AM
Ok! Wow, i didn't think of getting a response here! I used an emulator, but is there any code difference? I started it in a real MC world (1.10.2) with unborked and it installes the game, but if i start /MC/mc it does nothing. Is there a log file?

PS: I a game like this in development: terrariCCa!

I'd reccomend not advertising competitors on someone elses program.
Oh. I didn't meant it like that. Competition? You're game is thousand times better than mines… :lol:/>
CLNinja #365
Posted 06 August 2017 - 03:52 PM
Ok! Wow, i didn't think of getting a response here! I used an emulator, but is there any code difference? I started it in a real MC world (1.10.2) with unborked and it installes the game, but if i start /MC/mc it does nothing. Is there a log file?

PS: I a game like this in development: terrariCCa!

I'd reccomend not advertising competitors on someone elses program.
Oh. I didn't meant it like that. Competition? You're game is thousand times better than mines… :lol:/>

Doesn't mean you should advertise on someone elses post.
Antelux #366
Posted 06 August 2017 - 08:45 PM
So it looks like one of the game's API's wasn't getting access to the shell API.
A quick and dirty hack can be done like so:

1. Open the "mc" file through edit.
2. Move the multi-line comment down a line.
3. On the new, empty line, write "_G.shell = shell" (minus the quotes, of course).

And that fixes it for me. Though, unless you actually want to play survival in the game, I'd recommend the alpha version instead.
While it doesn't let you save, the game is a lot smoother and you can freely build. The world is also infinite there. :)/>
Lyqyd #367
Posted 08 August 2017 - 07:26 AM
APIs aren't supposed to have access to the shell table. The real fix would be to remove the unnecessary usage of shell functions from the API (usually the right fix, especially for shell.run), or for the caller to provide its shell table as an argument to any functions that need to use it, so that those functions will use the correct shell context.
Antelux #368
Posted 08 August 2017 - 07:55 AM
A quick and dirty hack

=P

In all seriousness, it's been a while since I've looked at ComputerCraft and it's APIs. I wouldn't know if there is a suitable replacement.
Essentially, all that line does is get the location of where the game is running. Perhaps I'll get around to doing the latter of what you've said, but as of now, I'm working on other projects. :)/>
Bomb Bloke #369
Posted 08 August 2017 - 01:07 PM
The 1.80 development builds offer "require", which is probably what you were wanting to use from the get-go.