Big Block Engine
A downloadable game/game engine for Windows, macOS, and Linux
Big Block Engine is a 2D, side-view block-based game engine with some simple physics rules, including cell-based fluid motion and blocks that can tumble.
Currently, it can be played like a simple sandbox game, allowing you to draw with blocks, block masks (blocks that modify the appearance of other blocks, like grass on dirt), fluids and furniture (multi-block placeable objects). When un-paused, any unsupported tumbling blocks (like sand) will fall/roll, fluids will flow, unsupported furniture will break and contact conditions will occur (lava+water turns to lava rock, for example).
Current Features
- Variable Resolution Tile Engine
- Can make blocks as detailed as you wish
- On a block-by-block basis
- Within the limits of OpenGL and the used block renderer, of course
- Foreground and background blocks
- Starbound-style overlapping block edges
- Tilesets
- These allow multiple different blocks to connect, as though they were all one block
- Full RGBA Block Paint
- Animated Blocks
- Can make blocks as detailed as you wish
- Furniture
- These are multi-block objects that don't move
- Full RGBA Furniture Paint
- Animation
- Optionally user-interactive
- Actors (AKA Sprites)
- Physics Simulation
- Tumbling sand
- Fluid Motion
- This is Terraria-style fluid at the moment
- Actor movement and collision handling
- including drag-like effects in fluids
- Wiring
- This is similar to Starbound, with the following differences:
- If furniture is removed, the wiring attached to it remains
- Wires that end in the same cell are connected, allowing multiple wire segments to lead from an input to an output
- This allows wire to be routed in a neat fashion
- This system is actually using floating point values to communicate, so both analog and digital signals can be carried by it
- Wires can be colored with any RGB value, but this is purely cosmetic
- This is similar to Starbound, with the following differences:
- World Features
- Can optionally loop horizontally and/or vertically
- Active worlds are held in RAM
- Similar to Terraria
- Unlike Starbound, which constantly loads and unloads world sections as a player moves around
- Can be any size desired, within the limits of Java heap space
- With a 64-bit Java Virtual Machine and sufficient RAM, this can get exceptionally large
- World Save/Load
- This uses a very flexible zip-archive-based format
- Most files in the archive are a single type of data
- For example, all block masks for a single BlockPlane (either the foreground or background plane of a game world) are stored in a single file as raw numbers
- This makes parsing and debugging very easy
- Most files in the archive are a single type of data
- This uses a very flexible zip-archive-based format
- Modding Support
- Add new blocks, block masks and fluids
- Customizable rendering of these, as well
- Add new tilesets for the above
- Add new furniture
- Customizable rendering of these, as well
- Add new Actors (AKA Sprites)
- Add new blocks, block masks and fluids
- Open Source Software
- LGPL v2.1 or later
Future Plans
- Full Terraria/Starbound-like game engine
- Crafting
- Mining
- Lighting
- Using a texture-based light-mapping approach
- Audio
- SFX
- Music
- More Functional Sprites
- PCs, NPCs, monsters, projectiles, etc.
- Background parallax images
Requirements
- Java 8+
- This is not a browser-based game
- OpenGL-capable graphics card
Credits and License
I've used a number of Liberated Pixel Cup and other opengameart.org assets to build the bootstrap mod. The credits and licensing information are too long to include here, but please have a look at the in-game credits, as available from the help menu. Alternatively, if you download the source archive, you can view the credits directly from the file 'bigblockengine/src/bootstrap/credits.txt'.
The source code license is LGPL version 2.1 or later, with a few small files (mostly BlockRenderer implementations) available as Public Domain.
Donations
Donations will be used for/will accomplish the following:
- Encouraging me to work on this more
- Currently this is largely a weekends only project
- I would like to work less at my job and more on this
- Encouraging me to fix bugs you find
- I will prioritize fixing a bug for you when you donate
- As an alternative, I might tackle a small feature request
- But it will have to be a feature I agree with adding
- Commissioning new open game artwork
Notes for Developers/Modders
The source archive is intended to be used along with the binary archive. Download and unpack the binary and then unpack the sources over that and you'll have all files you need. The big thing not included in the source archive is the libraries required to compile it.
This open-source project is in a very early Alpha state and has been in development since February of 2016. Making use of this game engine to develop a proper game will require significant work and I'd hold off at least until the release of Casserole Edition (see below, under Milestones) At that point, it should be an excellent starting point for making side-scrolling platform games and the current editing mode should be useful for level design.
Until then, it will still work as a simple, mod-ready sandbox game.
All APIs are subject to change without notice, because this is bleeding-edge Alpha work. I will not set the APIs in stone until I consider this project to be stable. That will require all the final APIs to actually exist and that is at least a year out, if not longer.
I will probably write up something on how to mod this game soon; for now, you'll have to learn by example. Have a look at the bootstrap mod's source files (from the source archive: 'bigblockengine/src/bootstrap'). They're mostly self-documented in the XML files. The layout of the XML files will be backwards compatible insofar as I am able, so modding this is supported now. This will allow you to add new blocks, block masks, fluids, furniture and new contact rules (these are fairly limited at the moment, however).
Milestones
Edition Code Name | Meaning |
Biscuit | Initial Release Milestone In memory of Ryan Johnson's Terraria character (Biscuit Girl), may she rest in peace. I cannot believe how many grave markers for her I found... |
Buttered Biscuit | Second Milestone Includes block and furniture painting capability, allowing for much greater decorative capacity. Full RGBA coloration of blocks and furniture is supported. |
Soda | Third Milestone Sprite support, complete with physics, as provided by dyn4j. |
Spaghetti | Current Milestone In-game wiring support, including both digital and analog logic. |
Casserole | Future Milestone Moddable game starting point for a non-editor mode. |
Pot Luck | Future Milestone Support for correctly sand-boxed mods and general security enhancements. |
Known Bugs/Issues
- Mods have permission to do whatever they like.
- They need to be properly sand-boxed with a Java SecurityManager instance.
- Unfortunately, this will requiring re-writing portions of the game.
- Some actions need custom permissions.
- Existing code will need to be evaluated for safety and given appropriate permissions.
- I'll have to put a lot of thought into what permissions an un-trusted mod can be safely allowed to have.
- Unfortunately, this will requiring re-writing portions of the game.
- This is currently safe for non-code mods and mods the end user explicitly trusts. If you're building a game of your own using this engine and you've no intention of supporting modding your game, it's fine as is, as you'll be the only modder.
- This is slated for implementation in Pot Luck Edition.
- They need to be properly sand-boxed with a Java SecurityManager instance.
- Actors (AKA sprites) don't always work right.
- Actors don't float on fluids, even when they're light enough that they should.
- Actors passing upward through a platform are given a bit of an upward push. I don't know how to fix this, just yet, but I have minimized it as much as possible.
- Collisions on the edges of looping worlds will not always look right, as the colliding objects partially pass through each other.
- Actors can't detect when they've collided with the edge of the world, even though it does prevent them from passing through.
- Slopes along the edges of a looping world do not work as they should.
- Actors passing upward through a platform are given a bit of an upward push. I don't know how to fix this, just yet, but I have minimized it as much as possible.
- Oil/water interactions can behave strangely at times.
- Running under Linux is subject to pauses in rendering any time the OpenGL context is invalidated (it should be a minimal pause, as of 0.7.0 Alpha).
- This can be caused by moving the window from one screen to another.
- May also happen when altering the screen resolution with the game running.
- This cannot be fixed, as it's being cause by an external library.
- Entering/exiting full-screen mode may leave any open internal windows on screen in strange positions.
- The windows stay where they are in window coordinates while the size of the window changes around them.
- This cannot easily be fixed, but should be a relatively minor problem.
- One can always switch back to the previous mode and re-position the internal window.
- As of 0.21.1 Alpha, this no longer affects modal dialog boxes.
- Switching to/from full-screen mode with a modal dialog box on screen has been disabled.
Status | In development |
Category | Tool |
Platforms | Windows, macOS, Linux |
Author | simulatoralive |
Made with | Inkscape, GIMP |
Tags | blocks, Game engine, Moddable, Physics, Pixel Art, Sandbox |
Code license | GNU Lesser General Public License v2.1 (LGPL) |
Average session | A few minutes |
Languages | English |
Inputs | Keyboard, Mouse |
Download
Click download now to get access to the following files:
Development log
- Sandboxing Java Code, a Modern ApproachFeb 22, 2023
- Logic Components (0.27.0 Alpha)Feb 10, 2023
- Parallel Block-Based PhysicsOct 19, 2020
- GUI Overhaul (0.26.1-3 Alpha)Oct 11, 2020
- Placing Painted Blocks (0.26.0 Alpha)Sep 26, 2020
- General UI Improvements (0.25.1 Alpha)Sep 19, 2020
- Better Error Reporting (0.25.0 Alpha)Sep 11, 2020
- Better Exit Cleanup (0.24.0 Alpha)Sep 01, 2020