Inside DARKSPORE and THE SIMS: MEDIEVAL by

advertisement
AI Post Mortem
Inside Sims Medieval
By David “Rez” Graham
What We’re Going to Talk About
• Core Design Changes
– Quests
– Sim Types
o Profession Sims
o Role Sims
o Townies
– Schedules
• Implementation
Solutions
– Bouncer System
– Sim Scheduler
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.
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
Design Changes: Sim Types
• 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: Schedules
• Why schedules?
• Quests:
• On Schedule:
– Special work motives & socials
– Remember the witch?
– Schedule Lots
– Need to lock a Sim somewhere
– Commodities can be frozen
• 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
– Meta & Local Autonomy can be
disabled
• Off Schedule:
– Normal Behavior
Implementation: The Bouncer
• Gets Sims in and out of the world one at
a time
• Handles prioritized Sim requests
– General Requests
o Generic request for N Sims
o Don’t care who gets assigned or when they
respond
o Used to fill the world with Townies
– Specific Requests
o Filtered by age, gender, faith, or even
SimDescription
o Sim is locked in request
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
Implementation: ISimRequestor
Requestor
Bouncer notifies
gets notified
client when
when aa Sim
higher
is actually
priority request
assigned
comes
to the request
Bouncer
canupask
about
the that
Sim’s
local/meta autonomy restrictions
in and it’s
to the client to
handle
appropriately
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
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 lowpriority bouncer requests for any who are
on a schedule.
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.
Implementation: Professions & Roles
• 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
• 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
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
o Target Lot = Town Square
o Commodities are frozen
– When player confronts her, a
new schedule is pushed
Thank You!
Email: rez@ea.com
Download