Daiele would be released for playtesting right now if I believed in it: the reality was I needed more tech to do what I want, so what follows is the product of that. I do imagine Daiele will be released before 7.5 is, but what do I know? The focus for the next few weeks is on Daiele, anyway. We should see the next update some time in June. With that will also come the prototype technology for Necro. Then 7.6 has the best, most interesting, most super-fun-to-develop features in GAM3.
GAME ICONS!
I am elated to announce that after three years of waiting, game-icons.net finally released their icon set with transparent backgrounds! This is a huge boon to GAM3. These are 1,538 high-quality icons designed with games in mind. Check them out under the Game Icons pack. Good thing we have a search function!
You can browse their catalogue at www.game-icons.net
They are beautiful, but at our current 16x16, it may be hard to appreciate most of them. We'll be 20x20 soon enough.
aaaaand more base icons
We're reaching the point where new icons will only be added on a project-wide basis, such as how Necro would need a Science and Robot pack. Until then, here are some more icons for the engine base.
https://dl.dropboxusercontent.com/u/106067196/icons_apr2015.PNG
Note the action_ icons are very useful for many adventurous interactions. Most of them are new, some are replacements. (I've hated our previous explosion icon for so long) I also added a few higher-quality animals in the animal pack, toward the top, labeled under alt_. We have a great elephant.
Give From Tag
In all my time developing GAM3, a few features have made me all giddy inside. Formulas, ifs, world ticks, scheduled events and cooldowns are some. Here's another: Give From Tag, which will give a player a randomly selected item from a tag.
Under the new Special option, which is just a little magic wand, you'll see a dropdown with Give From Tag in it, and some boxes. You can give a player anything from a tag where the tag's property is equal, over, or under a value, *or* between two values. Example: in Daiele, you can search through junk piles to find junk. I make a few items with properties Junk 1 or 2, and a few rare with Junk 3. If they find a lesser, basic junk pile, I'll say "Give From Tag junk where value is less than 3" and they will receive junk of that value. An "uncommon" would warrant between 2 - 4. We even have special descriptive text for finding the item, and you can hover over [item list] to see a list of items that qualify for your current parameters. Get creative with this feature, it's very powerful!
Big Panels Update
Truthfully, panels were a mess under the hood. We'd store massive text strings in a user table, in order to have the player move their panels around, change them however. For most options of the panel, they'd only be matching our default, but we'd still be writing over the default anyway. The result would be that we want to add a new custom panel for a new feature in the game, (say you add the option to fish and want a whole panel for it) but the player would have to actually save their settings anew to even see the panel. Or we decide to switch the layout a bit, player has to redo their settings. How it works now is that when saving, we look at the default value in the game's config. If it's different from what the player is saving, then the player is "overwriting" and we save that one overwrite entry. No longer will we ever have to reset our settings via the wrench in order to see new custom panels. Whew. There were also some performance gains with this.
The "character" panel has been converted to treat entries as categories like the inventory panel does. Previously it would group quals by major and minor, which made a huge irrelevant mess. Remember both the char and inventory panel accept the "exclude" parameter to exclude a category.
The "whitelist" parameter has been added for custom panels. You will be able to set a list of object IDs to appear in the panel: these ignore all qual types, creating a "pseudo category" to display. It will honor major/minor as usual. You cannot mix panel types yet: you can't have a whitelist of some quals and items.
To help players understand the purpose of each panel, we now have an 'info' parameter in your config file. They are populated with default verbiage. If you don't like the tooltips, you can leave the text blank.
An empty qual class will now render as a minor qual. This means in order to hide a qual, you need to choose the class Hidden.
All Zones
You can now finally specify events and pools to show in all zones. An example use case was in Daiele, collecting ash in the Burnt Land even when in the camp or hut.
Wizard Templates
We now have the ability to clone an item or qual as a base template to work from when using the Wizard. Selecting an object from the dropdown will set all other dropdowns to the template's type. Use case: making various clothes in Daiele: shirt (brown), shirt (red), shirt (black) etc. More useful for items than quals, especially equipment.
Object Lookup
Here's a really neat feature: on the right side of item and qual views, where we have delete and clone, we now also have "lookup"! This shows you anywhere an object is manipulated in the game: basically, if you lookup Hunger in Daiele, you'll see a list of all the events where Hunger is either a requirement or result. In this way, we have a means of knowing all "eating" events. I've been wanting this for so long and it's finally in! Quals, being the gods of all locked objects, have more to say for themselves than items.
Better Pool Filtering
Previously, our play filter was fairly stupid: if you play an event in a pool, it puts it in a little segregation array that won't be called from until the filter was "full", at which point it would be dumped out and all events would be eligible for play again. This meant you could play event Dance and if it was the last in the pool, you could very well get Dance on the next serve again. Now we use a "pull" system that treats the pool as always full, and it pulls the events down by age until they're knocked off. In other words, if your play filter's 3, Dance will wait at least 3 events to be shown again.
Mobile Support
Finally went through the mobile version of our site and I'm happy to say that it went exceedingly well. I did have to disable portrait mode, because we just can't fit all the text in meaningfully, but most games run landscape anyway. Visit orbium.com/yourgame and play on your phone! Or tablet! And take pics. :}
Icons For Text Results
We can now add icons to text messages. This is useful for adding flavor in the form of "game messages", which the player learns are usually only shown by database updates. (that is: if they see a message with an icon, they know something changed)
General
We have a new formula function! chance(). This function is to be used in formulas and will give you a set chance depending on what you put in. Example usage:
chance(1, 50, 2, 50); will give you a 50% chance for 1 and 2.
chance(1, 30, 2, 40, 3, 30); will give you a 30% chance for 1 and 3, and a 40% chance for 2.
Clearly, the secondary numbers represent % chance and should always equal 100. If they don't, the game will scream at you.
Tag requirements in Play now have a default "Select item..." rather than just choosing the first in the list by default. If the player selects this, it will bounce the select box and turn it red, indicating they cannot continue until they put an item into the event.
It is technically possible to get a player stuck into an emergent event by having a requirement for it to pop up, but then changing that requirement in the result options, AND having that emergent event lock them into it by having a branch. So, there's now a lengthy alert that will pop up on save if you happen to be in this fairly rare scenario.
We now give the player a message to tell them that we've removed a pool event from their hand, if they no longer meet the reqs for it.
We now better handle locking travel locations. The moment the player clicks on a locale to move, it will give them an alert, rather than rushing them off to a pretend event and refreshing the page all clunky-like.
Improved hand pools' hands visuals so that they won't leave a border lacking if the player does not have a full hand.
If you accidentally have too many line breaks at the end of your text results, we now tidy them up so as not to disrupt the following results.
Bug Fixes
Our code for unlocking events once the player's gotten enough actions was broken. It is now fixed. Simply that: if the player needs 5 actions but has only 4, and they're on the same screen, we'll refresh the middle content piece once they get 5, allowing them to play without physically refreshing the page.
Fixed some genuine exploits regarding pools!
- You could play a pool event outside of a pool if you knew its ID and were in the same location as the pool
- You could overwrite what a pool had served you by opening a new window and playing the pool again
When cloning an item, both equip stats and tags were not being carried over.
Put a case in for "setting a qual to a value that has a label" in event results.
Panel quals were not being animated properly. They are now. Also, various pieces of functionality were broken for panels: things like "left and right custom panels don't show if skip_is_empty is true" and "required: item for item panels didn't actually work". There was an issue where major and minor quals would sometimes show out of order, this has been fixed.
Reaching the maximum value of a qual would continue to give a message, "You have reached the limit for [x]." but it's been fixed to only appear when the old level does not meet the new level; ie, the first time it reaches max.
Performance: on setting a qual directly, and changing any qual that has change text, we were performing superfluous queries to the database. These have been nulled. Added protection to ensure a panel won't be updated twice even if a lot of different things happen via event results.