Engine Ideas/Suggestions

Report any bugs or ideas/suggestions that arise during testing of the Alpha Build Version 5

Re: Engine Ideas/Suggestions

Postby Lurking Grue » Sat Sep 07, 2013 10:51 am

Thanks, guys! 8-)

youngneil1 wrote:The random effect on delay in itself will be unusual enough for them, best have some combat log entry on delaying that explains the range of 1 to 4 move order position and shows the rolled result.

Yep, at the very least there needs to be some combat log entry like, "Iolo delays [or waits?]... for 3 phases (1d4: 3)." I think the term 'slot' might be confusing, perhaps 'phase' might be better. IMO, phase is more commonly used in turn-based games to describe distinct time intervals inside one combat round (e.g. movement phase). So we'd have Initiative Phases instead of Initiative Slots. Or what do you guys think, which one is a better term (requiring no explanation)?

youngneil1 wrote:Alright, charm of this would be that the "right = click action" scheme would then be the same in inventory screen (equip), shop screen (buy/sell) and combat screen (attack).

Yes, yes, this is exactly my intention. Standardize the mouse UI. Left click is always 'Select' or 'Move', right click is always 'Do (Default) Action'.

youngneil1 wrote:Choosing targets for spells, range attacks, used traits and used items actually feels like attacking/doing an action to me though. How about having all this "execute selected action on target stuff" go to right mouse button, too?

Yes, you're right. I messed up the explanation. I didn't mean for the left click to execute the action, only select the target. To keep things consistent, only right click would execute the selected action.

youngneil1 wrote:This way I could choose to cast a spell (left click: cast spell), select the fireball spell (left click: fireball, maybe later click a spell level or spell category first for sorting purposes), now range and area of effect would ideally be graphically shown, and then still do left clicks to inspect my targets (left click: on any token, with fireball already selected) and then finally a right click to fire off the spell on the target most suitable? So, left click on any creature token on the map would always mean "show info", on an empty square always "move there" (btw. only on neighbouring squares as otherwise we would likely get problems with alternative paths to the target field?).

Indeed. Once you have a spell or trait selected (maybe the mouse cursor changes to denote this, but even if not, the command button is "activated" - shows as lighted up, pressed down, whatever), left click would be used solely for targeting, to prevent accidental movement. Only when you have no other action selected will the left click move the PC. This arrangement would also allow targeting empty squares for Area of Effect spells and the like. The UI would accurately show the AoE by coloring all squares affected in yellow (once you left click a square the map is colored with the AoE overlay). You could thus easily check where to place that fireball, for example.

Until we have a path marker (like blue colored squares showing the chosen path), moving the PC one square at a time is the safest course of action. You guide the PC across the map with left clicks on his adjacent squares (or by using the arrow keys). Once we get a path marker in, then moving longer distances becomes feasible (but you could still just move one square at a time if so wanted, ofc.). If the player can readily see the path chosen by the pathfinding code, he'll avoid nasty surprises and can step in to guide the pathfinding as needed. Can't do a sketch of the path marker, as I'm at work now, but just envision a similar square coloring as above, but have the movement path be represented by a blue squares. (OR if drawing a movement path on the fly is not possible, have any multi-square move require a left-click to "plan" the move, which shows the path, and another left click to execute the planned move. This would be a bit clunky, though. Maybe better to keep the 'one step at a time' movement then and disallow 'pathfinding moves'.)

youngneil1 wrote:Well, it kills RedCarnivals controlled zone overlay which uses colored squares to show controlled zones, but hey, that's a minor loss as RC is just a testbed anyway.

Can't remember now what the controlled zones looked like in RC, but you could use map icons to show controlled zones instead of colored squares (like a small star or plus sign). Also, the overlays can all be turned off, so even coloring the zones could work, even if it might become a bit "crowded" with colors.

youngneil1 wrote:I guess that when a square is in move range or creature as well as pc a blended color (some brown - green + orange - here then) will appear.

Yeah, maybe a custom color, maybe just a blend of green and orange (which might become too "muddy", blending two blended colors can result in muddy colors), maybe let enemy's movement range override the PC's range for the duration of it being selected and just show it on those squares. Need to test it to decide.

youngneil1 wrote:Will monsters play by the same rules, e.g. their movement cost for paths through their allies are doubled, too?

I would hope so. Unless it is too difficult to implement, I'd like everyone (both the PCs and the enemies) use the same rules for everything - movement, attacks, trait use, spell casting, everything. I've always disliked games, where the computer's side is cheating the rules (unless we're talking about old games, where they had to do that due to processor and memory limitations).

youngneil1 wrote:it would be cool to have squares (swamp, deep sand, overgrowth, etc.) that cost more movement points than other

Yes, that would be cool. Much like in many strategy games, where terrain is a major factor in movement (as it is in real life, of course). Some terrain, like swamp or knee deep water could hinder movement by as much as tripling movement cost through it. Other less hindering terrain, like dense underbrush or muddy ground, would just double the movement costs through it. For example. This could work for non-combat maps too. Like, having overland travel maps have different "movement costs" per tile in queston. GOing through the woods would be twice as slow as travelling on open ground, etc.
"It is pitch black. You are likely to be eaten by a grue."
User avatar
Lurking Grue
Backer
Backer
 
Posts: 291
Joined: Sat Dec 08, 2012 12:26 pm

Re: Engine Ideas/Suggestions

Postby youngneil1 » Sat Sep 07, 2013 11:29 am

Yep, at the very least there needs to be some combat log entry like, "Iolo delays [or waits?]... for 3 phases (1d4: 3)." I think the term 'slot' might be confusing, perhaps 'phase' might be better. IMO, phase is more commonly used in turn-based games to describe distinct time intervals inside one combat round (e.g. movement phase). So we'd have Initiative Phases instead of Initiative Slots. Or what do you guys think, which one is a better term (requiring no explanation)?


Phases sound fine to me. Perhaps it could be worded with a slight explanation for the random nature, like" Iolo waits and will get another chance to act 3 phases later (1d4: 3)".

Yes, you're right. I messed up the explanation. I didn't mean for the left click to execute the action, only select the target. To keep things consistent, only right click would execute the selected action.


I played around with the spell targeting this morning (inter alia for the big to do list). Right now, targeting a spell and executing it are the same. It's one left click to choose the target and instantly fire off the spell. So, we will have to decide whether left or right button feels better for this whole combined process. Right now it's left click to target+execute, right click to abort spell casting. It feels not bad actually. Perhaps - despite of what I said first - we could leave it this way. We would lose left click information functionality with already selected spell this way, but hover over target still shows info in the right hand side info box (and soon in the floaty text about creature head). I will trust whatever you come up with here.

Concerning player pathfinding, I would opt for the time being to stay with one step at a time to ajacent square.

For squares that are both in move range of player and creature, I feel a blended or a separate color would both work out fine. Just using enemy movement range information (totally overwriting player movement range information) feels to me like losing some information though (less preferred option).

Movement costs on non-combat maps would translate into time costs. Perhaps Props could have a property like TimeCostToMoveThisSquare, overriding the AreaMap setting for time movement cost. This way one could easily place swamp or deep snow props and have fine control within a map. Actually it might be nice if AreaMap and such props would call a script before finally deciding the time movement costs (just expose the code in a script perhaps? Like done for e.g. attackPC.cs) This way authors could use skill or trait checks, maybe even equipment like horses or dog drawn slides/carriages, to influence the final time cost of moving.
User avatar
youngneil1
Backer
Backer
 
Posts: 4617
Joined: Sat Dec 08, 2012 7:51 am

Re: Engine Ideas/Suggestions

Postby Lurking Grue » Mon Sep 09, 2013 1:29 pm

youngneil1 wrote:I played around with the spell targeting this morning (inter alia for the big to do list). Right now, targeting a spell and executing it are the same. It's one left click to choose the target and instantly fire off the spell. So, we will have to decide whether left or right button feels better for this whole combined process. Right now it's left click to target+execute, right click to abort spell casting. It feels not bad actually. Perhaps - despite of what I said first - we could leave it this way. We would lose left click information functionality with already selected spell this way, but hover over target still shows info in the right hand side info box (and soon in the floaty text about creature head). I will trust whatever you come up with here.

Will have to think about this some more. Maybe having the targeting override the base functionality and be just 'Excecute or Cancel' (left and right clicks, respectively) would be more intuitive. Now that we have confirmed mouse-over tooltips/info pop-ups, most of that 'left click for info' functionality can be delegated to those pop-ups. More "in-head testing" is needed. :)

youngneil1 wrote:Concerning player pathfinding, I would opt for the time being to stay with one step at a time to ajacent square.

I would hope that out of combat movement (where pathfinding isn't as critical) would work for more than adjacent squares. With only one square moves, it would be incredibly tiring to click over and over again to move the party on the map out of combat. If we are to have mouse controlled movement in the game, which I sure hope we will have (most players will for sure expect to be able to move the party with a mouse), we need the pathfinding to be smart enough to handle multi-square moves with confidence. It is only one character that moves on the map, after all - not 6 individual characters. In combat I can live with one square at a time movement with no pathfinding, but out of combat I would be very disappointed to have no pathfinding and keyboard only movement controls.

Regarding mouse controls, I would like to get clarification on what level of functionality are we to aim for with mouse controls. I would want to have the game fully mouse controlled if the player so wants, with no need to resort to keyboard commands (if so wanted). We will provide a lot of keyboard commands for most (if not all) funtions, of course, but no player would have to learn the keyboard commands if he/she doesn't want to. I have no problem with keyboard commands, mind you, I play a lot of roguelikes which have strictly only keyboard commands and the whole keyboard utilized for commands (often with differing commands for capital letters and non-capital letters), but I'm thinking of prospective non-hardcore CRPG players here. A smooth mouse controlled UI is a must, IMHO.

youngneil1 wrote:Movement costs on non-combat maps would translate into time costs.

Yes, I agree. Optimally there should be a way to convey to the player if/when some squares are slower to move through than others (like in Ultima 4-5 where the message log prints "Slow Going" when travelling through dense woods or foothills of mountains, IIRC). Having floaty text display the time used is one option, as you wrote on another thread. Another option would be to implement a small message window to the bottom of the non-combat UI, much like in Infinity Engine games, and use that for other game messages too. There's room for two or three rows of text there, which would be fine for small messages - like, "Slow going, 2 hours passed." or "You must gather your party before...." Eh, NO, not that! ;) I'll try to cook up a sketch once I get home tonight. No promises, tho', it'll be pretty late when I get home tonight.
"It is pitch black. You are likely to be eaten by a grue."
User avatar
Lurking Grue
Backer
Backer
 
Posts: 291
Joined: Sat Dec 08, 2012 12:26 pm

Re: Engine Ideas/Suggestions

Postby youngneil1 » Mon Sep 09, 2013 2:06 pm

In combat I can live with one square at a time movement with no pathfinding, but out of combat I would be very disappointed to have no pathfinding and keyboard only movement controls.


Perhaps there could be a mouse movement option (in addition to normal keyboard) that moves the party while (left?) mouse button is pressed down, in a direction relative to party and mouse cursor position. Example: mouse cursor is several squares north of party and the player holds the left mouse button, party makes a step north. A second (or half second or whatever move speed the player mgith decide for in the ingame settings menu) the party will make another step north if the player keeps holding the button down. In other words: the party will always move straight into the direction of the mouse cursor (within the 4 movement directions it right now has on world map). This way a player would not have to press keys on the keyboard and could still decide betweeen alternative paths to the same target. When the palyer holds the mouse button down relative close to the party he can easily circle around the party and have it smoothly change direction (maybe even a direction arrow would appear over the party, like facing arrow, showing move direction). Or so might be the plan.

From gut feeling I would like this direct control more than a typical real-time-strategy point and click on target-square control which would assign a long path and then move the party along it without player control for each step. Our world is maybe too binary for this and each square (with triggers) too important as it makes often a big difference whether the squares more left or more right is taken for a path.

But again, I am open minded for other mouse control schemes, too. Having some mouse steering would be definetly good.

Another option would be to implement a small message window to the bottom of the non-combat UI, much like in Infinity Engine games, and use that for other game messages too. There's room for two or three rows of text there, which would be fine for small messages - like, "Slow going, 2 hours passed." or "You must gather your party before...." Eh, NO, not that! ;) I'll try to cook up a sketch once I get home tonight. No promises, tho', it'll be pretty late when I get home tonight.


Wonderful, fully support that. Floaty text is sometimes a bit "too much in the face". To have a second information channel (like combat log but for main world) would help a lot!
User avatar
youngneil1
Backer
Backer
 
Posts: 4617
Joined: Sat Dec 08, 2012 7:51 am

Re: Engine Ideas/Suggestions

Postby Lurking Grue » Mon Sep 09, 2013 3:10 pm

youngneil1 wrote:Perhaps there could be a mouse movement option (in addition to normal keyboard) that moves the party while (left?) mouse button is pressed down, in a direction relative to party and mouse cursor position.

Yeah, that would work too. It would be like Ultima 6 and 7 (IIRC), where keeping the mouse button pressed allowed you to steer the avatar (and the whole party) on the map. I like it, let's do that (i.e. left mouse button pressed down for continuous movement). As an added bonus, it'll keep the coding of a robust pathfinding AI off Jer's back.

Mmmm, Ultima. The Ultima series (up to U7) gives me a warm fuzzy feeling inside. If the IB engine manages to reach the functionality of Ultima 5 (except with mouse controls) with its day/night cycles, NPC schedules, etc. I'll be one happy man. Ultima 5 is THE milestone to judge a CRPG engine, IMO. It has all that is needed, really. OK, OK, a more robust combat system, more character stats (skills) and so on and so forth could be added of course, but if you boil it down to the bare bones, bare basics, Ultima 5 has all that a good CRPG needs. Anything more than that is gravy. :)
"It is pitch black. You are likely to be eaten by a grue."
User avatar
Lurking Grue
Backer
Backer
 
Posts: 291
Joined: Sat Dec 08, 2012 12:26 pm

Re: Engine Ideas/Suggestions

Postby youngneil1 » Mon Sep 09, 2013 3:53 pm

Ah, it's cool that you mention the Ultima series right now. Just some 10 minutes ago I saw a video report on Ultima 1 to 6 and thought myself "Hey, they got a lot of stuff right already back then".

World time, NPC schedules and moving hostile creatures, day/night cycles and different weathers will go a looong way already. And it's all coming for IB (or at least it's in the task list that poor Jer has ahead of him :twisted: ). We will have overland and can play with scale, even perspective, as we like, change the party icon to boat/horse, etc. Ok, our maps will be smaller, but the graphic detail and animation can be a thousand times better and - even more important - much, much more varied. With load times at the blink of an eye, the maps size doesn't matter much anyway as long as it's able to fill the screen ;) And all of that combined with tactic gold box combat, OGL inspired rule system, a wonderful dialogue engine... sigh, almost too good to be true. Well, let's slay the beast first, before we cherish its treasures :lol: Just saying - this one here is very special and I think all of us extremely lucky to have found each other in this time and place working together on Jer's great project.

Not that 121 open tasks (plus, hand to the heart, some more from the last posts in this very thread) weren't enough, but when looking Ultima VI (I think) I saw some kind of UI button for "inspect" (like an eye). It might be nice to have some "active detective button" that the player must click on a spot he finds suspicious (the friends of this button would then be "use item", "cast spell", "use skill" and"use trait", all for the world map interface, perhaps in a row at the bottom, togehther with the world map text log Grue has just suggested). The "inspect" button would encourage the player to watch the map for hidden hints, like suspicious looking wall sections drawn a little differently. I think finding a secret by making an active decision to look at a special spot is much more rewarding than just getting a surprise message with "You just found...". We might want to have a potential drawback attached to clicking the button, perhaps cost of time / SP / custom scripted party endurance (Red Carnival).

Cruel me to come with new feature ideas right now - well, let's call those the "2014+ features", shall we :lol: ?
User avatar
youngneil1
Backer
Backer
 
Posts: 4617
Joined: Sat Dec 08, 2012 7:51 am

Re: Engine Ideas/Suggestions

Postby Lurking Grue » Mon Sep 09, 2013 8:03 pm

Sorry, don't have time to explain these in detail. Here are the sketches for a proposed message window to the non-combat screen (for all sorts of short messages to the player).

Here's the first sketch, showing the place of the message window on the non-combat screen. The image has been shrunk to 50% of its normal size to conserve bandwidth.

Image

This is approximately the real 100% size of the message window and text in it. I found it very readable and not too small (used a 14 pt. font size, IIRC).

Image

As an alternative, there is room for command buttons in the bottom area of the screen. Those buttons have been stolen from Ultima 6 and are there only for example purposes. We could have buttons for Look, Talk, Cast, etc. Check e.g. the Infinity Engine games for other possible buttons to add here and to the other side of the message window. (The image has been shrunk to 50% size.)

Image

Of course there is room on the left sidebar, in case we don't want to crowd the bottom row. I'm pretty sure that I would like just that. That is, put the few command buttons we need to the left sidebar and leave the bottom for the message box alone. No time to do a sketch of that tonight, sorry. It's easy enough to imagine how that would look. The command buttons would be separated from the "menu" buttons by an empty space between them. These command buttons would be customizable (can do your own pictures for them) just like the menu buttons are now.

Now I have to skedaddle. Until tomorrow!
"It is pitch black. You are likely to be eaten by a grue."
User avatar
Lurking Grue
Backer
Backer
 
Posts: 291
Joined: Sat Dec 08, 2012 12:26 pm

Re: Engine Ideas/Suggestions

Postby youngneil1 » Mon Sep 09, 2013 10:51 pm

Nice ones - and great you already implemented the Ultima VI button row for visualization :) .

Maybe we could make the bottom border area (wood plank background at bottom of the screen here) as broad as the side border areas. This way we could have four lines of scrolling text in the "message window", which would be much better to follow.

Now, I have been thinking a little about world interaction. We might have:

I. Move (hold left mouse button): either use keyboard or held left mouse button (see above) to move, often this will call an action via onEnter or OnCollision triggers/script hooks; inter alia dialogues are easily triggered this way or picking up stuff
II. Have a look (short left click): a (short) left click on anything in the world would mean "look at it". Either nothing happens or a description text appear in the "message" window (the text could be taken form the description properties of creatures and props; additionally each square would ideally have a separate option to have description even if no object is placed in it - sometimes an author might just want to describe his drawings a little to the player). This is a powerful storytelling tool, especially for those not so graphically inclined. E.g. a player's enlightened thoughts after left clicking and reading the message window:" Ah, the small brown gubble next to the large brown shruxnl are a "A chair" and "A table"!"; when more than one object is in a square or the square and an object in both have descriptions, just all descriptions are shown after one another in the message window
III. Party search button: turn the mouse cursor into a target selector for objects or squares themselves with distance 1 to the party or on the party square itself; this will reveal any hidden information from target, sometimes only after a successful skill check; all charaters in the party would get a roll on the skill check here; skill could be just perception, but also others like lore, etc. Tis potentially costs ingame time / SP / endurance (Red Carival) / etc.
IV. Party rest button: the current rest button
V. Leader command buttons: the leader command buttons 1 to 4, after a second selection of the respective skill, spell, item or trait in a separate window - turn the mouse cursor into a target selector for the command selected; the command is always executed by the currently selected party leader; a further left click on anything on the map will use the command on the clicked target; likely only usable on target with distance no more than 1 to the party, where a click on the party itself would mean the square the party is in; a click on a party member portrait will make this character the target; when more than one object is in a square, a menu will ask which object to target;
1. Use Skill (note: all search related skills would also be used via party search command above; one could also call them from here, saving the time/SP/other cost of the party search command, but having to choose the one single character and wanted skill here obviously lowers chances of success)
2. Cast Spell
3. Use Item
4. Use Trait
VI. Free parser action: Just opens a menu where you can enter free text; this will always refer to the square the party is standing on; enables to have secrets and very complex, hidden riddles: e.g. perhaps muttering a phrase in front of a strange hole in the wall will cause somebody on the other side to open a secret door; Module authors could place scripts via triggers on squares that wait for the correct parser phrase on their square and then do something; the phrases might also be unusual action descriptions ("like press left emerald eye") and similar text adventure like stuff
User avatar
youngneil1
Backer
Backer
 
Posts: 4617
Joined: Sat Dec 08, 2012 7:51 am

Re: Engine Ideas/Suggestions

Postby Dorateen » Tue Sep 10, 2013 6:40 pm

youngneil1 wrote:VI. Free parser action: Just opens a menu where you can enter free text; this will always refer to the square the party is standing on; enables to have secrets and very complex, hidden riddles: e.g. perhaps muttering a phrase in front of a strange hole in the wall will cause somebody on the other side to open a secret door; Module authors could place scripts via triggers on squares that wait for the correct parser phrase on their square and then do something; the phrases might also be unusual action descriptions ("like press left emerald eye") and similar text adventure like stuff


I've always wanted to do something with a keyword parser. As much as I enjoy branching dialogue trees and the limited role-play options it can provide, nothing compares to just letting the player/character type whatever they want and have a conversation with an NPC. The first memorable experience I had with such a system like this was in Wizardry VII. It was incredible. This is something I would want to explore and develop further.
User avatar
Dorateen
Backer
Backer
 
Posts: 906
Joined: Mon Nov 26, 2012 2:08 pm

Re: Engine Ideas/Suggestions

Postby youngneil1 » Tue Sep 10, 2013 8:34 pm

I've always wanted to do something with a keyword parser. As much as I enjoy branching dialogue trees and the limited role-play options it can provide, nothing compares to just letting the player/character type whatever they want and have a conversation with an NPC. The first memorable experience I had with such a system like this was in Wizardry VII. It was incredible. This is something I would want to explore and develop further


Maybe we can tinker some parser options into the current conversation system. I was able to call the riddle.cs (a modified one) from a conversation as an action. This means a window will open amidst a conversation and allow you type in something. The script can check for what you typed and then e.g. set a global variable to a certain value. Afterwards the conversation would go on. On a further branch of the conversation it might check for the value of beforehand global variable. This way, what you typed in via parser might influence the conversation flow.

Now, this is not a full fledged text adventure, but more a freeform key word option at certain points in a conversation. Still, it has quite some creative potential.

I must play around more with it - one problem actually was to prevent the riddle window from appearing right behind the conversation window, deadlocking the engine.

Replacing this line

Code: Select all
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;


in the riddle script with this block

Code: Select all
System.Drawing.Rectangle rec = System.Windows.Forms.Screen.GetBounds(this);
int screenWidth = rec.Width;
int screenHeight = rec.Height;
int width = 300;//say
int height = screenHeight;//say
int x = screenWidth - width;
int y = 0;
this.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
this.SetBounds(x, y, width, height);


positions the riddle quite to the right hand side. Also I had to kill a few message windows appearing center screen.

I will keep you informed how this develops - ideally in the end I could provide a script called gaFreeParserAnswer.cs. This would be attached to answer options in a converstion as action and would take as parameters the correct answer, the name and value of globalint to be changed. Let's see... [will be very busy unfortunately in the next days, so this might take a while]
User avatar
youngneil1
Backer
Backer
 
Posts: 4617
Joined: Sat Dec 08, 2012 7:51 am

PreviousNext

Return to Alpha Build 5 Bugs and Ideas Reporting

Who is online

Users browsing this forum: No registered users and 1 guest