From bf46949981b9801bb9dc6ffc417dd596d94d4d00 Mon Sep 17 00:00:00 2001 From: Anthony Leland Date: Wed, 28 Oct 2020 03:05:03 -0400 Subject: [PATCH] Rewrote README - Rewrote README based on my understanding of "Under the hood of The Sims" with a section on the Motive Engine - Redid the needs CSVs to focus on weights --- README.md | 10 ++++- dataset/needs-dev.csv | 86 +++++++++++++++++++++---------------------- dataset/needs.csv | 86 +++++++++++++++++++++---------------------- 3 files changed, 95 insertions(+), 87 deletions(-) diff --git a/README.md b/README.md index 3a9b85e..a28a260 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,14 @@ # Servo -Servo is a experimental re-implementation of SimAntics using ML.NET. +Servo is a experimental re-implementation of SimAntics using ML.NET based on [Under the hood of The Sims](https://users.cs.northwestern.edu/~forbus/c95-gd/lectures/The_Sims_Under_the_Hood_files/v3_document.htm). I have wanted to write my own version of SimAntics for a while but the process of rewriting the engine from scratch pr even maintaining an existing re-implementation, such as FreeSO's, has proven to be tedious. Current machine learning technologies, such as ML.NET, can streamline the process. + +That being said, Servo is not intended to be used to rewrite The Sims itself. The models are intended for building new games based on it's design. + +## Motive Engine + +SimAntics is based on opposing weights. An object signals it's presence if the Sims' need is low. The need is the motive and that drives a Sims' decision. All games in the franchise are based on this dynamic at it's core. For example, if hunger is low then the fridge's presence is high and vice versa. + +The sum of all the Sims' needs is it's mood. A Sim will only choose the fridge if it increases it's overall mood. The individual needs is the classification while the mood is the prediction. ## License diff --git a/dataset/needs-dev.csv b/dataset/needs-dev.csv index 0878d22..3698f8b 100644 --- a/dataset/needs-dev.csv +++ b/dataset/needs-dev.csv @@ -1,43 +1,43 @@ -Need,Percentage,Priority -Bladder,24,TRUE -Bladder,58,FALSE -Bladder,24,FALSE -Bladder,54,TRUE -Bladder,55,TRUE -Bladder,42,FALSE -Bladder,30,TRUE -Hunger,34,TRUE -Hunger,25,TRUE -Hunger,37,FALSE -Hunger,27,TRUE -Hunger,50,FALSE -Hunger,64,FALSE -Hunger,59,FALSE -Social,29,TRUE -Social,52,FALSE -Social,38,TRUE -Social,50,FALSE -Social,44,FALSE -Social,20,TRUE -Social,55,FALSE -Fun,52,FALSE -Fun,35,TRUE -Fun,26,TRUE -Fun,46,FALSE -Fun,40,FALSE -Fun,51,FALSE -Fun,24,FALSE -Energy,32,TRUE -Energy,43,FALSE -Energy,40,FALSE -Energy,59,FALSE -Energy,30,TRUE -Energy,46,FALSE -Energy,68,FALSE -Hygiene,33,TRUE -Hygiene,68,FALSE -Hygiene,61,FALSE -Hygiene,68,TRUE -Hygiene,22,TRUE -Hygiene,39,TRUE -Hygiene,53,FALSE +Need,Percentage,Weight +Bladder,-24,+24 +Bladder,+58,-58 +Bladder,-24,+24 +Bladder,-54,-54 +Bladder,+55,-55 +Bladder,-42,+42 +Bladder,-30,+30 +Hunger,-34,+34 +Hunger,-25,+25 +Hunger,+37,-35 +Hunger,+27,-27 +Hunger,-50,+50 +Hunger,+64,-64 +Hunger,-59,+59 +Social,+29,-29 +Social,-52,+52 +Social,+38,-38 +Social,+50,-50 +Social,-44,+44 +Social,+20,-20 +Social,-55,+55 +Fun,-52,+52 +Fun,+35,-35 +Fun,-26,+26 +Fun,+46,-46 +Fun,-40,+40 +Fun,+51,-51 +Fun,-24,+24 +Energy,-32,+32 +Energy,+43,-43 +Energy,-40,+40 +Energy,+59,-59 +Energy,-30,+30 +Energy,+46,-46 +Energy,-68,+68 +Hygiene,+33,-33 +Hygiene,-68,+68 +Hygiene,-61,+61 +Hygiene,+68,-68 +Hygiene,+22,-22 +Hygiene,-39,+39 +Hygiene,+53,-53 diff --git a/dataset/needs.csv b/dataset/needs.csv index 0da3105..78c4317 100644 --- a/dataset/needs.csv +++ b/dataset/needs.csv @@ -1,43 +1,43 @@ -Need,Percentage,Priority -Social,20,TRUE -Hunger,64,FALSE -Hunger,59,FALSE -Bladder,55,TRUE -Energy,43,FALSE -Fun,24,FALSE -Hunger,25,TRUE -Fun,40,FALSE -Fun,46,FALSE -Hygiene,68,TRUE -Bladder,30,TRUE -Bladder,42,FALSE -Hygiene,39,TRUE -Social,50,FALSE -Bladder,24,TRUE -Bladder,24,FALSE -Fun,35,TRUE -Social,38,TRUE -Fun,51,FALSE -Bladder,58,FALSE -Fun,52,FALSE -Energy,46,FALSE -Energy,59,FALSE -Hunger,37,FALSE -Social,55,FALSE -Hygiene,68,FALSE -Energy,30,TRUE -Energy,68,FALSE -Bladder,54,TRUE -Hunger,34,TRUE -Hygiene,53,FALSE -Hygiene,61,FALSE -Hygiene,33,TRUE -Hunger,50,FALSE -Social,29,TRUE -Social,52,FALSE -Energy,32,TRUE -Fun,26,TRUE -Social,44,FALSE -Hygiene,22,TRUE -Energy,40,FALSE -Hunger,27,TRUE +Need,Percentage,Weight +Energy,-30,+30 +Hygiene,-39,+39 +Hunger,+27,-27 +Social,+29,-29 +Fun,-26,+26 +Energy,-32,+32 +Bladder,+55,-55 +Social,-55,+55 +Fun,-24,+24 +Bladder,-30,+30 +Social,-44,+44 +Fun,-52,+52 +Energy,-68,+68 +Hunger,-59,+59 +Bladder,-42,+42 +Energy,+43,-43 +Social,+20,-20 +Energy,-40,+40 +Bladder,+58,-58 +Hygiene,+33,-33 +Social,+38,-38 +Social,+50,-50 +Hygiene,+53,-53 +Bladder,-24,+24 +Hygiene,+68,-68 +Fun,+46,-46 +Hunger,+64,-64 +Hunger,+37,-35 +Hunger,-50,+50 +Energy,+46,-46 +Bladder,-24,+24 +Hygiene,-61,+61 +Social,-52,+52 +Fun,+51,-51 +Hygiene,+22,-22 +Hunger,-25,+25 +Bladder,-54,-54 +Fun,-40,+40 +Energy,+59,-59 +Hunger,-34,+34 +Hygiene,-68,+68 +Fun,+35,-35 \ No newline at end of file