Download presentation
Presentation is loading. Please wait.
Published byCoral Hunter Modified over 9 years ago
1
AI Post Mortem Inside Sims Medieval By David “Rez” Graham
2
Who's this Rez guy, anyway?
9
What We’re Going to Talk About Core Design Changes – Quests – Sim Types oProfession Sims oRole Sims oTownies – Schedules Implementation Solutions – Bouncer System – Sim Scheduler
10
Sims AI Crash Course Meta Autonomy – Which lot should I be on? – Based on venue desire tuned by designers – Schedules Local Autonomy – What should I do on my current lot? – Based on Utility provided for each interaction on each object – Utility is based on Commodities, like hunger, energy, social, etc.
11
Design Changes: Quests The Problem: –The Witch is back! –Player must confront the witch in the town square –The player arrives just in time…. –.… to see the witch go home to make a sandwich
12
Profession Sims –Created with Create-A-Sim –Playable Townies –Background characters –Unplayable yet fully simulated Role Sims –Townies with a purpose –Activated by event –On a schedule Design Changes: Sim Types
13
Design Changes: Schedules Why schedules? Quests: –Remember the witch? –Need to lock a Sim somewhere Work: –No rabbit holes for work –Need to send Sims to the right place at the right time –Need to behave appropriately during business hours On Schedule: –Special work motives & socials –Schedule Lots –Commodities can be frozen –Meta & Local Autonomy can be disabled Off Schedule: –Normal Behavior
14
Implementation: The Bouncer Gets Sims in and out of the world one at a time Handles prioritized Sim requests –General Requests oGeneric request for N Sims oDon’t care who gets assigned or when they respond oUsed to fill the world with Townies –Specific Requests oFiltered by age, gender, faith, or even SimDescription oSim is locked in request
15
Implementation: Specific Requests 1.Client inherits from ISimRequestor interface 2.Client calls CreateRequest() on Bouncer Singleton 3.Bouncer creates a request and returns an ISimRequest ptr 4.The ISimRequest ptr is used as proxy to send messages to the Bouncer regarding this request 5.Bouncer uses concrete request object to send messages to the client
16
Implementation: ISimRequestor Requestor gets notified when a Sim is actually assigned to the requestBouncer notifies client when a higher priority request comes in and it’s up to the client to handle that appropriately Bouncer can ask the client about the Sim’s local/meta autonomy restrictions
17
Implementation: ISimRequest Client must submit the request when it’s ready and withdraw the request when it’s done Client can update general requests to the bouncer Client controls when a Sim is unassigned from a request since it knows when this is safe
18
Implementation: Schedules 1.Schedule client calls AddScheduleByTag() on SimDescription 2.SimDescription caches the schedule data from the SimScheduler singleton 3.SimDescription calls AddSim() on ScheduledSimManager singleton 4.ScheduledSimManager creates a ScheduledSim object 5.Each tick, ScheduledSimManager iterates over all ScheduledSim’s and submits low- priority bouncer requests for any who are on a schedule.
19
Implementation: Schedules 6.Bouncer spawns the Sim 7.The Sim initializes his SimSchedulerState and sets the appropriate state based on time. 8.Every AI update, Autonomy will call RunScheduleAutonomy() 1.Submits a higher priority bouncer request 2.Reconciles all motives, freezes commodities if necessary, etc. 3.Sends the Sim to the appropriate lot.
20
Implementation: Professions & Roles Roles: –RoleSystem Singleton acts as Schedule Client –Activated by Event –Role sim is chosen from Townie Pool based on Filter –Sim is modified for role (Traits, skills, Equip, etc.) –Schedule is added to SimDescription Professions: –ProfessionManager Singleton acts as the Schedule Client –Sims are created through Create-A-Sim, which generates a SimDescription object –When not controllable by the player, Profession Sims behave according to schedule –Sims controlled by player have their schedule removed
21
Summary Remember the Witch? –The Witch is now just a role –The Role filters on Adult Female –When activated, she is put on a 24/7 schedule oTarget Lot = Town Square oCommodities are frozen –When player confronts her, a new schedule is pushed
22
Performance: Local Autonomy The Problem: –Autonomy is taking too long! –Specifically, it takes too long for one Sim to score interactions for local autonomy –Adding a player to this makes it especially bad Proposed Solution: –Distribute scoring across multiple frames Hitches: –Several systems outside of the AI call scoring functions directly –GameObject state changes out from under the Sim What We Did: –Internal scoring functions run across multiple frames –Externally called functions run synchronously –Lots of object validation
23
Performance: Routing The Problem: –Routing is too expensive! –Routing was solving an entire path synchronously –No dynamic obstacle avoidance Proposed Solution: –Nuke it! Hitches: –Hell of a lot of work Final Solution: –Replaced Sims 3 router with NavPower
24
Thank You! Email: rez@ea.comrez@ea.com
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.