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.
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:
Spoiler
So! 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.")
Spoiler
This 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!