2026년 10월 26일
The Sims 4의 에이전트 의사 결정: 유틸리티 점수, 욕구 감소 및 기분
초록
저희는 The Sims 4가 게임 자체 데이터를 기반으로 심즈를 어떻게 운영하는지 연구했습니다. 심은 모든 옵션을 자신의 욕구에 따라 점수를 매기고, 가장 좋은 10개를 유지하며, 가중치 주사위를 굴려 행동을 선택합니다. 욕구는 -100에서 100까지의 숫자로, 고정된 비율로 감소합니다. 기분은 가중치의 합계입니다. 현재 부지에 있는 심만 시뮬레이션됩니다. 나머지 마을은 기록 세트이며, 밤에 한 번 주사위 굴림으로 진행됩니다. 이 페이지는 그 수치를 제공합니다.
1 요약
176,805개의 튜닝 기록에서 얻은 7가지 결과:
- 심은 유틸리티 점수 매기기를 통해 선택합니다. 각 욕구는 단계 곡선에서 욕구를 생성합니다. 각 행동은 각 욕구를 얼마나 채워주는지 나타냅니다. 게임은 이 둘을 곱하고, 가장 좋은 10가지 옵션을 유지하며, 점수에 따라 가중치를 부여하여 무작위로 하나를 선택합니다.
- 욕구는 -100에서 100까지의 숫자로, 일정한 비율로 감소합니다. 게임은 이를 실시간으로 계산하지 않습니다. 값을 읽을 때 계산하고, 다음 임계값을 위한 알람을 설정합니다. 기본 속도에서, 배고픔은 가득 참에서 비어있음까지 16시간이 걸리고, 위생은 48시간이 걸립니다. 욕구가 감소함에 따라 감소 속도가 느려지므로, 심은 더 오래 버팁니다(표 3).
- 기분은 버프 가중치의 합계가 가장 큰 감정입니다. 긍정적 가중치와 부정적 가중치는 상쇄되지 않습니다. 굶주린 심은 40점의 불편함을 가지고 있습니다.
- 관계는 우정과 로맨스라는 두 가지 트랙과 단기적인 맥락으로 이루어집니다. 높은 로맨스는 가장 빨리 사라집니다. 75점 이상에서는 하루에 6점씩 감소합니다. 두 NPC는 절대 관계를 잃지 않습니다. 사회적 상호작용의 결과는 가중치 무작위 선택입니다.
- 현재 부지에 있는 심만 시뮬레이션됩니다. 다른 모든 심은 총 1,041명의 심으로 제한된 세부 수준을 가진 기록입니다. NPC가 돌아오면 게임은 시간대 곡선에서 그들의 욕구를 설정합니다. 밤에 한 번, 02:30에 스토리 진행 패스가 주사위를 굴려 출생, 사망, 직업, 이동을 목표 점유율에 가깝게 유지합니다.
- 성격은 대부분 숨겨진 버프입니다. 이 버프는 위 숫자를 조정합니다. 대식가는 음식에 대한 욕구를 1.5배 증가시킵니다. 게으름뱅이는 위생에 대한 욕구를 0.15배 증가시킵니다.
- 규칙은 Python이고 데이터가 이를 구동합니다. 엔진은 C++입니다. 단일 플레이어에서도 클라이언트가 서버에 연결하듯이 Python 시뮬레이션과 통신합니다. 1 심 분은 실제 시간으로 1.5초입니다.
2 방법
저희는 2026년 7월 20일 패치된 The Sims 4 로컬 설치본과 기본 게임 및 78개의 팩을 기반으로 작업했습니다. 게임의 규칙은 Python으로 작성되었으며, 그 수치는 모더들이 편집하는 것과 동일한 데이터인 “튜닝”에 있습니다. 저희는 117가지 유형의 튜닝 인스턴스 176,805개를 읽었습니다.
제한 사항. 데이터가 명확하지 않은 경우, 아래 숫자는 디자이너가 튜닝 가능한 항목에 작성한 설명에서 가져왔습니다. 저희는 게임 파일을 게시하지 않습니다. 이 페이지는 이름과 숫자만 제공합니다.
“심 분”과 “심 시간”은 게임 시간을 의미합니다. 속도 1에서 1 심 분은 실제 시간으로 1.5초가 걸리므로, 1 심 일은 실제 시간으로 36분이 걸립니다.
3 심이 선택하는 방법
심은 상태 기계가 아닙니다. 심은 점수 계산기입니 다. 심은 주기적으로 주변의 물체를 보고, 물체가 제공하는 행동에 점수를 매기고, 하나를 선택하기 위해 주사위를 굴립니다. 점수에는 세 가지 입력이 있습니다. 심이 각 욕구를 얼마나 심하게 원하는지, 행동이 그 욕구를 얼마나 채워주는지, 그리고 걷는 시간을 포함하여 행동에 얼마나 시간이 걸리는지입니다.
3.1 심이 무언가를 얼마나 원하는지
각 욕구는 -100에서 100까지의 값을 가집니다. 단계 곡선은 이 값을 욕구로 변환합니다. 단계는 가파릅니다. -25 미만의 각 구간은 욕구를 약 8배 증가시킵니다. -25 이상에서는 6가지 욕구 중 4가지가 아무것도 나타내지 않습니다. 재미와 사회성은 절대 1 미만으로 떨어지지 않으므로 항상 작은 영향을 미칩니다.
| 욕구 | −100 | -76에서 -51 | -50에서 -26 | -25 이상 | 가중치 |
|---|---|---|---|---|---|
| 배고픔 | 1,024 | 64 (-76에서 512) | 8 | 0 | 0.2857 |
| 방광 | 1,024 | 128 | 8 | 0 | 0.05 |
| 에너지 | 256 | 32 | 8 | 0 | 2 |
| 위생 | 64 | 8 | 8 (-26에서 4) | 0 | 0.25 |
| 재미 | 128 | 32 | 8 | 4, 100에서 1까지 | 1 |
| 사회성 | 128 | 32 | 8 | 4, 100에서 1까지 | 0.5 |
출처: tuning/statistic/motive_*.xml
게임은 욕구를 욕구별로 정렬하고, 가장 높은 욕구의 51% 이상을 가진 모든 욕구를 유지합니다. 그리고 그 욕구를 나타내는 행동에만 점수를 매깁니다. 아무것도 작동하지 않으면 다음 욕구 구간을 시도합니다. 특성과 버프는 이 단계 전에 욕구를 곱합니다.
3.2 점수 설명
행동이 나타내는 각 욕구에 대해 게임은 채우기 비율을 계산합니다. 이는 욕구에 대한 나타난 변화를 예상 행동 시간으로 나눈 값입니다. 3,222개의 행동은 기본 시간인 30 심 분을 사용합니다. 그런 다음 효율성을 계산합니다. 이는 행동 시간을 행동 시간과 걷는 시간을 더한 값으로 나눈 값입니다. 걷는 시간은 킬로미터당 25 심 분입니다.
욕구 점수는 채우기 비율 × 효율성 × 욕구 × 욕구 가중치 × 물체 선호도입니다. 심이 이미 하고 있는 일이 같은 욕구를 채워준다면 점수는 4분의 1로 줄어듭니다.
행동 점수는 욕구 점수의 합계에 야외에 있는 경우의 요소, 대상 심과의 관계에 대한 요소, 그룹 크기에 대한 요소, 상황에 대한 요소를 곱한 값입니다. 그런 다음: 물체가 부지 밖에 있다면 절반으로 줄입니다. 심이 자세를 바꿔야 한다면 새로운 행동이 취소할 모든 값에 1.5를 곱한 값을 뺍니다. 함께 계속되는 모든 값은 더합니다. 심이 독점적인 상황에 있다면 10으로 나눕니다.
3.3 선택
점수를 매기기 전에 게임은 가지치기를 합니다. 부지 밖 25m를 넘는 물체, 15m 이상 떨어진 대상 심, 지난 15 심 분 동안 실패한 대상을 제거합니다. 같은 종류의 행동이 여러 개 있는 경우 무작위로 3개를 유지합니다. 각 행동은 1에서 5까지의 우선순위 버킷을 가지며, 가장 좋은 버킷만 살아남습니다. 걷기 없이 가능한 최고 점수가 현재 최고 점수의 절반 미만이면 게임은 경로를 계산하지도 않습니다.
그런 다음 살아남은 것들을 정렬하고, 상위 10개를 유지하며, 점수가 0 이하인 것은 제거하고, 점수를 점수 합계로 나 눈 확률로 무작위로 하나를 선택합니다. 모든 점수가 0이면 가장 가까운 옵션이 이깁니다.
멀티태스킹은 한 번 더 주사위를 굴립니다. 게임은 실행 중인 행동과 새로운 행동의 주의 비용을 합산하고 곡선을 읽습니다. 비용 1은 1을, 비용 1.5는 0.5를, 비용 2는 0.1을, 비용 3은 -0.5를 줍니다. 무작위 굴림이 그 숫자보다 높으면 심은 새로운 행동을 시작하지 않습니다. 유휴 심은 항상 통과합니다.
3.4 자율성 실행 시점
각 심은 심 시간으로 알람을 가집니다. 첫 실행은 심이 생성된 후 5 심분입니다. 다음 지연은 결과에 따라 달라집니다.
| 상황 | 다음 실행까지 |
|---|---|
| 플레이어가 심에게 명령을 내렸을 때 | 5 심분 |
| 마지막 실행에서 아무것도 찾지 못했을 때 | 20~25 심분 (무작위) |
| 심에게 대기 중이거나 실행 중인 행동이 있을 때 | 12~15 심분 (무작위) |
| 심이 할 일이 없을 때 | 즉시 |
출처: tuning/tun/autonomy.autonomy_modes.xml
자율성은 속도 3에서는 실행되지 않으며, 플레이어가 껐을 때나 실행 중인 행동이 멀티태스킹을 금지할 때도 실행되지 않습니다. 하나의 서비스는 한 번에 하나의 요청을 0.1초 단위로 처리합니다.
긴 행동은 짧은 행동을 붙잡습니다. “대화”는 “농담하기”를 붙잡습니다. 대기열이 비면 두 번째 스코어러가 짧은 행동을 선택합니다. 가장 필요한 것에 따라 가중치가 부여된 제공자, 그 다음 그룹, 그 다음 내용 점수에 따라 가중치가 부여된 짧은 행동 순입니다.
4. 욕구 및 기분
성인 심의 여섯 가지 욕구는 모두 -100에서 100까지입니다. 고통은 -75에서 시작합니다. 실패는 -100이며, 재미는 실패가 없습니다. -25 미만의 각 구간은 버프를 추가합니다. 버프는 감소율을 변경하고 한 가지 감정에 가중치를 더합니다.
| 욕구 | 심분당 포인트 | 가득 참에서 비어있음까지 (선형) | 가득 참에서 비어있음까지 (실제) | -75 이하의 감정 | -100에서 |
|---|---|---|---|---|---|
| 배고픔 | 0.2083 | 16.0 h | 63.0 h | 불편함 (가중치 40) | 굶주림으로 인한 죽음 |
| 에너지 | 0.1389 | 24.0 h | 24.0 h | 불편함 (가중치 3) | 기절 |
| 방광 | 0.1736 | 19.2 h | 18.0 h | 불편함 (가중치 40) | 실수 |
| 위생 | 0.0694 | 48.0 h | 42.1 h | 불편함 (가중치 2) | 실패 애니메이션 |
| 재미 | 0.1488 | 22.4 h | 24.0 h | 스트레스 (가중치 3) | 없음 |
| 사회성 | 0.0868 | 38.4 h | 47.9 h | 슬픔 (가중치 3) | 실패 애니메이션 |
출처: tuning/statistic/motive_*.xml, tuning/buff/Buff_Motives_*.xml
배고픔은 감소할수록 느려집니다. -50 아래에서는 속도가 1/12로 떨어집니다. 그래서 심은 10시간 동안 괜찮고, 24시간 동안 배고프고, 죽기 전 24시간 동안 굶주립니다. 방광은 반대로 빨라집니다. -25 아래에서는 1.2배 빨라집니다. 새로운 심은 처음 3일 동안 감소를 늦추는 숨 겨진 버프를 받습니다. 예를 들어 방광 × 0.6, 에너지 × 0.7입니다.
4.1 감소는 틱이 아닙니다
게임은 마지막 변경 시간을 저장합니다. 코드가 욕구를 읽을 때, 경과 시간(분) × 속도를 더합니다. 임계값에서 행동하려면, 도달 시간을 계산하고 알람을 설정합니다. 모든 속도 변경은 현재 값을 먼저 기록하므로, 값은 시간의 조각별 선형 함수입니다. 행동이 욕구를 변경하는 동안, 해당 욕구는 감소하지 않습니다.
4.2 기분
게임은 활성 버프의 기분 가중치를 감정별로 더합니다. 총합이 가장 큰 감정이 승리합니다. 긍정적인 총합과 부정적인 총합은 서로 상쇄되지 않습니다. 가중치가 부여된 버프가 없으면 기분은 괜찮음입니다. 동점일 경우, 오래된 버프가 승리합니다. 기분 수준은 총합이 도달하는 임계값의 수입니다.
| 기분 | 임계값 | 레벨 |
|---|---|---|
| 화남 | 3, 7 | 3 |
| 당황함 | 4, 8 | 3 |
| 장난스러움 | 8, 15 | 3 |
| 자신감, 활기참, 유혹적, 집중, 행복함, 영감받음 | 8 | 2 |
| 슬픔 | 3 | 2 |
| 두려움, 스트레스, 불편함 | 4 | 2 |
| 지루함, 멍함, 괜찮음, 잠듦 | 없음 | 1 |
출처: tuning/mood/
다른 극성의 기분은 현재 기분보다 한 단계 더 강할 때만 현재 기분을 대체합니다. 이는 기분이 앞뒤로 바뀌는 것을 막습니다. 일부 버프 값: 굶주림은 불편함 40을 줍니다. 실수하면 당황함 5를 240분 동안 줍니다. 좋은 재료로 만든 좋은 식사는 행복함 3을 360분 동안 주고 배고 픔 감소를 1/5로 늦춥니다. 상쾌한 샤워는 활기참 1을 240분 동안 줍니다. 시간 제한 버프는 기본적으로 100 심분 동안 지속되며 자신과 중첩되지 않습니다.
5. 관계
각 심 쌍은 하나의 관계를 공유합니다. 이 관계는 -100에서 100까지의 두 가지 장기 트랙(우정 및 로맨스)을 가집니다. 둘 다 0에서 시작하여 0으로 감소합니다. 단기 컨텍스트가 그 위에 있으며 대화 중에 빠르게 움직입니다.
| 우정 | 일당 감소 | 로맨스 | 일당 감소 |
|---|---|---|---|
| -100에서 -70 | 4.0 | -100에서 -50 | 2 |
| -70에서 -20 | 2.5 | -50에서 0 | 1 |
| -20에서 35 | 1.0 | 0에서 25 | 3 |
| 35에서 60 | 1.5 | 25에서 50 | 4 |
| 60에서 100 | 1.0 | 50에서 75 | 5 |
| 75에서 100 | 6 |
출처: tuning/statistic/LTR_Friendship_Main.xml, LTR_Romance_Main.xml
감소가 아닌 모든 변화는 1 심일 동안 감소를 일시 중지합니다. 활성 가족의 심과 짝을 이룬 관계는 항상 감소합니다. 다른 플레이 중인 심과 짝을 이룬 관계는 -20에서 20 사이에서만 감소합니다. 두 NPC의 짝은 절대 감소하지 않습니다. 증가량은 나이에 따라 달라집니다. 성인 대 성인은 × 0.6, 어린이 대 어린이는 × 2.5입니다.
레이블은 특정 값에서 나타나고 더 낮은 값에서 사라지므로 깜빡이지 않습니다. 친구는 35에서 나타나고 30에서 사라집니다. 좋은 친구는 60에서 나타나고 55에서 사라집니다. 싫어함은 -20에 서 나타나고 -15에서 사라집니다. 로맨스 레이블은 우정도 필요합니다. 우정이 60 이상일 때: 로맨틱 관심 10, 연인 25, 사랑하는 사이 50, 소울메이트 75. 가장 친한 친구는 우정이 10으로 떨어지면 제거됩니다.
출처: tuning/relbit/
5.1 대화
네 가지 컨텍스트 트랙이 현재 대화를 따릅니다: 우정, 재미, 로맨스, 어색함. 각 소셜은 이 중 하나를 약 10포인트 이동시키고 다른 것들을 0으로 끌어당깁니다. 심들이 헤어진 후, 컨텍스트는 분당 0.55포인트씩 감소하며, 100에서 0까지 약 3 심시간이 걸리고, 그들의 감정에 의해 설정된 시작 값으로 향합니다: 친밀함은 +20, 격노는 -50.
출처: tuning/statistic/SocialContext_*.xml
5.2 소셜이 해결되는 방식
게임은 테스트에서 점수를 계산하고, 테스트를 통과한 결과를 수집하며, 가중치에 따라 하나를 선택합니다. 친근한 잡담의 경우 점수는 다음과 같이 추가됩니다: 우정 -8(–70 미만)에서 +8(60 초과); 친근한 컨텍스트의 경우 +6, 지루한 컨텍스트의 경우 -6에서 -15; 행위자의 기분, 행복함 +5, 자신감 +3, 화남 -3, 슬픔 -3, 스트레스 -5; 화난 청취자, -9; 특성, 약 ±3에서 ±5.
“오늘 어땠는지 묻기”는 15점 이상이면 성공하고, -10점 이하이면 실패하며, 둘 다 해당하지 않을 때는 약간의 이득을 줍니다. 지루한 대상은 가중치 999로 승리하고 대신 재미를 소모합니다.
트랙이 올라갈수록 이득은 줄어듭니다. 작은 이득은 -40 미만에서 +4, 0까지 +2, 20까지 +1.5, 40까지 +1, 40 초과에서 +0.5입니다. 작은 손실은 -2, 40부터 -3, 80 초과에서 -4입니다. 따라서 우정은 강해질수록 더 느리게 성장하고 더 빠르게 깨집니다. 호환성은 결과를 곱합니다: 놀라움 × 1.5, 좋음 × 1.25, 나쁨 × 0.75, 끔찍함 × 0.5.
바람둥이 점수: 로맨스 50 이상일 때 +25, 뜨거움 +12, 어색함 -23, 화난 상대 -20, 낮은 위생 -8~-12, 카리스마 기술 +2~+12, 이별 직후 -18.
출처: tuning/test_based_score/scores_socialoutcomes_*.xml, tuning/action/Rel_Gain_Small.xml
6. 플레이어가 보지 못하는 세상
게임은 현재 부지에 있는 심만 완벽하게 시뮬레이션합니다. 다른 심들은 세부 정보가 있는 기록으로 존재하며, 이들의 욕구는 고정되어 있습니다. 심이 화면으로 돌아오면 게임은 시간대별 곡선에 따라 각 욕구를 설정합니다. 예를 들어, 배고픔은 6:00와 18:00에 낮고 식사 후에는 가득 차며, 에너지는 6:00에 가득 차고 22:00부터 낮아집니다. 방광은 7:00, 13:30, 21:00에 채워집니다. 각 심은 90분에서 120분까지 무작위 오프셋을 받습니다. 심 하루 동안 부재한 후에는 욕구가 곡선 값으로 설정되며, 더 짧은 부재 후에는 게임이 보간합니다. 플레이어의 가족은 부지 밖에서도 실제 욕구 감소가 유지됩니다.
6.1 세부 정보 수준 및 상한선
| 수준 | 게임이 유지하는 정보 | 상한선 |
|---|---|---|
| 최소 | 관계, 특성, 가계도 | 100 |
| 배경 | + 직업 | 628 |
| 기본 | + 욕구, 버프, 의상 | 170 |
| 상호작용 | 기본과 동일 | 100 |
| 전체 | + 소망, 외출 행동 | 35 |
| 활동 중 (가족) | + 열망 | 8 |
출처: tuning/tun/sims.culling.culling_tuning.xml
