I took a break from working on Flare to spend some time on an old project of mine, feedreader. My goal was to create a GUI configuration screen to make it easier to set up. It was a great exercise in creating something with GTK, as I've only really done stuff with tray status icons. Here's a look at the result as of now:
This is great for people who don't like mucking about with text file configuration. However, I should probably think about adding some buttons to change the order of appearance of the feeds.
I also worked on a small app to show the status of Caps/Num lock keys in the system tray. I needed this because my new laptop doesn't have LEDs for these states, which I think is kind of crazy.
News from the Flare project has been sparse, if not silent. So I'd like to take this opportunity to discuss what we've been working on to those who may not be closely following development on Github. The features and fixes I'll discuss have been implemented since the last developer log video.
Features for players
Core engine features
- Scaled rendering. Instead of having to set a window resolution, the window can now be resized on the fly. The game's display will be scaled appropriately so that the viewable area is not different depending on the window size. No more tiny graphics on high resolution screens!
- We now support an arbitrary number of save slots, instead of only 4.
- The Android port is 100% functional now. Many thanks to Igor Paliychuk. Unfortunately, we don't yet have a way to automatically download and install game data.
- Lots of cleanup and fixes to mod syntax and engine code.
User interface improvements
- By Shift-clicking on inventory/vendor items, players can select how many they want to pick up. I've written about this feature in a previous blog post.
- Right-clicking on powers that have been placed in the actionbar causes that power to be used. This was a problem for powers that use the mouse cursor position to get a target. In such cases, we now go into a targeting mode so that the player can pick an appropriate target for the power.
- A config option has been added to hide text labels on loot. When hidden, loot labels can been shown by holding the ALT key.
- The main menus (title screen, config menu, etc) now support background images.
- Power tooltips now display more information about their effects.
Improved input device mapping
- All mouse buttons can now be bound to actions, even for mice that have more than 7 buttons.
- Joystick axes can now be bound to actions. This means that movement is no longer hard-coded to Axis 0/1. It also means that analog triggers on devices like Xbox 360 controllers can be mapped.
- "Instant" powers can now be used while the player is in an animation. This allows for easy use of potions and other consumables while being attacked.
- Enemies are no longer restricted to 4 powers (2 melee and 2 ranged). This should let us create more interesting enemies.
- New entity stats: "Missile Reflect Chance" and "Damage Reflection". Missile Reflect Chance will let entities direct missile powers back at their attackers. Damage Reflection will instantly return a percentage of the damage taken back to the attacker.
- New status effect: Knockback. Entities under this effect will be pushed away from their original position.
- Powers can now move relative to their caster. This combined with the new ability to make casters move in a straight line allows us to create "charging" powers, like the "Shield Bash" in the Empyrean mod.
- Loot drops can now be defined in loot table files. This allows for more varied loot from chests and enemies.
- Vendors can now offer randomized loot from a loot table file.
- Powers now have the ability to spawn loot directly.
- Item prices can now be affected by player level.
Features for developers
- Errors when parsing mod files now print the filename and line number where the error occurred.
- Added a developer console. With the "Developer Mode" setting enabled, press the F5 key in-game to open it.
- A MapSaver API has been added for external programs that want to write out map files from Flare's data structures.
Steady progress is being made on the game we will be shipping with the 1.0 engine. The game will be divided into 4 chunks, each with 3 side-quests. The first 3 chunks will have a large dungeon at the end containing a major boss. The last chunk will be the lead-up to and confrontation with the final boss. As of now, the first of these chunks is finished, while the second chunk is about half way finished. Here's a quick overview of what's in store for players:
- The game's content is designed around the player leveling from 1 to 16 (level cap is actually 20).
- There are currently over 400 pieces of equipment that players can find and use.
- The player's Power tree has been redesigned since the alpha demo. Every power can be upgraded an additional 4 levels. There are also now passive powers that only have a level requirement, so they can easily by mixed and matched with different builds.
In between working on the engine and the Empyrean mod, I've also started to work on creating a new web site for the Flare engine. One of the main reasons for a new web site is to allow other contributors besides Clint to make blog posts. That way, I would be able to provide updates directly on the Flare site. Most recently, I worked on migrating all of the blog posts from the current Flare site to this new one.
Discussion about the new site can be found on this Github thread.
After designing the Empyrean campaign's first major boss fight, it came time to tie it all in to the main quest. This prompted me to review the design of the Book of the Dead map.
The original plan for this map entailed a boss fight later in the game, but that idea has been scrapped. Instead the initial focus of the map is getting the player to start the main quest. The player enters from the southern staircase and takes the teleport to the western platform. They can't teleport back until reading the Book of the Dead and triggering the main quest.
Once this happens, they can teleport to the eastern platform and head either: south back to town or north to the wilderness. At this point, the north and south teleports have changed to send the player directly to the eastern platform whenever they pass through the map again.
This in combination with the completion of the St. Maria maps means the Empyrean campaign is a little more than 1/4 complete. That might not seem like much, but a lot of the time I've spent in the last few weeks has involved further balancing gameplay numbers. Things like figuring out the rate at which enemies get stronger, the strength of player powers, and the bonuses given by equipment. And every few steps of the way, I found something that was missing on the engine side that needed implementation. That said, things should be easier going forward. Those engine features are now implemented, and I no longer feel the need to make large, sweeping changes to gameplay numbers.
Today, I implemented, what I think, is a useful feature into Flare.
Previously, there were instances where the player could pick up just one item in an inventory stack (like when shift-clicking). In fact, all item movement on touchscreen/mouse-less devices was done that way. This was unacceptable for large stacks, such as those for Gold. My solution was to create a dialog menu to let the player decide how much they want to pick up.
The implementation of this was a bit tricky. Flare's drag-and-drop system worked under the assumption that it was literally that: DRAG and drop. Clicking on items immediately removed them from their source slot, and there was no way to maintain what was being dragged if the player let off the mouse button. So as a result, I needed to make sure:
- The stack isn't picked up when shift-clicking on an item stack
- The item stack and source id are still stored in our dragging variables, but not displayed visually
- When the player clicks "OK" on the dialog box, the desired quantity is removed from the source slot
I'm satisfied with the end result, although the dialog menu itself may get some usability tweaks. For example, the text field with the value could be editable by keyboard. Also, the rate at which the arrows increment/decrement the value might need some adjusting.
Today, I finished laying out the first map of the first major dungeon in the Empyrean campaign. The area it is a part of is tentatively named Lochport Tower, but there's a good chance that will change.
The center area is vertically symmetrical, and the outer ring is horizontally symmetrical. Both combined create a shape that I really like. From a gameplay perspective, the player will travel clockwise around the outer ring. At 3 o'clock, there will be a mini-boss defending some treasure chests. One of the chests will contain a key that will unlock the door to the next level in the center area.