One of the strengths of working with data-driven systems is that it’s very easy to tweak little things. For example, every aspect of the puzzle screen is easily modifiable. The colour of the grid, the type of cursor, the background, everything is tweakable with a parameter.
Part of this can be found in the gameplay options I mentioned in an earlier post. How the cursor moves, if the cursor loops, if there’s a little vibration on every move, etc.
Aside from offering a selection of puzzle themes, which you can also have selected randomly, if the player finds a special object in the game they are also able to create their own.
Here they can set pretty much every element of the puzzle screen to their liking. What colour is the grid, what colour the dividing line that cuts the grid into 5×5 squares? What shape of cursor do you want and does it pulsate colour for extra visibility? What colour are the bars that show up behind the currently selected row and column’s clues, and does that bar extend all the way into the grid as well? What colour are the clues and how much do they fade out when completed? What background do you want on your puzzle screen? If you have found a favourite from following the story’s locations you can simply use that one, one of the included themes’ background or even just the regular story mode background, which changes depending on your current location in the game. What shape and colour are the blocks and crosses you fill in?
As you can imagine the choice of options is quite overwhelming, so there is also a way to randomise all of these until you hit on one you like. Even then you can still go in an tweak it a little. Of course to entice players to experiment a little with a custom theme there’s a special in-game trophy for anyone who does.
Backing all of this up is the simple rule I set out for myself: never “hard script” any value. Almost every aspect of Piczle Cross is driven by variables, from the colours of the puzzle to the speed of the cursor and every feature checks a boolean. Because of this approach every aspect is easily tweaked from a single location and every feature can be switched on or off at will. If I can tweak the colour of the cursor, for example, why not expose this to the player as well? And so the theme editor was created.
Of course, as with most rules, I break it plenty. Some aspects of the game, specifically when building the overworld and characters, I “hard scripted” in because it is just quicker and easier. Some animations, for example, once I’ve finalised them, I duplicate and remove the worst flashing elements for the people who chose to play with “reduced flashing” turned on.
In the end, of course, it’s a balance. If it’s easier and quicker to just fix something during production and the player never gets to tweak it anyway then why not? If it has an effect on future porting or needs easy tweaking, make it a variable. I think with Piczle Cross Adventure I found a nice balance, and am happy to expose a lot of the parameters to the player, simply because I can and it’s fun!