Moving Ahead on One of the Expansion Pack Features
Published on May 4, 2006 By ScottTykoski In GalCiv Journals

While I believe the list hasn’t been finalized, Brad has given me the go ahead to begin work on one of the many new features that will be included in the expansion pack: the Epic Story Generator.

As a simple lad with simple programming skills, the task seemed easy enough…write enough text so that, each time the player finishes the game, the player gets an multi-page story similar to the After Action Report’s Brad has posted. However, after playing a few games and mapping out the many MANY events that can occur, the task grew before my eyes. Here’s a list of the events that I’m currently hooking into the code…

enum GC2StoryGeneratorEvents
{
GC2_Story_Data_RaceStatus, // a races standing in the universe
GC2_Story_Data_GalaxyStatus, // size, ect of galaxy

GC2_Story_EthicalAllignmentChosen, // race gets xenoethics, choses morality
GC2_Story_UPLawPassed, // a law gets passed
GC2_Story_UPLawRejected, // a law gets rejected
GC2_Story_UPLawTimedOut, // a law times out
GC2_Story_LeftUP, // race leaves the UP
GC2_Story_RandomEvent, // a random event occoured, store what option the race picked
GC2_Story_TreasuryDropsBelowZero, // money drops into the red
GC2_Story_TreasuryOutOfDebt, // race climbs out of debt
GC2_Story_BudgetBalanced, // race balances a lopsided budget
GC2_Story_ChangedGovernment, // race changes form of government
GC2_Story_ElectionSuccessful, // won an election
GC2_Story_ElectionFailed, // lost an election

GC2_Story_WarVoteSuccessful, // vote to go to war passed
GC2_Story_WarVoteFailed, // vote to go to war turned down

GC2_Story_MoraleMightDropsBelowFifty, // approval dropps into the red

GC2_Story_FirstContactWithRace, // first time races meet
GC2_Story_RelationsRaised, // race raises relations with someone
GC2_Story_RelationsDropped, // race drops relations with someone
GC2_Story_StartedAlliance, //alliance treaty signed

GC2_Story_AcceptedGift, // took gift
GC2_Story_RejectedGift, // rejected gift

GC2_Story_SuccessfulNegotiations, // sucessfully traded with another race
GC2_Story_UnsucessfulNegotiations, // unsucessfully traded

GC2_Story_WarStartedBecauseOfAlliance, // race gets pulled into war
GC2_Story_RejectedWarDespiteAlliance, // allies plea is rejected

GC2_Story_RaceNoticesShipBuildup, // race takes note of a buildup
GC2_Story_RaceNoticesCultureStarbase, // race takes not of a culture starbase
GC2_Story_RaceNoticesMilitaryStarbase, // whats the warbase doing there?!

GC2_Story_CultureStarbaseStarted, // started party base
GC2_Story_EconomyStarbaseStarted, // started banking/factory base
GC2_Story_MilitaryStarbaseStarted, // started gunbase
GC2_Story_MiningStarbaseStarted, // started mining a resource
GC2_Story_WarshipDesigned, // designed a new warship
GC2_Story_FirstWarshipOfTypeBuilt, // first new warship built

GC2_Story_WarStarted, // war started

GC2_Story_PlanetInvasionFailed, // race tried to invade but got stomped
GC2_Story_PlanetInvasionSuceeded, // race took another race's planets through invasion
GC2_Story_PlanetInvasionTied, // both sides lose all troops

GC2_Story_TradedForPeace, // 'Lets just be friends'
GC2_Story_RejectedTradeForPeace, // 'Hell no..you're gonna die.'
GC2_Story_RaceSurrendered, // race surrenders to another race
GC2_Story_RaceDestroyed, // race is destroyed

GC2_Story_ShipDuelBattle_DefWin, // 2 ships meet, attacker loses
GC2_Story_ShipDuelBattle_AttWin, // same as above, attacker wins
GC2_Story_SmallShipBattle_DefWin, // fleet battle < 6 ships
GC2_Story_SmallShipBattle_AttWin,
GC2_Story_MediumShipBattle_DefWin, // fleet battle < 12 ships
GC2_Story_MediumShipBattle_AttWin,
GC2_Story_LargeShipBattle_DefWin, // fleet battle tons of shops
GC2_Story_LargeShipBattle_AttWin,
GC2_Story_LoneShipOnFleetBattle_DefWin,  // one ship vs a swarm
GC2_Story_LoneShipOnFleetBattle_AttWin,

GC2_Story_StarbaseBattle_DefWin, // starbase battle
GC2_Story_StarbaseBattle_AttWin,

GC2_Story_PlanetDefenceless, // planets orbiting ships all killed

GC2_Story_PlanetColonized, // planet colonized
GC2_Story_PlanetBuiltWonder, // planet...im not going to explain these ones
GC2_Story_PlanetBuiltTradeGood,
GC2_Story_PlanetBuiltSuperProject,

GC2_Story_CultureFlipDanger, // planet is in danger of rebeling
GC2_Story_PlanetRevolts, // planet flips to another culturally superior race

GC2_Story_TradeRouteStarted, // started trade route
GC2_Story_TradeRouteShipDestroyed, // en-route frieghter taken out
GC2_Story_TradeRouteEndedTooRisky, // trade route ended due to warfare in the area

GC2_Story_AnomalyFound, // found anomaly!
GC2_Story_WeaponTechResearched, // weapon research completed
GC2_Story_HullSizeTechResearched, // researched new hull size tech

GC2_Story_EconomicBoomBegins, // special events begin and end
GC2_Story_EconomicBoomEnds,
GC2_Story_CultureBoomBegins,
GC2_Story_CultureBoomEnds,
GC2_Story_CultureBacklashBegins,
GC2_Story_CultureBacklashEnds,

GC2_Story_Victory_Culture, // victory conditions
GC2_Story_Victory_Military,
GC2_Story_Victory_Technology,
GC2_Story_Victory_Alliance,

GC2_Story_Loss_Culturet, // losing conditions
GC2_Story_Loss_Miitary,
GC2_Story_Loss_Technology,
GC2_Story_Loss_Surrender
};

From these I can gather data specific to the event, then use the morality of the races involved, those races relative military might, and the galactic status at the time, and I should have enough information to generate an interesting and unique story for each game.

Other hopes for this feature would include creating an HTML version with generated screenshots, and integration with your online account so that it can be uploaded to the website and other players can read of your exploits.

Of course, at this point, I’ll just be happy to get the basic storytelling part working right And let me know If you see any major events that I forgot. I only used ones I ran into or ones I could think of while playing, but I definatly want to cover as many pivotal game events as possible by the time this is completed.


Comments (Page 3)
4 Pages1 2 3 4 
on May 05, 2006
I don't envy your programming task, but it could make for an interesting feature.
on May 05, 2006
I hereby proclaim this to be THE COOLEST FEATURE EVER.

No, really - everything from the idea of following prominent starships to, well, just the whole idea, oozes awesome. I am now guaranteed to buy the expansion pack.
on May 06, 2006
I hereby proclaim this to be THE COOLEST FEATURE EVER.


Second that! An automatically-generated AAR has probably been one of the 10 most oft-requested features in TBS games since time out of mind (or at least since I started playing them 10 years ago!). Man oh man, I suddenly can't wait for the expansion to be released now.....
on May 06, 2006
i think there should be a option as well for you to "mark" what you feel are specific times and places
on May 06, 2006
This is the sort of feature that can go so horribly wrong, represent so much time and effort and then be switched off by thousands of gamers after the first couple of occurances.

Let's hope it's as cool as it sounds
on May 06, 2006
cool beans...I suggested this weeks ago in the forum and everyone shot it down or in this case...never replied or commented.
Link
I had no hope that we would ever see something like this in ANY game. When this thing is out...I will be the first to purchase.

on May 06, 2006
When this thing is out...I will be the first to purchase

I will pre-order.You lose
on May 06, 2006
So... its going to be similar to the civ3 endgame showcase?

it sounds like a gimmick - just like the combat viewer.

But, i like reading, so if you get this right i will probably enjoy reading about my exploits...

good luck
on May 06, 2006
Also, should keep track of when the player cheats.
Mysterously Terran alliance gain 100,000 in money.
on May 06, 2006
That sounds like a terrific idea! Several RPGs have ended with an Epic Story, basically recapping your actions throughout the game, and mentioning what happened to NPC so and so, and it's always just fun to watch and go "oh yeah, I did that."

It also makes the ending at least a little fresh every time you finish the game.

Good stuff!
on May 08, 2006
You'll want to assign weights to the various events and limits on how many times to display them.
You don't want a log, you want a story. And a story needs a certain amount of conciseness.

Algorithm:
1) List all Events
2) Remove events with too many duplicates
3) Eliminate all but the top 100 (N...) weighted events or so.
4) Now write the story.
on May 09, 2006
Revised Algo:
2) Don't remove events with too many duplicates, reduce the weight of duplicates that aren't happening around some other highly weighted event. This would allow mentioning things like "A heavily upgraded military starbase was built in Drengin's Home System, preparing for a multi-wave fighter and transport attack to take that system. Drengin surrendered to Captain Player shortly after the attack succeeded..."
on May 23, 2006
I would purchase the expansion even if this were the only option included, the idea is that stinking awesome!!!
on Jun 01, 2006
Great idea in principal
My only comment/suggestion is that what makes AAR interesting is the thoughts of player at the time which obviously you cannot program. If you add this feature why not have a manual event triggered by the player to be able to add comments about the thoughts they were having.
on Jun 02, 2006
Not only is this cool, but the HTML idea positively rocks. If when you first build a ship it takes a screenshot and throws it in the AAR as an illustration for that event, the rocks level becomes an unbearable celestial choir.
4 Pages1 2 3 4