[go: up one dir, main page]

A downloadable game/game engine for Windows, macOS, and Linux

Download NowName your own price

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
  • 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
  • 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
  • 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)
  • 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 NameMeaning
BiscuitInitial 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 BiscuitSecond Milestone
Includes block and furniture painting capability, allowing for much greater decorative capacity.  Full RGBA coloration of blocks and furniture is supported.
SodaThird Milestone
Sprite support, complete with physics, as provided by dyn4j.
SpaghettiCurrent Milestone
In-game wiring support, including both digital and analog logic.
CasseroleFuture Milestone
Moddable game starting point for a non-editor mode.
Pot LuckFuture 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.
    • 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.
  • 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.



Download

Download NowName your own price

Click download now to get access to the following files:

bigblockengine-win-linux-osx-alpha.zip 12 MB
Version 0.27.0-Alpha
bigblockengine-source.zip 3.6 MB
Version 0.27.0-Alpha

Development log

View all posts