This is Development Release Alpha 0.0.3. It features:
- Items and Blocks can be extended to handle events and store data. This release mainly focuses on items, the next will focus on blocks.
- Tools have been revamped as item extensions. There are small changes to functionality and appearance, but nothing massive.
- The Laser now has a "ready" state when it's pointing at a minable block. It is also more accurate when destroying nonsolid blocks.
- The Manipulator has been renamed "Mover" and can move blocks anywhere within it's radius, rather than along an arc as was the previous functionality. In addition, it tries to rotate entities it picks up back to 0 degrees, making it easier to pick up and move piles of things.
- The Builder (rather than metalcrafter) has a different color.
- The first weapon has been added: the Launcher. It launches grenades, making use of the newly added explosion effect. I forgot to expose its configuration to json, so that'll be in the next release.
- Changed the behavior of held items: because tools are now items, items can define a custom arm to use when equipped, and because the player can hold things other than tools, a default arm was added that can hold the icon of the item in its hand.
- A simple lighting system was added. Light comes from the layer between the foreground blocks and the background, so anything that is transparent in the foreground lets light through. It then averages the light areas and dark areas. In a later update, I'll add a more useful lighting mechanism, where things are illuminated from above or from blocks/entities/effects, but, without any easily-added light sources already in the game, I decided to leave it as-is for the time being.
- Fixed the bug that was preventing me from porting to Mono. We now have a Linux release. Currently no Mac version, since I'm not entirely sure how to get SDL and its dependencies working on OSX; so far interrogating .library files hasn't been completely successful. If someone can supply me with the .dylib equivalents for the .dlls that ship with Sparse, I can probably get something working.
- The main menu now features a list of controls. On windows it shows the carriage returns, so I'll fix that for next release.
- The size of the sector select indicator was doubled, to make it more noticeable.
- Tweaked movement physics to make explosions satisfying to watch
- Changed (mostly raised) the levels of sound effects You might want to test the game at a low volume, just in case. I'm either using SDL_Mixer wrong, or there's a bug with the auto-select channels, so sound can get somewhat glitchy if too much stuff is going on. Pretend you're being so awesome the world is glitching out around you / you lost your hearing.
Known Bug: tools might not work right if you pick them up out of the equipped slot and put them down somewhere else. This is because, when you pick a tool up, it doesn't trigger an equip/dequip event for it, which is how the player handles items. In the next release, opening you inventory will pause the game, so this will be fixed.
This release comes after having wasted a lot of time playing with a library that didn't work (protobuf-net) trying to fix serialization on Mono, and a month of working on other things, few of which were fruitful. This is the first release where it feels like there's something to do (blowing stuff up), so I hope you enjoy it. I heartily recommend blasting the top layer of rock off a sector.
It's possible to make a lot of changes to the game by editing the Json files found in Data/Sparse/Definitions. You can add materials, blocks, items, biomes, and shapes to the game, and make changes to existing ones. If you want custom items or tools to show up in the game world, you can add them as drops to existing blocks, or create new blocks, add them to world generation, and have those blocks drop your items. As for extensions, only the event handlers shown exist in the game, and you can't mix or match the event handlers for tools. It's technically possible to add your own by wrapping my game, extending the state that initializes the game world, and inserting your delegates there, but hopefully in the next release or two I'll add a way to load external assemblies. That'll probably coincide with a definitions editor, too.
Version 0.0.3a (7/26) Features:
- Fixed text rendering after resizing on Windows/.NET
- Exposed the Launcher's properties to Json.
- Tweaked particle effects.
- WASD to move
- Q and E to cycle tools
- Left mouse to use tools
- Tab opens up a navigation screen (if you're close to the edge of the map)
- Mover: lets you pick up and throw objects. Has a minimum operational distance, for safety reasons.
- Laser: A powerful laser, capable of burning through rock and cutting metal.
- Builder: Can quickly fill areas with sheet metal.
- Launcher: Launches grenades that can destroy terrain and blast things away, including you.
- Left click: pick up or put down a stack of items
- Right click: equalize held stack with stack underneath cursor
- Shift + right click: pick up a single item, or put down a single item
- Be careful when moving equipped items, you could break something.
Version 0.0.3a (7/26)
Version 0.0.3 (7/25)
(You'll need to have SDL2, several SDL2 extensions, their dependencies and Mono installed to get it working on linux)