To please that crowd, a hard game would probably have to include something ridiculous like a Walkthrough-mode, where Ian could solve all the problems on his own when the player just clicked on the appropriate hotspot. It would be a little like watching MacGyver. (This is not a serious suggestion, more of a lamentation.)
Wait a minute: This might, to the contrary, be An Idea.
All the casual games feature a Hint system: You click on a “Hint hat” or something that is always conveniently located at the left or right bottom screen corner, and then a ray highlights exactly the thing that you need to click on next. Usually the hat needs to “recharge” before it will yield the next hint.
I don't know how they do this exactly, but the kits for casual games probably have something built in that provides that functionality in a convenient way (probably in combination with modules for the dozen minigames that seem to feature in aaaall the casual games aaaall the time).
Now let's suppose we have a separate file with
GOALs and
DESCRIPTIONs of how to reach them.
- A GOAL would be an identifier that you can choose freely.
- A DESCRIPTION would say: "In order to reach GOAL, if CONDITIONS are met, you RIGHTCLICK|LEFTCLICK on OBJECT|HOTSPOT|CHARACTER|INVITEM."
- A CONDITION could be any valid AGS expression that only uses goal names and global variables/attributes (e.g., oPitchfork.Clickable)
This should be enough for a plugin to automatically generate a function, called, e.g., "
room_ShowHint()", that looks around and sees what is currently true and then calls "
HintRightClickObj(Object *)", "
HintLeftClickObj(Object *)", "
HintRightClickIitem(InventoryItem *)", etc., as the case may be.
The functions "
HintRightClickObj()", etc., would need to be provided by the game coder and point out that the user needs to do that respective thing next (by highlighting that thing with a ray on an overlay or something). Example or default code might be provided for that. These functions go into
GlobalScript() or some script module.
The Hint hat is on a GUI, and when it is clicked, it dispatches a "CallRoomScript(99)". Each room that uses the plugin would need to have
function on_call(script)
{
if (script == 99)
room_ShowHint();
}
at the bottom of the room file, and the generated "room_ShowHint()" function in front of that block of code. (The plugin could see to that.)
As a result, whenever the Hint hat is clicked on, the user would get exact visual feedback on what to do next.
Coders could ask on the start screen whether the player wants "expert" mode or "casual" mode; if they want "expert" mode then the GUI that features the Hint hat is simply made invisible.