Biggles<font color=#AAFFAA>The Man Without a Face</font>
Open mind? Who wants an open mind? Be brainwashed!
------------------
[b][url="http://www.minbari.co.uk/log12.2263/"]Required reading[/url][/b]
Never eat anything bigger than your own head.
The Balance provides. The Balance protects.
"Nonono...Is not [i]Great[/i] Machine. Is...[i]Not[/i]-so-Great Machine. It make good snow cone though." - Zathras
Having an open mind is good, the breeze airs everything out. Just remember to cover with a fine mesh, to stop the brain falling out. [img]http://216.15.145.59/mainforums/wink.gif[/img]
I'd like to add that there is a difference between an academic striving for a simulation of intelligence (or perhaps even real intelligence), and the pursuit of a space combat sim based on a fictional television show with a specific canon, built in a specific amount of time, for a specific amount of money, which while featuring the simulation of a living universe -perhaps even with emergent behavior, is nonetheless centered on emotional evolvement and "fun factor", rather than an attempt to create life.
In other words, you can’t do everything, so you have to decide what’s most important, and than try to keep centered on that priority for the (usually too little) amount of time you have to produce a product. In our case the priorities were replay-ability, unpredictability, good, canon storytelling without being on rails, and FUN!
[This message has been edited by Randy (edited 10-13-2001).]
bobo: Nope, no service experience. I got most of my knowledge of command organizations from friends, coworkers, reading a lot of "space opera" SciFi, and Tom Clancy. The real military is so much more complicated that I do not claim to have much knowledge of how "it really works".
Jack: That's a very nice compliment, thank you. I've always believed that most people can understand most things: so long as enough background and context can be given to make what is being explained a "frame of reference" in which too explain it. Unfortunately, artistic talent and "a good eye" can't be explained to a non-artist like myself. You'll still get "programmer art". [img]http://216.15.145.59/mainforums/wink.gif[/img] (although you may be able to teach me why it stinks, or at least be able to spot on my own that it does.) "I detect the foul reek of programmer art on my work." [img]http://216.15.145.59/mainforums/biggrin.gif[/img]
BigB: Yes. Divide and conquer. Break complex things into smaller not-so-complex things. Keep dividing until you can see how to solve the problem. Figure out how to connect the layers and make all the little pieces fit together. Debug. Look at what isn't working (aka. refactor). Fix it and debug again. Repeat until you are out of money.
Throw in a little noise, randomness, or a human, and you won't be able to predict the micro scale but can depend upon the direction of the macro scale.
Greetings GrantNZ: Welcome to the company of our merry little band. [img]http://216.15.145.59/mainforums/cool.gif[/img]
Don't worry about insulting me: I am well aware of the weaknesses in the system as designed; constraints imposed by the goals, design, and budget of the game; and the need to minimize risk affecting the chances I was willing to take.
[i]I'm working on a reply to some of your issues; but I need to stop for a bit... and I don't want to leave all of the above sitting in a browser window on a Win32 box... which might crash at any moment without warning.[/i] :-/
[This message has been edited by John Walker (edited 10-13-2001).]
You're one of the few programmers I know who doesn't blast a condesending(sp?) "artists are stupid" programmer type ego at the people around you.
... and I think you judge yourself too harshly in the way of artwork... Given time, you could learn to do work much better than mine, like Marcs for example, and given that same time I could learn to code better.
Dang it, Randy beat me to the punch, [img]http://216.15.145.59/mainforums/wink.gif[/img] but he also said what I wanted to say better than I could say it. [img]http://216.15.145.59/mainforums/biggrin.gif[/img]
Here's what I was working on, and I want to share the implementational stuff, but I don't have time to re-write it (since the jedi have been waking us up at 3:30am [i]every night[/i] for the last two weeks).
[i]Let's review from a previous thread.
Every ship and non-physical command agent has a [/i]Controller[i]. Controllers select [/i]Strategies[i] which do the "heavy thinking". Strategies (through the task stack) cause [/i]Behaviors[i] to be run which do the feedback control (flight, shooting, aiming, not running into things) for the physical ships. Okay, onto the new stuff.[/i]
(some of my background, for context: [img]http://216.15.145.59/mainforums/wink.gif[/img]
My academic background was in low-resource AI (aka. pseudo int. or PI) using GA-trained neural nets, fuzzy systems, and genetic programming (GP). Thus, I think I understand what you are getting at...)
[i]Would the B5:ItF AI have been able to come up with the "wacky, zainy, out-of-the-box" type of answers that are routinely (cough) created (as a rare gem buried in a lot of rough) by such alife systems?[/i]
The short answer is 'no'. There was some very rudimentary machine learning/adaption in the game AI's design, but nothing approaching the complexity of even the most simple GA or GP.
(this is redundant with what Randy said)
Remember that any game is not a research project; it is a product. Products have schedules, budgets, and oversight. Project directors need to minimize risk and the creation of software that won't ship as part of the final product (since programming time = money). Automatic AI training frameworks and modifications to the game engine and code architecture to support them are definitely in that category.
When I was interviewing and first started, I would talk to Dan (aka. PDF), Greg (Tomko-Pavia, he did the AI for SWAT2 and was our technical director/producer/advisor at YE), Dave (aka. the wookie) and others about using machine learning and/or a GA to train the game to think on its own (and get the cool sorts of spontaneous effects you are talking about). The thing I kept hearing over and over again was "that's great, and would be very cool, but can you absolutely, positively, guarantee it will work every time? Can you guarantee that you can meet this tight schedule?" The answer, as you well know having worked with these sorts of systems, was no. Trying to schedule when you'll get an alife system to converge and 'work' is like trying to predict when a herd of cats are going to all stop and stretch.
This was before I understood how the missions had to work to support the story... then I got even more doubtful.
Another big thing to remember is that ItF was not meant to be a stand-alone adaptive tactical exploration simulator. The game was primarliy story driven, and gameplay experience for the player was [i][b]everything[/b][/i]. (As it should and needs to be for a game.)
What you are talking about (I believe) is something built to surprise, amaze, and out-think the player. So how do you keep the game from a) kicking thier butt much of the time, b) using boring, lame, ineffective, or "not fun" methods against them, c) destabilizing or getting stuck in local optima, d) being intentionally decieved and manipulated by the player (not the tactics, but the [i]evolution[/i] of the tactics), etc.
Play balancing and controlling a chaotic emergent behavior system is bad enough even without letting the thing evolve itself over time. Yikes! [img]http://216.15.145.59/mainforums/eek.gif[/img]
Don't get me wrong: what you are describing is [i]extremely[/i] cool, it is just outside the scope of what the AI for the project could hope to do.
Also remember that I had about 20% of a 233 P2 to do [i]everything that is AI[/i]. That included mission selection, mission management, faction planning, machine learning, tracking the player, strategic planning, tactical control, music AI, and the flight/turret mechanics of 1000 ships (and 'n' missiles at any given time). I didn't have any cycles left to be doing a "directed stochastic search" (aka. a GA) and all the necessary fitness testing in the background while the game was running.
[i]So, how did it work?[/i]
Tactical and strategic decision making: Every agent, be they the fleet commander or fighter AI had a set of current orders which corresponded to one or more goals. This would cause the agent to request a strategy from a pool of one or more strategies which fell under that category. Example categories are things like 'aggressive attack', 'cautious attack', 'defense', etc.
Strategy pools might only have one strategy in the "go to point XYZ" category, and 3-whatever in the 'cautious attack' pool.
The choice of strategy category is weighted random (FuSM or FSM with prob. state transition) biased by emotional state, species/faction, skill level, intel, age of intel, etc. etc. Once which "pool" of strategies is chosen, one of them is randomly selected based upon the skill level of the agent, the recent successfulness of the strategies in that pool, etc. So, in other words, strategies could not be created out of air, they had to be in the list. If the "diversionary attack with strong attack elsewhere" was coded up and placed in the pool, it could be chosen.
Note, however, that creating a new strategy (or behavior, as I have discussed before, they also had these "categories" with "pools" of behaviors from which one was chosen as needed) was not very difficult. Inherit from the right class, code it up (using the existing ones as examples and places to snag code snippets from), register it with the right "strategy pool" and bingo: you've got a new strategy. This not only allowed anyone on the team to work on the game's AI without being an expert on it, it also made the possibility of patches and mission pack's adding depth to the AI (or deleting lemons) very easy. (no, a script editor and/or user AI tool was not planned for ItF, but was discussed for if there was a sequel)
Strategies would also be coded for the particular level. Granted, some would be quite similar, but more importantly, the very high level AIs could have some fairly elaborate strategies written for them (like the example you describe) which would result in orders that supordinates could execute with relatively simple strategies.
Non-physical command agents would execute their strategy which would generate orders for subordinates, process reports from subordinates, and generate reports for superiors. (incoming orders would be handled by strategy if possible, but might force the strategy to become inappropriate and thus be changed.)
The game engine was very modular, so the idea had been discussed about making a "homeworld-like" (3dRTS) game in the B5 universe. (yeah, we were really getting ahead of ourselves here, but what the heck; you are going to talk about something at lunch...) Where ItF's focus was on story and first-person game play, the focus for the RTS game would be strategic and multi-ship tactical. For that game, AI (particularly high-level AI) would be critical to the game's gameplay quality and would make a much stronger case for the sort of work you describe.
In all fairness to Mr. Truth (my old nemesis), I should mention that most of the high-level agents were designed on paper, stubbed and frameworked in code (like a FuSM with no input parameter sets), and consisted mostly of a bunch of hand-written notes of the various strategies, etc. that I was going to implement. Thus, when I talk about "how things worked" at that level, I'm really talking about how I was planing to build version 1. (of probably 3). This was also an area that was discussed for possible cuts in effort... the game, because of the strong story element, could survive with relatively simple and rather shallow strategic thinking in the high-level AIs. Most of the time they were going to be getting their orders almost directly from the story manager anyway, and the "open loop campaign" was just a side-effect 'it would be neat if it did this' feature. Now, looking back on the schedule, etc. I believe that what I just outlined (cheezy high-level AI) is probably what the game would have shipped with... but even the first mission pack or sequel would have been able to "correct the problem" (or at least improve it). I am [i]not[/i] talking about the formation, squadron, capship, and/or captain level controllers here. Those [b]had[/b] to be fleshed out, balanced, and given depth (variety) for the game to deliver what was being promised. I am confident that those requirements would have been met (but I don't know if I would have gotten any sleep for about, say, 6 months before release. Luckily sleep is an optional luxury for the weak. [img]http://216.15.145.59/mainforums/rolleyes.gif[/img] )
The pools and all that stuff was working and tested in the lower levels, so there is no reason it wouldn't have worked in agents up the chain of command.
Oh, and a disclaimer all the regulars are sick of hearing... When I talk about "my" or the ItF AI, what I am refering to is the team's collaborative effort to design and build the AI subsystem for the game. Everyone on the team contributed. Having said that, the varous AI components were my primary responsibility so I take any blame there is to be had for problems, weaknesses, or failures.
The whole post sounds a bit more defensive than I intended... please read it with that in mind.
[img]http://216.15.145.59/mainforums/shad.gif[/img]
[This message has been edited by John Walker (edited 10-14-2001).]
Jack: Aw, shucks. [img]http://216.15.145.59/mainforums/redface.gif[/img]
(Jack is too nice to me)
Biggles<font color=#AAFFAA>The Man Without a Face</font>
[quote]Originally posted by John Walker:
[B]Here's what I was working on, and I want to share the implementational stuff, but I don't have time to re-write it (since the jedi have been waking us up at 3:30am [i]every night[/i] for the last two weeks).
B][/quote]
Apparently my parents could set their clock by me. [img]http://216.15.145.59/mainforums/biggrin.gif[/img]
Just one quick question while I think about this stuff: Were these pools of strategies hard coded into the game, or did you have a "strategy" class (or set of classes), which you then used to create strategies by using scripting, and for each scripted strategy create an instance of the strategy class and fill it from the script?
------------------
[b][url="http://www.minbari.co.uk/log12.2263/"]Required reading[/url][/b]
Never eat anything bigger than your own head.
The Balance provides. The Balance protects.
"Nonono...Is not [i]Great[/i] Machine. Is...[i]Not[/i]-so-Great Machine. It make good snow cone though." - Zathras
This message won't &$%@$%^ post unless I chop it into bits, so here's Part One:
John: Thanks for the discussion - very interesting. [img]http://216.15.145.59/mainforums/smile.gif[/img]
Firstly...
[quote](since the jedi have been waking us up at 3:30am every night for the last two weeks)[/quote]
The "jedi"? [img]http://216.15.145.59/mainforums/smile.gif[/img]
[quote]Remember that any game is not a research project[...][/quote]
I completely disagree. Although I'll happily admit that the vast bulk of research is going into graphics. (On which note I must say the new Unreal engine is looking nice...)
That will have to change one day though. To keep people's interest companies will have to (I hope) research AI a little better. It'll only take one ground-breaking AI-enabled product to force everyone else into the trend. (Who wants to play a standard FPS after seeing the AI in Half-Life? etc.)
[quote]The thing I kept hearing over and over again was "that's great, and would be very cool, but can you absolutely, positively, guarantee it will work every time? Can you guarantee that you can meet this tight schedule?"[/quote]
Sure, and it's a very valid point. (What am I saying; I don't need to tell you that! [img]http://216.15.145.59/mainforums/wink.gif[/img] ) Like anything stochastic, I suppose you have to decide whether you can build a 95% (or whatever) confidence in an AI engine... Anything random, iterative and creative rolled into one will have chances of failure... It's a matter of getting good [i]enough[/i] and taking advantage of the failures. So the enemy screws up a tactical maneuvre - that's "human." It also presents a chance for characters to poke fun at the enemy. The same with friendly-side mistakes.
That said, who can guarantee that they can even produce a 60% accurate AI. [img]http://216.15.145.59/mainforums/smile.gif[/img]
That said, people [i]have[/i] been able to use true AI to positive affect. We just need to brainwash money-controllers to take risks. [img]http://216.15.145.59/mainforums/wink.gif[/img]
[quote]This was before I understood how the missions had to work to support the story... then I got even more doubtful.[/quote]
To that I can only say, the system will work if the AI is allowed to generate the story as well. (Or at least thoroughly understand the story.) But that's a whoooooooooole other discussion. (And a personal research project for myself.)
[This message has been edited by GrantNZ (edited 10-15-2001).]
[quote]What you are talking about (I believe) is something built to surprise, amaze, and out-think the player. So how do you keep the game from a) kicking thier butt much of the time,[/quote]
My main priority is to create a game that I cannot predict. I never want to create a game where my enjoyment is sullied by knowing what's going on behind the scenes. [img]http://216.15.145.59/mainforums/smile.gif[/img]
One feature of the fitness function (for GP in any case) could be to seek evenness. If the player seems incapable of defending extremely intelligent attacks, use only moderately successful attacks. Increase usage of awesome attacks as the player increases his tactical knowledge.
Implementation of that of course depends heavily on the game itself. My current project can most simply be stated as a Tekken/Street Fighter-type game (although it's vastly more complex). My aim (in story mode) is to allow the final battle to take up to half an hour. (Yes, definately more complex than Tekken. [img]http://216.15.145.59/mainforums/smile.gif[/img] ) A big feature of the AI will be to act [i]human[/i]... the player will need restful times in the battle, so the opponent should too. The opponent could turn playful if the player isn't skilfull enough. The opponent could play dirty if he's losing badly.
So it's possible to find that balance - you just need an AI system that doesn't look purely at battle victories.
[quote]b) using boring, lame, ineffective, or "not fun" methods against them,[/quote]
AIs these days do that anyway. FPS enemies stand still and fire until they die. StarCraft enemies perform constant tank rushes. A game that gives 10% creativity is far more valued by me than one that provides 100% consistant action.
[quote]c) destabilizing or getting stuck in local optima,[/quote]
Yep, that's a problem for which I have no answer. [img]http://216.15.145.59/mainforums/frown.gif[/img]
[quote]d) being intentionally decieved and manipulated by the player (not the tactics, but the evolution of the tactics), etc.[/quote]
Sure, another one that to which I can't throw up a defense - yet. [img]http://216.15.145.59/mainforums/wink.gif[/img] I feel this might be another issue that we must let the AI sort out itself? Why shouldn't an AI prepare some nasty tricks, on the basis that the player is "playing dumb" to evolve poor computer tactics? The AI doesn't have to [i]use[/i] them, but just have them ready in case the player [i]does[/i] try to take advantage of the AI.
Final part: (BTW, does anyone know why the time to "Submit Reply" increases exponentially with post length? [i]*sigh*[/i]
[quote]Play balancing and controlling a chaotic emergent behavior system is bad enough even without letting the thing evolve itself over time.[/quote]
Again, let the AI do that. Seek balance rather than primarily seeking to win battles.
[quote]Also remember that I had about 20% of a 233 P2 to do everything that is AI. [...] ...and the flight/turret mechanics of 1000 ships...[/quote]
Sure, an understandable limitation. [img]http://216.15.145.59/mainforums/smile.gif[/img] Damn those graphics programmers. [img]http://216.15.145.59/mainforums/wink.gif[/img] It does depend, however, on what level you want "interesting" AI to emerge. Fighters and capships (using Wing Commander terminology here - I'm not too familiar with B5 concepts [img]http://216.15.145.59/mainforums/confused.gif[/img] ) could be run on state machines as you've said, leaving complex AI to determine fleet movements. (Again, depends on your definition of a fleet. [img]http://216.15.145.59/mainforums/wink.gif[/img] ) They only need to be calculated between missions.
As I (approximately) said in a previous post, I'm not trying to say you [i]should[/i] have been doing all this. But I [i]am[/i] interested in AI, and enjoy discussing the possibilities of it. [img]http://216.15.145.59/mainforums/smile.gif[/img]
I hope noone minds the slight veer off-topic that it's all taking. [img]http://216.15.145.59/mainforums/wink.gif[/img]
Your strategy pool system sounds nice - easily expandable, and with a large pool could get quite unpredictable (especially without inside knowledge of the engine). It also learns [i]enough[/i] to be an interesting challenge to the player. (Assuming, again, a large enough pool size.)
Does the strategy-pool idea go right to the top level (with a pool listing strategies such as "send 50% of all forces to attack main base, 20% to seek and destroy enemy movements and remainder to defend these choke-points" or "mad suicide rush at enemy HQ")? Or are those top decisions pre-planned at a mission level, based on the pre-written story? (For example, perhaps giving two general overall strategies that fit into the storyline, and allowing the computer to decide which to use.)
[quote]The whole post sounds a bit more defensive than I intended... please read it with that in mind.[/quote]
As I've mentioned, I'm not trying to be offensive with my posts either; I just enjoy discussing ideas and possibilities. [img]http://216.15.145.59/mainforums/smile.gif[/img]
Ahh. I use too many smilies. That kills my posts. Phooey... smilies are virtually punctuation for me... [img]http://216.15.145.59/mainforums/frown.gif[/img]
Biggles<font color=#AAFFAA>The Man Without a Face</font>
[quote]I hope noone minds the slight veer off-topic that it's all taking. [/quote]
You have no idea... [img]http://216.15.145.59/mainforums/biggrin.gif[/img]
One problem with using genetic AI is that a lot of time has to be invested in breeding it. In a game developement cycle, there is not likely to be much time available for this. Perhaps an alternative route is for one company to develope AIs, then sell them to game developers to implement in their games.
------------------
[b][url="http://www.minbari.co.uk/log12.2263/"]Required reading[/url][/b]
Never eat anything bigger than your own head.
The Balance provides. The Balance protects.
"Nonono...Is not [i]Great[/i] Machine. Is...[i]Not[/i]-so-Great Machine. It make good snow cone though." - Zathras
This is my last reply for a bit: I am leaving for a trip to visit a sick family member and goto a wedding so I am going to be offline for a week or so. (In other words, I am not dodging the debate, I am just not able to participate) Until then --
Biggles: Internally, the ItF code base made heavy use of the [i]factory[/i] and/or [i]abstract factory[/i] patterns. So, the way the behavior and strategy pools worked was like this...
There were one or more layers of pure abstract (non-obstantiable) base classes for both the strategy and behaviors. This defined the interface for the factories, for registering in the pools, and whatever common code was appropriate (like strategies knowing about the
task stack and tasks, etc.).
The next layer defined the strategy's controller type. This was where the idea of it being a "cap-ship strategy" or a "squadron strategy" was hardwired into the class chain in the form of branches.
Next were the strategy classes themselves. These all started with the base class appropriate to their agent. Once this was coded up, it was "registered" with the appropriate factory class to define what type of controller it was for, and which pool to put it in. Yes, this registration happened at runtime through a static initializer.
Now, to get a strategy, a controller would declare a pointer to it's strategy type (ex: CapShipStrategy *s [img]http://216.15.145.59/mainforums/wink.gif[/img] and declare and fill in an initialization structure. Next, the factory method is called which builds strategies, giving it the pointer to the strategy and a pointer to the init. structure. This function returns with the structure pointer allocated and filled in; ready to use. When the controller is done with the strategy, it just deletes it and calls the factory again to get the next strategy it needs.
The strategies were hand-coded, and thus not controlled by "scripts" in the traditional sense of the word. They were, however, constructed out of little snippets and building blocks from the base classes and from other, already implemented strategies. Thus, making a new one once there were a number of others already done wasn't too hard. (That pain was borne by the person making the first few; namely me. [img]http://216.15.145.59/mainforums/wink.gif[/img] )
GrantNZ:
The 'jedi' is a reference to my 9 month old twin daughters. Their middle name is 'Skye'. Look at my name and do the math... [img]http://216.15.145.59/mainforums/shad.gif[/img]
I would very much like to engage you in this debate, but I am afraid I am going to have to take a rain check. (see trip comment above) I'm also at work now, and I think you can guess what my boss would think of that use of my time. [img]http://216.15.145.59/mainforums/biggrin.gif[/img] Look for some replies on the 23rd or 24th...
Sorry -- john [img]http://216.15.145.59/mainforums/shad.gif[/img]
Biggles: The biggest problem is the tweaking. Once a decent system is designed, it can take as little as a few hours to breed some reasonable intelligence.
By "system," I refer to the AI's inputs, computation functions and outputs. The actual process (i.e. the actual jumbling of functions into an AI DNA-type string) is pretty well agreed on, and there are quite a few libraries out there that will handle that. The system is a lot harder to design though, and is different for every project. [img]http://216.15.145.59/mainforums/frown.gif[/img]
[i](I [b]am[/b] making a couple of guesses here... would anyone with true AI/GP experience like to confirm or deny what I've said?)[/i]
John: Nice names there. [img]http://216.15.145.59/mainforums/biggrin.gif[/img] I just pray you haven't named the twins Padme and Leia...
I'll look forward to the 23rd(ish). [img]http://216.15.145.59/mainforums/smile.gif[/img] I hope everything goes well!
While I have almost no computer programming experience (A little Applesoft from years ago), this has to be one of the most interesting threads I have read in a long time. Some of the points made about AIs and strategies could easily lead into a discussion about psychology and sociology. It’s really amazing how closely the study of AI is related to the study of the human mind.
------------------
[i]This is crazy. I hope I haven't brain my damaged.[/i]
I mean, if I went 'round saying I was an emperor just because some moistened bint had lobbed a scimitar at me, they'd put me away!
Biggles<font color=#AAFFAA>The Man Without a Face</font>
Not very surprising though, given the two relate quite closely.
John: Have a nice trip.
Why did you decide to use hard coded strategies over scripted ones that were, say, loaded in when the game first started? Using that method would have had the same overhead ingame, but would have allowed for 3rd party AI strategies much more easily.
Personally, I'm making my engine as scripted as I possibly can with my very limited engine programming experience.
------------------
[b][url="http://www.minbari.co.uk/log12.2263/"]Required reading[/url][/b]
Never eat anything bigger than your own head.
The Balance provides. The Balance protects.
"Nonono...Is not [i]Great[/i] Machine. Is...[i]Not[/i]-so-Great Machine. It make good snow cone though." - Zathras
Biggles:
Have you considered a pre-compiler type option? For example (thinking in Java), have an XML-type script read by the "pre-compiler" app, which would spit out serialized objects available to the game at run time?
I'm wondering about overhead at runtime, and also thinking that most of the changes will be before game time, during development/testing, and then maybe later for campaign development.
Freejack: The best programming discussions are those that don't require you to be a programmer to understand. [img]http://216.15.145.59/mainforums/smile.gif[/img]
You're right about the psychology thing. One of my most fanatical drives at the moment is to create a "people" AI - characters with personalities, opinions and memories. The sort of characters that you can ask "how are you?" and expect a good reply. And they'll ask the same of you. And make sense of the answer.
I am (as ever) ploughing through the design side and neglecting implementation completely. [img]http://216.15.145.59/mainforums/wink.gif[/img]
BTW, nice movie quote there... that's a movie that I've seen upwards of fifty times, and would happily see another fifty. [b]NEE!![/b]
Biggles/bobo: How much overhead is there, really, with scripting? Is it really [i]that[/i] great, especially compared to the rediculous overheads of graphics? (Actually, I'd like an educated answer to this if anyone's actually done the analysis. I'm hoping to use as much scripting as possible myself. And I admit that it depends on implementation and type of script etc.)
Wahey! A nice new page! [img]http://216.15.145.59/mainforums/biggrin.gif[/img]
[i]*Promising not to make such silly posts in future.*[/i]
Biggles<font color=#AAFFAA>The Man Without a Face</font>
Don't worry, we do it all the time. Check the post count in my profile. [img]http://216.15.145.59/mainforums/biggrin.gif[/img]
I don't actually think that there is that much overhead with scripting compared to the rest of the game, particularly on fast computers. I can't really see it having that big an effect on the performance. However, since I haven't even begun to design the scripting system yet (apart from think vaguely about how it would work and how other games might do it), there is plenty of time and I am open to and considering all options, including a precompiler thing. I am also considering having the scripting used only on loading a level, whereupon it would be parsed and the results stored in memory as events, animations, etc so that when needed they are right there. Once they are no longer needed (for example on completion of a task or end of a level) they would be removed.
------------------
[b][url="http://www.minbari.co.uk/log12.2263/"]Required reading[/url][/b]
Never eat anything bigger than your own head.
The Balance provides. The Balance protects.
"Nonono...Is not [i]Great[/i] Machine. Is...[i]Not[/i]-so-Great Machine. It make good snow cone though." - Zathras
Biggles<font color=#AAFFAA>The Man Without a Face</font>
PS for those that don't know, Grant and I are developing our engines pretty much in parallel, although we are working on different parts of our engines at the moment. He is currently creating the object editor so he can create objects for his engine, and I am working on my .LWO -> .IMO object converter so I can make my models in 3rd party editors and then convert them to my own format.
We have some interesting discussions over ICQ comparing the different routes we are taking to achieve the same goals for parts of our engines.
------------------
[b][url="http://www.minbari.co.uk/log12.2263/"]Required reading[/url][/b]
Never eat anything bigger than your own head.
The Balance provides. The Balance protects.
"Nonono...Is not [i]Great[/i] Machine. Is...[i]Not[/i]-so-Great Machine. It make good snow cone though." - Zathras
[i]sticking nose into other peoples business mode ON[/i]
It sounds like you two are actually focusing on complimentary activities. Are there any plans to use each other's work?
I keep thinking that a game/sim could/should be completely designed at the interface level, where the different functionalites are defined in the abstract. Then, the game itself would be created as one completed instance of the interface, and other games could be created by swapping out the AI, graphics, resource manager, etc., as needed.
If you think in the abstract [i]first[/i], then move to the detail, you can allow for a lot of possibilities.
But then, I'm sure you've already though of that.
[i]sticking nose into other peoples business mode OFF[/i]
[This message has been edited by bobo (edited 10-16-2001).]
[quote]Originally posted by GrantNZ:
[b]One of my most fanatical drives at the moment is to create a "people" AI - characters with personalities, opinions and memories. The sort of characters that you can ask "how are you?" and expect a good reply. And they'll ask the same of you. And make sense of the answer.
[/b][/quote]
Considering this, please read my article at Gamasutra.com - I think that you'd appreciate it - and I would like to develop a network of like-minded individuals with various areas of expertise to pursue the next level of interactive entertainment. John Walker and I have been off and on discussing this already. Here's the link for the article. If you're not a member of Gamasutra, you'll have to become one (no cost) in order to read articles. If you decided not to for some reason, let me know and I'll email you the article, if you're interested.
[url="http://www.gamasutra.com/features/20010914/littlejohn_01.htm"]http://www.gamasutra.com/features/20010914/littlejohn_01.htm[/url]
[b]NOOOOOOOOOOOOOOOOOOOOOOOOOOOOO!!![/b]
I typed a reply to people. It was [b]pages[/b] long. It was taking forever to send (probably too many smilies again). I pressed escape to stop sending to edit/repost. [b]THE WHOLE LOT GOT DELETED.[/b]
My deleted post supported the idea that scripting doesn't have much overhead. Since then I've realised that if the script contains code, you're essentially having to write an interpreter. And they [i]do[/i] run slow.
However, if the game engine relies on specialised code to run all the time, isn't that engine a bit too generalised? It would be better to spend time on the engine to expand its functionality to what is needed, rather than using a simple engine with hundreds of special-case scenarios. Special-cases are the bane of programming.
Scripts solely for parameters or containing a simple sequence of function calls (where the functions are implemented in the engine) have negligible overhead, and I can't see any problem with them.
bobo: Personally, I don't care where your nose goes, so stick it wherever you like. [img]http://216.15.145.59/mainforums/smile.gif[/img] I [i]like[/i] talking abaout all this stuff.
[quote]It sounds like you two are actually focusing on complimentary activities. Are there any plans to use each other's work?[/quote]
It would make sense, wouldn't it. However...
[list=1]
[*] I don't have Lightwave (or whatever it's called), thus I cannot use his object converter. Similarly, my own engine is somewhat specialised and uses proprietry formats, so it wouldn't be of much use to Biggles.
[*] I believe our engines are for different purposes. Mine concentrates heavily on animation, where his (I believe) is more general. My engine is a (useful) by-product of my work on my game project, whereas (I think) Biggles' engine is for its own sake.
[*] We learn a lot more this way! If I did the tools and he did the engine (or vice versa), we'd only learn a quarter as much. This way, we learn from our own experiences of building the whole thing, [i]and[/i] from the other person's experiences!
[/list=a]
[quote]I keep thinking that a game/sim could/should be completely designed at the interface level, where the different functionalites are defined in the abstract. Then, the game itself would be created as one completed instance of the interface, and other games could be created by swapping out the AI, graphics, resource manager, etc., as needed.[/quote]
I believe that either approach can create a great game. It depends what your priorities are.
It's more commercially viable to make a general engine. A simple FPS engine (e.g. Quake!) can be modified to a whole range of games, and modified with reasonable ease. If that engine was designed with a more complex interface in mind, it would likely be filled with features for that interface, and thus be less useful in a general sense.
That said, my engine is designed as you say, interface first. It is designed to be great at swordfighting and cinematics, and suboptimal for anything else. The advantages are many:
[list]
[*][i]Far[/i] better animation.
[*]Better character control (hopefully).
[*]Better flexibility and complexity regarding the type of game.
[/list]
The disadvantage is that it would need a fair bit of tweaking and rewriting to handle an FPS.
Randy: Thanks, that article is interesting and helpful, and you're right - I appreciate it. It helped concrete in my mind that I must focus on coinciding the player's and character's goals to make a game worthwhile.
I had a thought that surprised me whilst reading the article. (Yes, it is surprising that I had a thought, but that's not what I meant. [img]http://216.15.145.59/mainforums/wink.gif[/img] ) I realised that I often play games for my own goals, not my character's. For example, in one of my favourite games (Baldur's Gate II) my character is classified as "good." (As opposed to evil.) Yet I have him rob any open houses. My goal is to have a rich character (read: powerful; also read: able to complete the game with ease), yet the game doesn't morally distinguish between stealing and not. (Unless you're in full sight of a shop-keeper... so I don't do that.) Hopefully better character [i]interaction[/i] (the game does characterisation itself well) would help this... and so onwards goes my research.
I am very keen to join your network of like-minded individuals. I have never seen a viewpoint on the subject that hasn't benefitted me, whether enhancing my own ideas, giving me new ones, or strengthening them in disagreement. And I've never found a decent place to talk about these issues with anybody. Are there specific forums that you use for that topic?
(Would anyone mind pointing me towards other threads hereabouts that discuss these topics? I am not a fan of B5 (no offense, I just don't watch TV), nor am I particularly interested in space-combat game development at this stage. Thus, I don't scour these forums except for this thread (and the "Welcome GrantNZ!" one of course... I can't ignore that! [img]http://216.15.145.59/mainforums/wink.gif[/img] ), and my cursory exploration hasn't come up with any other discussions. (That said, the thread titles aren't always too helpful. [img]http://216.15.145.59/mainforums/wink.gif[/img] ))
Have you read any of Chris Crawford's essays on the topic? (I assume you've heard of him; it seems that most who are interested in [i]true[/i] interactive entertainment have.) I've read most of his [i]many[/i] essays (there must be hundreds!!) and they've been greatly inspirational for me... although I am following an implementation plan that he doesn't agree with, and I disagree with his Grampa/Annie analogy... but you get that with pioneer fields. If anyone wants/needs, I don't mind posting a little about what he's done (which is quite a lot!).
[i]*Stops ranting*[/i]
Anyone notice that my name is essentially "gee, rant"? [img]http://216.15.145.59/mainforums/smile.gif[/img]
[This message has been edited by GrantNZ (edited 10-17-2001).]
Biggles<font color=#AAFFAA>The Man Without a Face</font>
Randy: I'm up for joining that group. There is nothing I like more than a really good story told well, and being able to live a story would be even better.
Grant: 10,000 posts is nothing compared to the amount of time I've speant talking to you about this stuff. [img]http://216.15.145.59/mainforums/smile.gif[/img]
Really at the moment I am still in the beginning stages of developing the engine, mainly the graphics part of it. My first game is likely to be a simple car simulator without other cars (aim is to get the best time around a lap). That will be the proof-of-ability for me. If I can get that going, I will move on to the fully-fledged game engine. I am still bouncing between two ideas for a game. The original idea was for a 3D strategy game (Grant and I were going to pair up for this), but now I am leaning very heavily towards a 3rd person RPG using 3D graphics (because 3D graphics is one of my hobbies). I am very keen to create an RPG based on the "Exiles" trilogy by Melanie Rawn. The aim of this is to have a very story-driven game that also has nice looking graphics and good character developement. But don't expect much to appear in the next year or two. Remember, I'm still a newbie at game engine design and am doing just what seems sensible to me due to the lack of resource material.
The scripting part would mainly come into this for quests. This way quests could be added and tweaked quickly and easily, and there would not be a huge overhead. Just have a list of available quests in memory and whenever one becomes active, load in the data for that quest and use as needed. Of course this is something I have just thought of so it isn't all planned out perfectly yet.
[u]Differences between my engine and Grant's engine:[/u] We both have our own object file formats. However, I am using a 3rd party modeller and Grant is creating our own, so the methods for getting objects differ. If I wrote another converter I could load his objects, same for him if he altered his editor to save to my format.
The different purposes for the engines: Grants sprang out of a desire to create a lightsabre fighting sim, mine to create a scriptable game engine for an as-yet unknown game type, but known that it will have lots of story.
We often have huge conversations discussing the best way to do something, from calculating normals to skeletal animation. Sometimes we end up using the same method (as we did for normals), others we use a different one (as we will for animation). But we learn a lot because we also learn how the other did theirs.
[edit]It should be noted that Grant is a bit further ahead than me, having started earlier and having a shitload more free time. [img]http://216.15.145.59/mainforums/smile.gif[/img][/edit]
------------------
[b][url="http://www.minbari.co.uk/log12.2263/"]Required reading[/url][/b]
Never eat anything bigger than your own head.
The Balance provides. The Balance protects.
"Nonono...Is not [i]Great[/i] Machine. Is...[i]Not[/i]-so-Great Machine. It make good snow cone though." - Zathras
[This message has been edited by Biggles (edited 10-17-2001).]
I wish ICQ could count messages. [img]http://216.15.145.59/mainforums/wink.gif[/img]
[quote]The aim of this is to have a very story-driven game that also has nice looking graphics and good character developement.[/quote]
If I may ask, how do [i]you[/i] define "story-driven" and "character development"? (I ask this because they're essentially buzzwords. Somebody told me once that they wanted to make a realistic version of CounterStrike. I asked if a shot to the head would instantly kill. He said "only sometimes." Where's the realism there?! So I'm curious as to which aspects of story and character you're focusing on.)
[quote]Remember, I'm still a newbie at game engine design and am doing just what seems sensible to me due to the lack of resource material.[/quote]
That's so often the best way of doing things. As someone was telling me recently, a student solved two mathematical problems once to which noone thought there [i]was[/i] a solution, because he thought it was a homework assignment. (He was actually rather stressed - the lecturer had put three problems on the board and he couldn't solve the third one. [img]http://216.15.145.59/mainforums/wink.gif[/img] ) So stuff resource material! [img]http://216.15.145.59/mainforums/biggrin.gif[/img]
Converting your objects to mine would be tricky, because (IIRC) you're using a single mesh. Mine requires the mesh broken into pieces for each bone. It's certainly feasible, but it would take time to write the converter! Going the other way (.g3o->.imo) would be easier... as long as my mesh only used one texture. Animation is a [b]completely[/b] different story. I really am going out on a limb with my animation methods. [img]http://216.15.145.59/mainforums/smile.gif[/img]
Hey, [b]used[/b] to have shitloads more free time. [img]http://216.15.145.59/mainforums/wink.gif[/img] I only have four hours to myself each day now (excepting weekends). You'll probably overtake me!
[quote]Originally posted by GrantNZ:
[b]Right. Let's try this again. [i]*sigh*[/i]
I had a thought that surprised me whilst reading the article. (Yes, it is surprising that I had a thought, but that's not what I meant. [img]http://216.15.145.59/mainforums/wink.gif[/img] ) I realised that I often play games for my own goals, not my character's. For example, in one of my favourite games (Baldur's Gate II) my character is classified as "good." (As opposed to evil.) Yet I have him rob any open houses. My goal is to have a rich character (read: powerful; also read: able to complete the game with ease), yet the game doesn't morally distinguish between stealing and not. (Unless you're in full sight of a shop-keeper... so I don't do that.) Hopefully better character [i]interaction[/i] (the game does characterisation itself well) would help this... and so onwards goes my research.)[/b][/quote]
One of the things that I'm focused on is expanding interactive entertainment beyond the preconceptions attached to the word "game". I have nothing against games, and I like playing some games. But I am interested in developing something that is more like "interactive drama", or an interactive "episode", or interactive "drama-driven" story. I think that preconceptions about what "games" should be stunt the development of other kinds of interactive development. So - in the example you gave, if the game were drama-driven, you'd have an emotional response to your actions. Those actions would have dramatic consequences, and you'd have an emotional response, as would NPC's, to those consequences. In other words, you'd be involved in dramatic actions, instead of only strategic actions. Your goals would have to do with a dramatic situation, instead of just "winning" a game.
[quote][b]I am very keen to join your network of like-minded individuals. I have never seen a viewpoint on the subject that hasn't benefitted me, whether enhancing my own ideas, giving me new ones, or strengthening them in disagreement. And I've never found a decent place to talk about these issues with anybody. Are there specific forums that you use for that topic?
(Would anyone mind pointing me towards other threads hereabouts that discuss these topics? [/b][/quote]
From time to time there have been discussions here at Firstones about interactive storytelling, and about the non-linear, non-branching story system that was to be used in B5:ITF, but I don't know if those threads are archived, I suspect not.
Since we are expanding our topics at Firstones, perhaps folks would like to have an area for discussing interactive storytelling, interactive drama, and character AI? What better place to meet than Firstones?
In the meantime you may want to try these URL's: [url="http://www-ksl.stanford.edu/projects/BB1/"]http://www-ksl.stanford.edu/projects/BB1/[/url] [url="http://www-ksl.stanford.edu/abstracts_by_author/Hayes-Roth,B.papers.html"]http://www-ksl.stanford.edu/abstracts_by_author/Hayes-Roth,B.papers.html[/url] [url="http://www.cs.cmu.edu/groups/oz/"]http://www.cs.cmu.edu/groups/oz/[/url] [url="http://www.red3d.com/cwr/steer/"]http://www.red3d.com/cwr/steer/[/url] [url="http://www-ksl.stanford.edu/projects/CAIT/publicity.html"]http://www-ksl.stanford.edu/projects/CAIT/publicity.html[/url] [url="http://www.tiac.net/users/papajoe/toolbox/toolbox.htm"]http://www.tiac.net/users/papajoe/toolbox/toolbox.htm[/url] [url="http://www.work@dreamtheater.com/"]http://www.work@dreamtheater.com/[/url]
[b] [quote] Have you read any of Chris Crawford's essays on the topic? (I assume you've heard of him; it seems that most who are interested in [i]true[/i] interactive entertainment have.) I've read most of his [i]many[/i] essays (there must be hundreds!!) and they've been greatly inspirational for me... although I am following an implementation plan that he doesn't agree with, and I disagree with his Grampa/Annie analogy... but you get that with pioneer fields. If anyone wants/needs, I don't mind posting a little about what he's done (which is quite a lot!).
[/b][/quote]
Yes. As a matter of fact Chris and I have sent a few emails back and forth and I have been invited to his yearly gathering up in Oregon, but so far haven't been able to attend. I think that he and his group will come up with the beginnings of a new kind of entertainment. Do you regularly go to his Website? ( [url="http://www.erasmatazz.com/"]http://www.erasmatazz.com/[/url] ). His transcripts of the yearly gatherings are a fascinating look into the debate about which direction the interactive storytelling evolution/ revolution should take.
Comments
------------------
[b][url="http://www.minbari.co.uk/log12.2263/"]Required reading[/url][/b]
Never eat anything bigger than your own head.
The Balance provides. The Balance protects.
"Nonono...Is not [i]Great[/i] Machine. Is...[i]Not[/i]-so-Great Machine. It make good snow cone though." - Zathras
In other words, you can’t do everything, so you have to decide what’s most important, and than try to keep centered on that priority for the (usually too little) amount of time you have to produce a product. In our case the priorities were replay-ability, unpredictability, good, canon storytelling without being on rails, and FUN!
[This message has been edited by Randy (edited 10-13-2001).]
bobo: Nope, no service experience. I got most of my knowledge of command organizations from friends, coworkers, reading a lot of "space opera" SciFi, and Tom Clancy. The real military is so much more complicated that I do not claim to have much knowledge of how "it really works".
Jack: That's a very nice compliment, thank you. I've always believed that most people can understand most things: so long as enough background and context can be given to make what is being explained a "frame of reference" in which too explain it. Unfortunately, artistic talent and "a good eye" can't be explained to a non-artist like myself. You'll still get "programmer art". [img]http://216.15.145.59/mainforums/wink.gif[/img] (although you may be able to teach me why it stinks, or at least be able to spot on my own that it does.) "I detect the foul reek of programmer art on my work." [img]http://216.15.145.59/mainforums/biggrin.gif[/img]
BigB: Yes. Divide and conquer. Break complex things into smaller not-so-complex things. Keep dividing until you can see how to solve the problem. Figure out how to connect the layers and make all the little pieces fit together. Debug. Look at what isn't working (aka. refactor). Fix it and debug again. Repeat until you are out of money.
Throw in a little noise, randomness, or a human, and you won't be able to predict the micro scale but can depend upon the direction of the macro scale.
Greetings GrantNZ: Welcome to the company of our merry little band. [img]http://216.15.145.59/mainforums/cool.gif[/img]
Don't worry about insulting me: I am well aware of the weaknesses in the system as designed; constraints imposed by the goals, design, and budget of the game; and the need to minimize risk affecting the chances I was willing to take.
[i]I'm working on a reply to some of your issues; but I need to stop for a bit... and I don't want to leave all of the above sitting in a browser window on a Win32 box... which might crash at any moment without warning.[/i] :-/
[This message has been edited by John Walker (edited 10-13-2001).]
You're one of the few programmers I know who doesn't blast a condesending(sp?) "artists are stupid" programmer type ego at the people around you.
... and I think you judge yourself too harshly in the way of artwork... Given time, you could learn to do work much better than mine, like Marcs for example, and given that same time I could learn to code better.
[img]http://216.15.145.59/mainforums/biggrin.gif[/img]
I think the key here is the respect you are getting is because of the respect you give...
[img]http://216.15.145.59/mainforums/wink.gif[/img]
Here's what I was working on, and I want to share the implementational stuff, but I don't have time to re-write it (since the jedi have been waking us up at 3:30am [i]every night[/i] for the last two weeks).
[i]Let's review from a previous thread.
Every ship and non-physical command agent has a [/i]Controller[i]. Controllers select [/i]Strategies[i] which do the "heavy thinking". Strategies (through the task stack) cause [/i]Behaviors[i] to be run which do the feedback control (flight, shooting, aiming, not running into things) for the physical ships. Okay, onto the new stuff.[/i]
(some of my background, for context: [img]http://216.15.145.59/mainforums/wink.gif[/img]
My academic background was in low-resource AI (aka. pseudo int. or PI) using GA-trained neural nets, fuzzy systems, and genetic programming (GP). Thus, I think I understand what you are getting at...)
[i]Would the B5:ItF AI have been able to come up with the "wacky, zainy, out-of-the-box" type of answers that are routinely (cough) created (as a rare gem buried in a lot of rough) by such alife systems?[/i]
The short answer is 'no'. There was some very rudimentary machine learning/adaption in the game AI's design, but nothing approaching the complexity of even the most simple GA or GP.
(this is redundant with what Randy said)
Remember that any game is not a research project; it is a product. Products have schedules, budgets, and oversight. Project directors need to minimize risk and the creation of software that won't ship as part of the final product (since programming time = money). Automatic AI training frameworks and modifications to the game engine and code architecture to support them are definitely in that category.
When I was interviewing and first started, I would talk to Dan (aka. PDF), Greg (Tomko-Pavia, he did the AI for SWAT2 and was our technical director/producer/advisor at YE), Dave (aka. the wookie) and others about using machine learning and/or a GA to train the game to think on its own (and get the cool sorts of spontaneous effects you are talking about). The thing I kept hearing over and over again was "that's great, and would be very cool, but can you absolutely, positively, guarantee it will work every time? Can you guarantee that you can meet this tight schedule?" The answer, as you well know having worked with these sorts of systems, was no. Trying to schedule when you'll get an alife system to converge and 'work' is like trying to predict when a herd of cats are going to all stop and stretch.
This was before I understood how the missions had to work to support the story... then I got even more doubtful.
Another big thing to remember is that ItF was not meant to be a stand-alone adaptive tactical exploration simulator. The game was primarliy story driven, and gameplay experience for the player was [i][b]everything[/b][/i]. (As it should and needs to be for a game.)
What you are talking about (I believe) is something built to surprise, amaze, and out-think the player. So how do you keep the game from a) kicking thier butt much of the time, b) using boring, lame, ineffective, or "not fun" methods against them, c) destabilizing or getting stuck in local optima, d) being intentionally decieved and manipulated by the player (not the tactics, but the [i]evolution[/i] of the tactics), etc.
Play balancing and controlling a chaotic emergent behavior system is bad enough even without letting the thing evolve itself over time. Yikes! [img]http://216.15.145.59/mainforums/eek.gif[/img]
Don't get me wrong: what you are describing is [i]extremely[/i] cool, it is just outside the scope of what the AI for the project could hope to do.
Also remember that I had about 20% of a 233 P2 to do [i]everything that is AI[/i]. That included mission selection, mission management, faction planning, machine learning, tracking the player, strategic planning, tactical control, music AI, and the flight/turret mechanics of 1000 ships (and 'n' missiles at any given time). I didn't have any cycles left to be doing a "directed stochastic search" (aka. a GA) and all the necessary fitness testing in the background while the game was running.
[i]So, how did it work?[/i]
Tactical and strategic decision making: Every agent, be they the fleet commander or fighter AI had a set of current orders which corresponded to one or more goals. This would cause the agent to request a strategy from a pool of one or more strategies which fell under that category. Example categories are things like 'aggressive attack', 'cautious attack', 'defense', etc.
Strategy pools might only have one strategy in the "go to point XYZ" category, and 3-whatever in the 'cautious attack' pool.
The choice of strategy category is weighted random (FuSM or FSM with prob. state transition) biased by emotional state, species/faction, skill level, intel, age of intel, etc. etc. Once which "pool" of strategies is chosen, one of them is randomly selected based upon the skill level of the agent, the recent successfulness of the strategies in that pool, etc. So, in other words, strategies could not be created out of air, they had to be in the list. If the "diversionary attack with strong attack elsewhere" was coded up and placed in the pool, it could be chosen.
Note, however, that creating a new strategy (or behavior, as I have discussed before, they also had these "categories" with "pools" of behaviors from which one was chosen as needed) was not very difficult. Inherit from the right class, code it up (using the existing ones as examples and places to snag code snippets from), register it with the right "strategy pool" and bingo: you've got a new strategy. This not only allowed anyone on the team to work on the game's AI without being an expert on it, it also made the possibility of patches and mission pack's adding depth to the AI (or deleting lemons) very easy. (no, a script editor and/or user AI tool was not planned for ItF, but was discussed for if there was a sequel)
Strategies would also be coded for the particular level. Granted, some would be quite similar, but more importantly, the very high level AIs could have some fairly elaborate strategies written for them (like the example you describe) which would result in orders that supordinates could execute with relatively simple strategies.
Non-physical command agents would execute their strategy which would generate orders for subordinates, process reports from subordinates, and generate reports for superiors. (incoming orders would be handled by strategy if possible, but might force the strategy to become inappropriate and thus be changed.)
The game engine was very modular, so the idea had been discussed about making a "homeworld-like" (3dRTS) game in the B5 universe. (yeah, we were really getting ahead of ourselves here, but what the heck; you are going to talk about something at lunch...) Where ItF's focus was on story and first-person game play, the focus for the RTS game would be strategic and multi-ship tactical. For that game, AI (particularly high-level AI) would be critical to the game's gameplay quality and would make a much stronger case for the sort of work you describe.
In all fairness to Mr. Truth (my old nemesis), I should mention that most of the high-level agents were designed on paper, stubbed and frameworked in code (like a FuSM with no input parameter sets), and consisted mostly of a bunch of hand-written notes of the various strategies, etc. that I was going to implement. Thus, when I talk about "how things worked" at that level, I'm really talking about how I was planing to build version 1. (of probably 3). This was also an area that was discussed for possible cuts in effort... the game, because of the strong story element, could survive with relatively simple and rather shallow strategic thinking in the high-level AIs. Most of the time they were going to be getting their orders almost directly from the story manager anyway, and the "open loop campaign" was just a side-effect 'it would be neat if it did this' feature. Now, looking back on the schedule, etc. I believe that what I just outlined (cheezy high-level AI) is probably what the game would have shipped with... but even the first mission pack or sequel would have been able to "correct the problem" (or at least improve it). I am [i]not[/i] talking about the formation, squadron, capship, and/or captain level controllers here. Those [b]had[/b] to be fleshed out, balanced, and given depth (variety) for the game to deliver what was being promised. I am confident that those requirements would have been met (but I don't know if I would have gotten any sleep for about, say, 6 months before release. Luckily sleep is an optional luxury for the weak. [img]http://216.15.145.59/mainforums/rolleyes.gif[/img] )
The pools and all that stuff was working and tested in the lower levels, so there is no reason it wouldn't have worked in agents up the chain of command.
Oh, and a disclaimer all the regulars are sick of hearing... When I talk about "my" or the ItF AI, what I am refering to is the team's collaborative effort to design and build the AI subsystem for the game. Everyone on the team contributed. Having said that, the varous AI components were my primary responsibility so I take any blame there is to be had for problems, weaknesses, or failures.
The whole post sounds a bit more defensive than I intended... please read it with that in mind.
[img]http://216.15.145.59/mainforums/shad.gif[/img]
[This message has been edited by John Walker (edited 10-14-2001).]
(Jack is too nice to me)
[B]Here's what I was working on, and I want to share the implementational stuff, but I don't have time to re-write it (since the jedi have been waking us up at 3:30am [i]every night[/i] for the last two weeks).
B][/quote]
Apparently my parents could set their clock by me. [img]http://216.15.145.59/mainforums/biggrin.gif[/img]
Just one quick question while I think about this stuff: Were these pools of strategies hard coded into the game, or did you have a "strategy" class (or set of classes), which you then used to create strategies by using scripting, and for each scripted strategy create an instance of the strategy class and fill it from the script?
------------------
[b][url="http://www.minbari.co.uk/log12.2263/"]Required reading[/url][/b]
Never eat anything bigger than your own head.
The Balance provides. The Balance protects.
"Nonono...Is not [i]Great[/i] Machine. Is...[i]Not[/i]-so-Great Machine. It make good snow cone though." - Zathras
John: Thanks for the discussion - very interesting. [img]http://216.15.145.59/mainforums/smile.gif[/img]
Firstly...
[quote](since the jedi have been waking us up at 3:30am every night for the last two weeks)[/quote]
The "jedi"? [img]http://216.15.145.59/mainforums/smile.gif[/img]
[quote]Remember that any game is not a research project[...][/quote]
I completely disagree. Although I'll happily admit that the vast bulk of research is going into graphics. (On which note I must say the new Unreal engine is looking nice...)
That will have to change one day though. To keep people's interest companies will have to (I hope) research AI a little better. It'll only take one ground-breaking AI-enabled product to force everyone else into the trend. (Who wants to play a standard FPS after seeing the AI in Half-Life? etc.)
[quote]The thing I kept hearing over and over again was "that's great, and would be very cool, but can you absolutely, positively, guarantee it will work every time? Can you guarantee that you can meet this tight schedule?"[/quote]
Sure, and it's a very valid point. (What am I saying; I don't need to tell you that! [img]http://216.15.145.59/mainforums/wink.gif[/img] ) Like anything stochastic, I suppose you have to decide whether you can build a 95% (or whatever) confidence in an AI engine... Anything random, iterative and creative rolled into one will have chances of failure... It's a matter of getting good [i]enough[/i] and taking advantage of the failures. So the enemy screws up a tactical maneuvre - that's "human." It also presents a chance for characters to poke fun at the enemy. The same with friendly-side mistakes.
That said, who can guarantee that they can even produce a 60% accurate AI. [img]http://216.15.145.59/mainforums/smile.gif[/img]
That said, people [i]have[/i] been able to use true AI to positive affect. We just need to brainwash money-controllers to take risks. [img]http://216.15.145.59/mainforums/wink.gif[/img]
[quote]This was before I understood how the missions had to work to support the story... then I got even more doubtful.[/quote]
To that I can only say, the system will work if the AI is allowed to generate the story as well. (Or at least thoroughly understand the story.) But that's a whoooooooooole other discussion. (And a personal research project for myself.)
[This message has been edited by GrantNZ (edited 10-15-2001).]
[quote]What you are talking about (I believe) is something built to surprise, amaze, and out-think the player. So how do you keep the game from a) kicking thier butt much of the time,[/quote]
My main priority is to create a game that I cannot predict. I never want to create a game where my enjoyment is sullied by knowing what's going on behind the scenes. [img]http://216.15.145.59/mainforums/smile.gif[/img]
One feature of the fitness function (for GP in any case) could be to seek evenness. If the player seems incapable of defending extremely intelligent attacks, use only moderately successful attacks. Increase usage of awesome attacks as the player increases his tactical knowledge.
Implementation of that of course depends heavily on the game itself. My current project can most simply be stated as a Tekken/Street Fighter-type game (although it's vastly more complex). My aim (in story mode) is to allow the final battle to take up to half an hour. (Yes, definately more complex than Tekken. [img]http://216.15.145.59/mainforums/smile.gif[/img] ) A big feature of the AI will be to act [i]human[/i]... the player will need restful times in the battle, so the opponent should too. The opponent could turn playful if the player isn't skilfull enough. The opponent could play dirty if he's losing badly.
So it's possible to find that balance - you just need an AI system that doesn't look purely at battle victories.
[quote]b) using boring, lame, ineffective, or "not fun" methods against them,[/quote]
AIs these days do that anyway. FPS enemies stand still and fire until they die. StarCraft enemies perform constant tank rushes. A game that gives 10% creativity is far more valued by me than one that provides 100% consistant action.
[quote]c) destabilizing or getting stuck in local optima,[/quote]
Yep, that's a problem for which I have no answer. [img]http://216.15.145.59/mainforums/frown.gif[/img]
[quote]d) being intentionally decieved and manipulated by the player (not the tactics, but the evolution of the tactics), etc.[/quote]
Sure, another one that to which I can't throw up a defense - yet. [img]http://216.15.145.59/mainforums/wink.gif[/img] I feel this might be another issue that we must let the AI sort out itself? Why shouldn't an AI prepare some nasty tricks, on the basis that the player is "playing dumb" to evolve poor computer tactics? The AI doesn't have to [i]use[/i] them, but just have them ready in case the player [i]does[/i] try to take advantage of the AI.
[quote]Play balancing and controlling a chaotic emergent behavior system is bad enough even without letting the thing evolve itself over time.[/quote]
Again, let the AI do that. Seek balance rather than primarily seeking to win battles.
[quote]Also remember that I had about 20% of a 233 P2 to do everything that is AI. [...] ...and the flight/turret mechanics of 1000 ships...[/quote]
Sure, an understandable limitation. [img]http://216.15.145.59/mainforums/smile.gif[/img] Damn those graphics programmers. [img]http://216.15.145.59/mainforums/wink.gif[/img] It does depend, however, on what level you want "interesting" AI to emerge. Fighters and capships (using Wing Commander terminology here - I'm not too familiar with B5 concepts [img]http://216.15.145.59/mainforums/confused.gif[/img] ) could be run on state machines as you've said, leaving complex AI to determine fleet movements. (Again, depends on your definition of a fleet. [img]http://216.15.145.59/mainforums/wink.gif[/img] ) They only need to be calculated between missions.
As I (approximately) said in a previous post, I'm not trying to say you [i]should[/i] have been doing all this. But I [i]am[/i] interested in AI, and enjoy discussing the possibilities of it. [img]http://216.15.145.59/mainforums/smile.gif[/img]
I hope noone minds the slight veer off-topic that it's all taking. [img]http://216.15.145.59/mainforums/wink.gif[/img]
Your strategy pool system sounds nice - easily expandable, and with a large pool could get quite unpredictable (especially without inside knowledge of the engine). It also learns [i]enough[/i] to be an interesting challenge to the player. (Assuming, again, a large enough pool size.)
Does the strategy-pool idea go right to the top level (with a pool listing strategies such as "send 50% of all forces to attack main base, 20% to seek and destroy enemy movements and remainder to defend these choke-points" or "mad suicide rush at enemy HQ")? Or are those top decisions pre-planned at a mission level, based on the pre-written story? (For example, perhaps giving two general overall strategies that fit into the storyline, and allowing the computer to decide which to use.)
[quote]The whole post sounds a bit more defensive than I intended... please read it with that in mind.[/quote]
As I've mentioned, I'm not trying to be offensive with my posts either; I just enjoy discussing ideas and possibilities. [img]http://216.15.145.59/mainforums/smile.gif[/img]
Ahh. I use too many smilies. That kills my posts. Phooey... smilies are virtually punctuation for me... [img]http://216.15.145.59/mainforums/frown.gif[/img]
You have no idea... [img]http://216.15.145.59/mainforums/biggrin.gif[/img]
One problem with using genetic AI is that a lot of time has to be invested in breeding it. In a game developement cycle, there is not likely to be much time available for this. Perhaps an alternative route is for one company to develope AIs, then sell them to game developers to implement in their games.
------------------
[b][url="http://www.minbari.co.uk/log12.2263/"]Required reading[/url][/b]
Never eat anything bigger than your own head.
The Balance provides. The Balance protects.
"Nonono...Is not [i]Great[/i] Machine. Is...[i]Not[/i]-so-Great Machine. It make good snow cone though." - Zathras
Biggles: Internally, the ItF code base made heavy use of the [i]factory[/i] and/or [i]abstract factory[/i] patterns. So, the way the behavior and strategy pools worked was like this...
There were one or more layers of pure abstract (non-obstantiable) base classes for both the strategy and behaviors. This defined the interface for the factories, for registering in the pools, and whatever common code was appropriate (like strategies knowing about the
task stack and tasks, etc.).
The next layer defined the strategy's controller type. This was where the idea of it being a "cap-ship strategy" or a "squadron strategy" was hardwired into the class chain in the form of branches.
Next were the strategy classes themselves. These all started with the base class appropriate to their agent. Once this was coded up, it was "registered" with the appropriate factory class to define what type of controller it was for, and which pool to put it in. Yes, this registration happened at runtime through a static initializer.
Now, to get a strategy, a controller would declare a pointer to it's strategy type (ex: CapShipStrategy *s [img]http://216.15.145.59/mainforums/wink.gif[/img] and declare and fill in an initialization structure. Next, the factory method is called which builds strategies, giving it the pointer to the strategy and a pointer to the init. structure. This function returns with the structure pointer allocated and filled in; ready to use. When the controller is done with the strategy, it just deletes it and calls the factory again to get the next strategy it needs.
The strategies were hand-coded, and thus not controlled by "scripts" in the traditional sense of the word. They were, however, constructed out of little snippets and building blocks from the base classes and from other, already implemented strategies. Thus, making a new one once there were a number of others already done wasn't too hard. (That pain was borne by the person making the first few; namely me. [img]http://216.15.145.59/mainforums/wink.gif[/img] )
GrantNZ:
The 'jedi' is a reference to my 9 month old twin daughters. Their middle name is 'Skye'. Look at my name and do the math... [img]http://216.15.145.59/mainforums/shad.gif[/img]
I would very much like to engage you in this debate, but I am afraid I am going to have to take a rain check. (see trip comment above) I'm also at work now, and I think you can guess what my boss would think of that use of my time. [img]http://216.15.145.59/mainforums/biggrin.gif[/img] Look for some replies on the 23rd or 24th...
Sorry -- john [img]http://216.15.145.59/mainforums/shad.gif[/img]
By "system," I refer to the AI's inputs, computation functions and outputs. The actual process (i.e. the actual jumbling of functions into an AI DNA-type string) is pretty well agreed on, and there are quite a few libraries out there that will handle that. The system is a lot harder to design though, and is different for every project. [img]http://216.15.145.59/mainforums/frown.gif[/img]
[i](I [b]am[/b] making a couple of guesses here... would anyone with true AI/GP experience like to confirm or deny what I've said?)[/i]
John: Nice names there. [img]http://216.15.145.59/mainforums/biggrin.gif[/img] I just pray you haven't named the twins Padme and Leia...
I'll look forward to the 23rd(ish). [img]http://216.15.145.59/mainforums/smile.gif[/img] I hope everything goes well!
------------------
[i]This is crazy. I hope I haven't brain my damaged.[/i]
I mean, if I went 'round saying I was an emperor just because some moistened bint had lobbed a scimitar at me, they'd put me away!
John: Have a nice trip.
Why did you decide to use hard coded strategies over scripted ones that were, say, loaded in when the game first started? Using that method would have had the same overhead ingame, but would have allowed for 3rd party AI strategies much more easily.
Personally, I'm making my engine as scripted as I possibly can with my very limited engine programming experience.
------------------
[b][url="http://www.minbari.co.uk/log12.2263/"]Required reading[/url][/b]
Never eat anything bigger than your own head.
The Balance provides. The Balance protects.
"Nonono...Is not [i]Great[/i] Machine. Is...[i]Not[/i]-so-Great Machine. It make good snow cone though." - Zathras
Have you considered a pre-compiler type option? For example (thinking in Java), have an XML-type script read by the "pre-compiler" app, which would spit out serialized objects available to the game at run time?
I'm wondering about overhead at runtime, and also thinking that most of the changes will be before game time, during development/testing, and then maybe later for campaign development.
------------------
bobo
<*>
B5:ITF
You're right about the psychology thing. One of my most fanatical drives at the moment is to create a "people" AI - characters with personalities, opinions and memories. The sort of characters that you can ask "how are you?" and expect a good reply. And they'll ask the same of you. And make sense of the answer.
I am (as ever) ploughing through the design side and neglecting implementation completely. [img]http://216.15.145.59/mainforums/wink.gif[/img]
BTW, nice movie quote there... that's a movie that I've seen upwards of fifty times, and would happily see another fifty. [b]NEE!![/b]
Biggles/bobo: How much overhead is there, really, with scripting? Is it really [i]that[/i] great, especially compared to the rediculous overheads of graphics? (Actually, I'd like an educated answer to this if anyone's actually done the analysis. I'm hoping to use as much scripting as possible myself. And I admit that it depends on implementation and type of script etc.)
Have fun all...
[i]*Promising not to make such silly posts in future.*[/i]
I don't actually think that there is that much overhead with scripting compared to the rest of the game, particularly on fast computers. I can't really see it having that big an effect on the performance. However, since I haven't even begun to design the scripting system yet (apart from think vaguely about how it would work and how other games might do it), there is plenty of time and I am open to and considering all options, including a precompiler thing. I am also considering having the scripting used only on loading a level, whereupon it would be parsed and the results stored in memory as events, animations, etc so that when needed they are right there. Once they are no longer needed (for example on completion of a task or end of a level) they would be removed.
------------------
[b][url="http://www.minbari.co.uk/log12.2263/"]Required reading[/url][/b]
Never eat anything bigger than your own head.
The Balance provides. The Balance protects.
"Nonono...Is not [i]Great[/i] Machine. Is...[i]Not[/i]-so-Great Machine. It make good snow cone though." - Zathras
We have some interesting discussions over ICQ comparing the different routes we are taking to achieve the same goals for parts of our engines.
------------------
[b][url="http://www.minbari.co.uk/log12.2263/"]Required reading[/url][/b]
Never eat anything bigger than your own head.
The Balance provides. The Balance protects.
"Nonono...Is not [i]Great[/i] Machine. Is...[i]Not[/i]-so-Great Machine. It make good snow cone though." - Zathras
It sounds like you two are actually focusing on complimentary activities. Are there any plans to use each other's work?
I keep thinking that a game/sim could/should be completely designed at the interface level, where the different functionalites are defined in the abstract. Then, the game itself would be created as one completed instance of the interface, and other games could be created by swapping out the AI, graphics, resource manager, etc., as needed.
If you think in the abstract [i]first[/i], then move to the detail, you can allow for a lot of possibilities.
But then, I'm sure you've already though of that.
[i]sticking nose into other peoples business mode OFF[/i]
[This message has been edited by bobo (edited 10-16-2001).]
[b]One of my most fanatical drives at the moment is to create a "people" AI - characters with personalities, opinions and memories. The sort of characters that you can ask "how are you?" and expect a good reply. And they'll ask the same of you. And make sense of the answer.
[/b][/quote]
Considering this, please read my article at Gamasutra.com - I think that you'd appreciate it - and I would like to develop a network of like-minded individuals with various areas of expertise to pursue the next level of interactive entertainment. John Walker and I have been off and on discussing this already. Here's the link for the article. If you're not a member of Gamasutra, you'll have to become one (no cost) in order to read articles. If you decided not to for some reason, let me know and I'll email you the article, if you're interested.
[url="http://www.gamasutra.com/features/20010914/littlejohn_01.htm"]http://www.gamasutra.com/features/20010914/littlejohn_01.htm[/url]
I typed a reply to people. It was [b]pages[/b] long. It was taking forever to send (probably too many smilies again). I pressed escape to stop sending to edit/repost. [b]THE WHOLE LOT GOT DELETED.[/b]
Curses!
Biggles: 10,000 posts. You freak. (j/k)
My deleted post supported the idea that scripting doesn't have much overhead. Since then I've realised that if the script contains code, you're essentially having to write an interpreter. And they [i]do[/i] run slow.
However, if the game engine relies on specialised code to run all the time, isn't that engine a bit too generalised? It would be better to spend time on the engine to expand its functionality to what is needed, rather than using a simple engine with hundreds of special-case scenarios. Special-cases are the bane of programming.
Scripts solely for parameters or containing a simple sequence of function calls (where the functions are implemented in the engine) have negligible overhead, and I can't see any problem with them.
bobo: Personally, I don't care where your nose goes, so stick it wherever you like. [img]http://216.15.145.59/mainforums/smile.gif[/img] I [i]like[/i] talking abaout all this stuff.
[quote]It sounds like you two are actually focusing on complimentary activities. Are there any plans to use each other's work?[/quote]
It would make sense, wouldn't it. However...
[list=1]
[*] I don't have Lightwave (or whatever it's called), thus I cannot use his object converter. Similarly, my own engine is somewhat specialised and uses proprietry formats, so it wouldn't be of much use to Biggles.
[*] I believe our engines are for different purposes. Mine concentrates heavily on animation, where his (I believe) is more general. My engine is a (useful) by-product of my work on my game project, whereas (I think) Biggles' engine is for its own sake.
[*] We learn a lot more this way! If I did the tools and he did the engine (or vice versa), we'd only learn a quarter as much. This way, we learn from our own experiences of building the whole thing, [i]and[/i] from the other person's experiences!
[/list=a]
[quote]I keep thinking that a game/sim could/should be completely designed at the interface level, where the different functionalites are defined in the abstract. Then, the game itself would be created as one completed instance of the interface, and other games could be created by swapping out the AI, graphics, resource manager, etc., as needed.[/quote]
I believe that either approach can create a great game. It depends what your priorities are.
It's more commercially viable to make a general engine. A simple FPS engine (e.g. Quake!) can be modified to a whole range of games, and modified with reasonable ease. If that engine was designed with a more complex interface in mind, it would likely be filled with features for that interface, and thus be less useful in a general sense.
That said, my engine is designed as you say, interface first. It is designed to be great at swordfighting and cinematics, and suboptimal for anything else. The advantages are many:
[list]
[*][i]Far[/i] better animation.
[*]Better character control (hopefully).
[*]Better flexibility and complexity regarding the type of game.
[/list]
The disadvantage is that it would need a fair bit of tweaking and rewriting to handle an FPS.
Randy: Thanks, that article is interesting and helpful, and you're right - I appreciate it. It helped concrete in my mind that I must focus on coinciding the player's and character's goals to make a game worthwhile.
I had a thought that surprised me whilst reading the article. (Yes, it is surprising that I had a thought, but that's not what I meant. [img]http://216.15.145.59/mainforums/wink.gif[/img] ) I realised that I often play games for my own goals, not my character's. For example, in one of my favourite games (Baldur's Gate II) my character is classified as "good." (As opposed to evil.) Yet I have him rob any open houses. My goal is to have a rich character (read: powerful; also read: able to complete the game with ease), yet the game doesn't morally distinguish between stealing and not. (Unless you're in full sight of a shop-keeper... so I don't do that.) Hopefully better character [i]interaction[/i] (the game does characterisation itself well) would help this... and so onwards goes my research.
I am very keen to join your network of like-minded individuals. I have never seen a viewpoint on the subject that hasn't benefitted me, whether enhancing my own ideas, giving me new ones, or strengthening them in disagreement. And I've never found a decent place to talk about these issues with anybody. Are there specific forums that you use for that topic?
(Would anyone mind pointing me towards other threads hereabouts that discuss these topics? I am not a fan of B5 (no offense, I just don't watch TV), nor am I particularly interested in space-combat game development at this stage. Thus, I don't scour these forums except for this thread (and the "Welcome GrantNZ!" one of course... I can't ignore that! [img]http://216.15.145.59/mainforums/wink.gif[/img] ), and my cursory exploration hasn't come up with any other discussions. (That said, the thread titles aren't always too helpful. [img]http://216.15.145.59/mainforums/wink.gif[/img] ))
Have you read any of Chris Crawford's essays on the topic? (I assume you've heard of him; it seems that most who are interested in [i]true[/i] interactive entertainment have.) I've read most of his [i]many[/i] essays (there must be hundreds!!) and they've been greatly inspirational for me... although I am following an implementation plan that he doesn't agree with, and I disagree with his Grampa/Annie analogy... but you get that with pioneer fields. If anyone wants/needs, I don't mind posting a little about what he's done (which is quite a lot!).
[i]*Stops ranting*[/i]
Anyone notice that my name is essentially "gee, rant"? [img]http://216.15.145.59/mainforums/smile.gif[/img]
[This message has been edited by GrantNZ (edited 10-17-2001).]
Grant: 10,000 posts is nothing compared to the amount of time I've speant talking to you about this stuff. [img]http://216.15.145.59/mainforums/smile.gif[/img]
Really at the moment I am still in the beginning stages of developing the engine, mainly the graphics part of it. My first game is likely to be a simple car simulator without other cars (aim is to get the best time around a lap). That will be the proof-of-ability for me. If I can get that going, I will move on to the fully-fledged game engine. I am still bouncing between two ideas for a game. The original idea was for a 3D strategy game (Grant and I were going to pair up for this), but now I am leaning very heavily towards a 3rd person RPG using 3D graphics (because 3D graphics is one of my hobbies). I am very keen to create an RPG based on the "Exiles" trilogy by Melanie Rawn. The aim of this is to have a very story-driven game that also has nice looking graphics and good character developement. But don't expect much to appear in the next year or two. Remember, I'm still a newbie at game engine design and am doing just what seems sensible to me due to the lack of resource material.
The scripting part would mainly come into this for quests. This way quests could be added and tweaked quickly and easily, and there would not be a huge overhead. Just have a list of available quests in memory and whenever one becomes active, load in the data for that quest and use as needed. Of course this is something I have just thought of so it isn't all planned out perfectly yet.
[u]Differences between my engine and Grant's engine:[/u] We both have our own object file formats. However, I am using a 3rd party modeller and Grant is creating our own, so the methods for getting objects differ. If I wrote another converter I could load his objects, same for him if he altered his editor to save to my format.
The different purposes for the engines: Grants sprang out of a desire to create a lightsabre fighting sim, mine to create a scriptable game engine for an as-yet unknown game type, but known that it will have lots of story.
We often have huge conversations discussing the best way to do something, from calculating normals to skeletal animation. Sometimes we end up using the same method (as we did for normals), others we use a different one (as we will for animation). But we learn a lot because we also learn how the other did theirs.
[edit]It should be noted that Grant is a bit further ahead than me, having started earlier and having a shitload more free time. [img]http://216.15.145.59/mainforums/smile.gif[/img][/edit]
------------------
[b][url="http://www.minbari.co.uk/log12.2263/"]Required reading[/url][/b]
Never eat anything bigger than your own head.
The Balance provides. The Balance protects.
"Nonono...Is not [i]Great[/i] Machine. Is...[i]Not[/i]-so-Great Machine. It make good snow cone though." - Zathras
[This message has been edited by Biggles (edited 10-17-2001).]
I wish ICQ could count messages. [img]http://216.15.145.59/mainforums/wink.gif[/img]
[quote]The aim of this is to have a very story-driven game that also has nice looking graphics and good character developement.[/quote]
If I may ask, how do [i]you[/i] define "story-driven" and "character development"? (I ask this because they're essentially buzzwords. Somebody told me once that they wanted to make a realistic version of CounterStrike. I asked if a shot to the head would instantly kill. He said "only sometimes." Where's the realism there?! So I'm curious as to which aspects of story and character you're focusing on.)
[quote]Remember, I'm still a newbie at game engine design and am doing just what seems sensible to me due to the lack of resource material.[/quote]
That's so often the best way of doing things. As someone was telling me recently, a student solved two mathematical problems once to which noone thought there [i]was[/i] a solution, because he thought it was a homework assignment. (He was actually rather stressed - the lecturer had put three problems on the board and he couldn't solve the third one. [img]http://216.15.145.59/mainforums/wink.gif[/img] ) So stuff resource material! [img]http://216.15.145.59/mainforums/biggrin.gif[/img]
Converting your objects to mine would be tricky, because (IIRC) you're using a single mesh. Mine requires the mesh broken into pieces for each bone. It's certainly feasible, but it would take time to write the converter! Going the other way (.g3o->.imo) would be easier... as long as my mesh only used one texture. Animation is a [b]completely[/b] different story. I really am going out on a limb with my animation methods. [img]http://216.15.145.59/mainforums/smile.gif[/img]
Hey, [b]used[/b] to have shitloads more free time. [img]http://216.15.145.59/mainforums/wink.gif[/img] I only have four hours to myself each day now (excepting weekends). You'll probably overtake me!
[b]Right. Let's try this again. [i]*sigh*[/i]
I had a thought that surprised me whilst reading the article. (Yes, it is surprising that I had a thought, but that's not what I meant. [img]http://216.15.145.59/mainforums/wink.gif[/img] ) I realised that I often play games for my own goals, not my character's. For example, in one of my favourite games (Baldur's Gate II) my character is classified as "good." (As opposed to evil.) Yet I have him rob any open houses. My goal is to have a rich character (read: powerful; also read: able to complete the game with ease), yet the game doesn't morally distinguish between stealing and not. (Unless you're in full sight of a shop-keeper... so I don't do that.) Hopefully better character [i]interaction[/i] (the game does characterisation itself well) would help this... and so onwards goes my research.)[/b][/quote]
One of the things that I'm focused on is expanding interactive entertainment beyond the preconceptions attached to the word "game". I have nothing against games, and I like playing some games. But I am interested in developing something that is more like "interactive drama", or an interactive "episode", or interactive "drama-driven" story. I think that preconceptions about what "games" should be stunt the development of other kinds of interactive development. So - in the example you gave, if the game were drama-driven, you'd have an emotional response to your actions. Those actions would have dramatic consequences, and you'd have an emotional response, as would NPC's, to those consequences. In other words, you'd be involved in dramatic actions, instead of only strategic actions. Your goals would have to do with a dramatic situation, instead of just "winning" a game.
[quote][b]I am very keen to join your network of like-minded individuals. I have never seen a viewpoint on the subject that hasn't benefitted me, whether enhancing my own ideas, giving me new ones, or strengthening them in disagreement. And I've never found a decent place to talk about these issues with anybody. Are there specific forums that you use for that topic?
(Would anyone mind pointing me towards other threads hereabouts that discuss these topics? [/b][/quote]
From time to time there have been discussions here at Firstones about interactive storytelling, and about the non-linear, non-branching story system that was to be used in B5:ITF, but I don't know if those threads are archived, I suspect not.
Since we are expanding our topics at Firstones, perhaps folks would like to have an area for discussing interactive storytelling, interactive drama, and character AI? What better place to meet than Firstones?
In the meantime you may want to try these URL's: [url="http://www-ksl.stanford.edu/projects/BB1/"]http://www-ksl.stanford.edu/projects/BB1/[/url] [url="http://www-ksl.stanford.edu/abstracts_by_author/Hayes-Roth,B.papers.html"]http://www-ksl.stanford.edu/abstracts_by_author/Hayes-Roth,B.papers.html[/url] [url="http://www.cs.cmu.edu/groups/oz/"]http://www.cs.cmu.edu/groups/oz/[/url] [url="http://www.red3d.com/cwr/steer/"]http://www.red3d.com/cwr/steer/[/url] [url="http://www-ksl.stanford.edu/projects/CAIT/publicity.html"]http://www-ksl.stanford.edu/projects/CAIT/publicity.html[/url] [url="http://www.tiac.net/users/papajoe/toolbox/toolbox.htm"]http://www.tiac.net/users/papajoe/toolbox/toolbox.htm[/url] [url="http://www.work@dreamtheater.com/"]http://www.work@dreamtheater.com/[/url]
[b] [quote] Have you read any of Chris Crawford's essays on the topic? (I assume you've heard of him; it seems that most who are interested in [i]true[/i] interactive entertainment have.) I've read most of his [i]many[/i] essays (there must be hundreds!!) and they've been greatly inspirational for me... although I am following an implementation plan that he doesn't agree with, and I disagree with his Grampa/Annie analogy... but you get that with pioneer fields. If anyone wants/needs, I don't mind posting a little about what he's done (which is quite a lot!).
[/b][/quote]
Yes. As a matter of fact Chris and I have sent a few emails back and forth and I have been invited to his yearly gathering up in Oregon, but so far haven't been able to attend. I think that he and his group will come up with the beginnings of a new kind of entertainment. Do you regularly go to his Website? ( [url="http://www.erasmatazz.com/"]http://www.erasmatazz.com/[/url] ). His transcripts of the yearly gatherings are a fascinating look into the debate about which direction the interactive storytelling evolution/ revolution should take.