<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-23721639</id><updated>2026-05-10T19:31:36.110+09:00</updated><category term="잡담"/><category term="감상"/><category term="게임"/><category term="영화"/><category term="PS4"/><category term="애니메이션"/><category term="PSP"/><category term="개발"/><category term="안드로이드"/><category term="게임업계"/><category term="닌텐도"/><category term="PS5"/><category term="게임기"/><category term="게임회사"/><category term="PC"/><category term="Unreal Engine 3"/><category term="미드"/><category term="후기"/><category term="Assassin&#39;s Creed"/><category term="Call of Duty"/><category term="Star Wars"/><category term="개발자"/><category term="스타워즈"/><category term="스파이더맨"/><category term="PS3"/><category term="개발도구"/><category term="마블"/><category term="윈도우"/><category term="정치"/><category term="회사"/><category term="Android"/><category term="Marvel"/><category term="PS2"/><category term="SF"/><category term="게임개발사"/><category term="기획"/><category term="부동산"/><category term="블로거닷컴"/><category term="비스타"/><category term="삽질"/><category term="소설"/><category term="언리얼 엔진 3"/><category term="통계"/><category term="툼레이더"/><category term="프로그래머"/><category term="프로그래밍"/><category term="007"/><category term="Apple"/><category term="C++"/><category term="Gears of War"/><category term="Irrlicht"/><category term="John Wick"/><category term="MMORPG"/><category term="Mission: Impossible"/><category term="Modern Warfare"/><category term="Tomb Raider"/><category term="Uncharted"/><category term="Unreal Engine 4"/><category term="Wii"/><category term="Windows"/><category term="Xbox360"/><category term="건담"/><category term="게임 프로그래머"/><category term="근황"/><category term="기어즈오브워"/><category term="네이버"/><category term="데이비드 웨버"/><category term="모토로이"/><category term="번역"/><category term="소니"/><category term="슈퍼로봇대전"/><category term="스위치"/><category term="스타리그"/><category term="스타크래프트"/><category term="아이돌"/><category term="아이디어"/><category term="아이폰"/><category term="애플"/><category term="언차티드"/><category term="유머"/><category term="일리히트"/><category term="존윅"/><category term="포켓몬스터"/><category term="3DS"/><category term="AppStore"/><category term="Battlefield"/><category term="C#"/><category term="D-War"/><category term="EA"/><category term="FPS"/><category term="GameTech"/><category term="Ghost of tsushima"/><category term="KGC"/><category term="MS"/><category term="Mac"/><category term="Marvel&#39;s Spider-Man"/><category term="NC"/><category term="Nintendo"/><category term="No One Lives Forever"/><category term="PCG"/><category term="Remastered"/><category term="Saints Row"/><category term="Stable Diffusion"/><category term="Switch"/><category term="The Legend of Zelda"/><category term="Unreal Summit"/><category term="Unreal Tournament 3"/><category term="Vista"/><category term="Wild Hunt"/><category term="Witcher"/><category term="moniwiki"/><category term="xbox one"/><category term="게임 엔진"/><category term="게임테크"/><category term="고민"/><category term="구글블로그"/><category term="구조조정"/><category term="구직"/><category term="기획자"/><category term="냥코대전쟁"/><category term="네오위즈"/><category term="대통령"/><category term="디 워"/><category term="면접"/><category term="모모타로전철"/><category term="모토글램"/><category term="몬스터길들이기"/><category term="문서화"/><category term="배틀필드"/><category term="보안"/><category term="부고"/><category term="뻘짓"/><category term="설치"/><category term="앱스토어"/><category term="엔씨"/><category term="온게임넷"/><category term="옵티머스 LTE II"/><category term="위쳐"/><category term="이명박"/><category term="인생"/><category term="일드"/><category term="일본 드라마"/><category term="젤다의 전설"/><category term="큰북의달인"/><category term="텍스트큐브"/><category term="프로젝트"/><category term="프로젝트 관리"/><category term="1886"/><category term="2.1"/><category term="2011"/><category term="A Spy in H.A.R.M.&#39;s Way"/><category term="A Thief&#39;s End"/><category term="AMD"/><category term="AV"/><category term="Addams Family"/><category term="Advanced Warfare"/><category term="Agents of Mayhem"/><category term="Alchemy"/><category term="Alex Cross"/><category term="Andromeda"/><category term="Angry Birds"/><category term="Anniversary"/><category term="Ant-Man"/><category term="Antoine Fuqua"/><category term="Atom"/><category term="Atomic Blonde"/><category term="AutoHotkey"/><category term="Avengers"/><category term="BBK"/><category term="Behavior Tree"/><category term="Big Hero 6"/><category term="Black Flag"/><category term="Black Widow"/><category term="Blender"/><category term="Breath of the Wild"/><category term="Bruce Willis"/><category term="CMake"/><category term="CSI"/><category term="CSI:LV"/><category term="Captain America"/><category term="Captain Marvel"/><category term="Castle Falls"/><category term="Chrome"/><category term="Civil War"/><category term="Clive Barker"/><category term="Cocco"/><category term="Code Beautifier"/><category term="Code Formatter"/><category term="Code::Blocks"/><category term="Crystal Dynamics"/><category term="Cyberpunk 2077"/><category term="DC"/><category term="Darkest Hour"/><category term="Days Gone"/><category term="Dead Reckoning"/><category term="Death Stranding"/><category term="Detroit: Become Human"/><category term="DirectX"/><category term="DirectX10"/><category term="DirectX9"/><category term="Director&#39;s Cut"/><category term="Doctor Strange"/><category term="Doom Eternal"/><category term="Doxygen"/><category term="Dragon Age"/><category term="Dragon Age Inquisition"/><category term="DragonNest"/><category term="Dungeons &amp; Dragons"/><category term="Edge of tomorrow"/><category term="Eidos"/><category term="Excel"/><category term="FC서울"/><category term="FEAR2"/><category term="FMCB"/><category term="FSF"/><category term="Facial Image to Metahuman"/><category term="Fallen Order"/><category term="Fallout"/><category term="GIS"/><category term="GM"/><category term="GOTY"/><category term="GP506"/><category term="GPLv3"/><category term="GPMStudio"/><category term="GPU"/><category term="GSP"/><category term="GStar"/><category term="Game"/><category term="Game of the year"/><category term="Genymotion"/><category term="Ghosted"/><category term="Girlicious"/><category term="God of War"/><category term="Godzilla"/><category term="Graphviz"/><category term="Guardian of Light"/><category term="HD-DVD"/><category term="HDTV"/><category term="Hitman&#39;s Wife&#39;s Bodyguard"/><category term="Honor Among Thieves"/><category term="Horizon Forbidden West"/><category term="Horizon Zero Dawn"/><category term="Hunyuan 3D"/><category term="IIS"/><category term="IT"/><category term="Inquisition"/><category term="Inside Out"/><category term="Jack Reacher"/><category term="Jedi"/><category term="Jericho"/><category term="Kate Beckinsale"/><category term="Killing Eve"/><category term="Kingsman"/><category term="K리그"/><category term="LEGO"/><category term="LG"/><category term="Lara Croft"/><category term="Launcher"/><category term="Len Wiseman"/><category term="Linux"/><category term="Live Free or Die Hard"/><category term="Mad Max"/><category term="Mass Effect"/><category term="Mayhem"/><category term="MegaTexture"/><category term="Metahuman"/><category term="Microsoft"/><category term="Middle-earth"/><category term="Miles Morales"/><category term="Murder On The Orient Express"/><category term="Murdered Soul Suspect"/><category term="NDS"/><category term="NS"/><category term="Never Go Back"/><category term="No Time To Die"/><category term="No Way Home"/><category term="OTL"/><category term="Odyssey"/><category term="Olympus Has Fallen"/><category term="On Basilisk station"/><category term="OpenPS2Loader"/><category term="Operation Mincemeat"/><category term="Origins"/><category term="Outlook"/><category term="PC그린"/><category term="PES"/><category term="PGA"/><category term="PSP폰"/><category term="PSV"/><category term="Parabellum"/><category term="Part 1"/><category term="Patch"/><category term="Person of Interest"/><category term="PhysicsEngine"/><category term="PlayStation"/><category term="Portal"/><category term="QA"/><category term="RSS"/><category term="RTS"/><category term="RX100"/><category term="Ragnarok"/><category term="Raining"/><category term="RakNet"/><category term="Rambo"/><category term="Re-Elected"/><category term="Resurrections"/><category term="ReviewBoard"/><category term="Rise of the Tomb Raider"/><category term="Rogue Nation"/><category term="Rogue One"/><category term="Ronin"/><category term="SCP 재단"/><category term="SD Gundam G Generation World"/><category term="SDK"/><category term="SKT"/><category term="SK스마트미러링"/><category term="Search Results"/><category term="Second Son"/><category term="Shader"/><category term="Shadow of Mordor"/><category term="Shadow of the Tomb Raider"/><category term="Shia LaBeouf"/><category term="Side Panel"/><category term="Solo"/><category term="Sony"/><category term="SourceTree"/><category term="Spartacus"/><category term="Spectre"/><category term="Spider-Man"/><category term="Story of Your Life"/><category term="Subversion"/><category term="Super Heroes"/><category term="Syndicate"/><category term="T1"/><category term="T3"/><category term="Tears of the Kingdom"/><category term="Tech5"/><category term="Ted Chiang"/><category term="The Amazing Spider-Man 2"/><category term="The Force Awakens"/><category term="The Honor of the Queen"/><category term="The Last Jedi"/><category term="The Last Ship"/><category term="The Last of Us"/><category term="The Man Who Never Was"/><category term="The Matrix"/><category term="The Nathan Drake Collection"/><category term="The New Order"/><category term="The Operative"/><category term="The Rhythm Section"/><category term="The Rise of Skywalker"/><category term="The Shallows"/><category term="The Short Victorious War"/><category term="The Suicide Squad"/><category term="Thor"/><category term="UC"/><category term="UML"/><category term="USIM"/><category term="Ubuntu"/><category term="Unity"/><category term="UniversalIndentGUI"/><category term="Unreal Engine 5"/><category term="Valhalla"/><category term="Virtools"/><category term="Visual Studio 2010"/><category term="WDDM"/><category term="WDM"/><category term="WIPI"/><category term="Wednesday"/><category term="Weeds"/><category term="Westworld"/><category term="Wii U"/><category term="Wolfenstein"/><category term="Wonder Woman 1984"/><category term="X-Men"/><category term="XP"/><category term="Zack Snyder&#39;s Justice League"/><category term="Zard"/><category term="Zootopia"/><category term="Z건담"/><category term="adsense"/><category term="archive"/><category term="avast"/><category term="batch"/><category term="blog"/><category term="blogger.com"/><category term="bug"/><category term="dokuwiki"/><category term="e-sports"/><category term="folder"/><category term="iPhone"/><category term="id"/><category term="inFAMOUS"/><category term="openSUSE"/><category term="round trip engineering"/><category term="svn"/><category term="timestamp"/><category term="tmax"/><category term="tortoisesvn"/><category term="twitter"/><category term="uLaunchELF"/><category term="wiki"/><category term="wxFormBuilder"/><category term="wxWidgets"/><category term="お姉チャンバラ"/><category term="かまいたちの夜"/><category term="坂井泉水"/><category term="强く儚い者たち"/><category term="樹海の糸"/><category term="가부키초"/><category term="감독"/><category term="감원"/><category term="강남"/><category term="강문영"/><category term="건담배틀로얄"/><category term="건담배틀유니버스"/><category term="건담배틀크로니클"/><category term="건담어설트서바이브"/><category term="검색 결과"/><category term="격언"/><category term="결승"/><category term="결혼"/><category term="경구"/><category term="경기조작"/><category term="경력"/><category term="경질"/><category term="경품"/><category term="고스트 오브 쓰시마"/><category term="고스팅"/><category term="고오쓰"/><category term="고졸"/><category term="고질라"/><category term="곰플레이어"/><category term="공략"/><category term="관리자"/><category term="관상"/><category term="괴담"/><category term="교과서"/><category term="교수"/><category term="교육"/><category term="구글"/><category term="구글어스"/><category term="구인글"/><category term="금융감독원"/><category term="나나와 카오루"/><category term="너로 정했다!"/><category term="네 인생의 이야기"/><category term="네버 고 백"/><category term="넷우익"/><category term="넷피아"/><category term="노 타임 투 다이"/><category term="노력"/><category term="노웨이홈"/><category term="노트북"/><category term="다이하드4.0"/><category term="다키스트 아워"/><category term="닥터 스트레인지"/><category term="달력"/><category term="당첨"/><category term="대선"/><category term="대운하"/><category term="댓글"/><category term="더 수어사이드 스쿼드"/><category term="데이즈 곤"/><category term="도시전설"/><category term="도재욱"/><category term="돌프 룬드그렌"/><category term="뒷담화"/><category term="드래곤네스트"/><category term="디 오더"/><category term="디시인사이드"/><category term="라그나로크"/><category term="라스트 오브 어스"/><category term="라이즈 오브 스카이워커"/><category term="람보"/><category term="러브크래프트"/><category term="런쳐"/><category term="렌 와이즈먼"/><category term="로그원"/><category term="로닌"/><category term="로망"/><category term="로버트 로드리게즈"/><category term="로즈 맥고완"/><category term="리눅스"/><category term="리니지3"/><category term="리얼리티쇼"/><category term="리저렉션"/><category term="링크"/><category term="마법사"/><category term="마셰티"/><category term="마이크로소프트"/><category term="마일즈 모랄레스"/><category term="마츠노 아키나리"/><category term="만화"/><category term="말장난"/><category term="맞춤법"/><category term="매드 맥스"/><category term="매크로"/><category term="매트릭스"/><category term="메가TV"/><category term="메가TV for PS3"/><category term="메모"/><category term="메이헴"/><category term="모건 프리먼"/><category term="모리구치 히로코"/><category term="모바일상품권"/><category term="물리엔진"/><category term="미니스카 폴리스"/><category term="미니스커트 폴리스"/><category term="미래"/><category term="미우라 켄타로"/><category term="미카미신지"/><category term="바실리스크 스테이션"/><category term="바이러스"/><category term="박성준"/><category term="백업"/><category term="백운산"/><category term="버그"/><category term="베르세르크"/><category term="별명"/><category term="복원"/><category term="브루스 윌리스"/><category term="블랙 위도우"/><category term="블로그"/><category term="블루레이"/><category term="빡침"/><category term="빵집"/><category term="사용기"/><category term="사카이 노리코"/><category term="사카이이즈미"/><category term="살려주세요"/><category term="삼국지"/><category term="삼성경제연구소"/><category term="상상력"/><category term="샤이아 라보프"/><category term="설계"/><category term="성능"/><category term="세계대전Z"/><category term="셰이더"/><category term="소감"/><category term="소녀전선"/><category term="소니에릭슨"/><category term="소방관"/><category term="소스트리"/><category term="소프트웨어"/><category term="송병구"/><category term="수리"/><category term="수원삼성"/><category term="순양전함 나이키"/><category term="술집"/><category term="스즈미야 하루히"/><category term="스파르타쿠스"/><category term="스파이웨어"/><category term="스파키즈"/><category term="스펙터"/><category term="시나리오"/><category term="시빌워"/><category term="신입"/><category term="실망"/><category term="실베스터 스탤론"/><category term="심심풀이"/><category term="쏠림"/><category term="아마즈메 류타"/><category term="아사히나 미쿠루"/><category term="아웃룩"/><category term="아유카와 마미"/><category term="아토믹 블론드"/><category term="알렉스 크로스"/><category term="알집"/><category term="애니버서리"/><category term="애드센스"/><category term="애드웨어"/><category term="앤트맨"/><category term="앵그리버드"/><category term="야구"/><category term="야마자키 사야카"/><category term="야생의 숨결"/><category term="야쿠자"/><category term="양보"/><category term="어벤져스"/><category term="언더 워터"/><category term="에드워드 즈윅"/><category term="에이전트 오브 메이헴"/><category term="엑스박스"/><category term="엔진"/><category term="엠게임"/><category term="여동생"/><category term="여성편력"/><category term="여왕 폐하의 해군"/><category term="영구기관"/><category term="오네짱바라"/><category term="오리엔트 특급 살인"/><category term="오픈수세"/><category term="올림픽"/><category term="와일드 헌트"/><category term="왕국의 눈물"/><category term="우분투"/><category term="우울"/><category term="우회상장"/><category term="울펜슈타인"/><category term="원더우먼 1984"/><category term="원한해결사무소"/><category term="월드워Z"/><category term="웹머신즈"/><category term="위닝일레븐"/><category term="위키"/><category term="위피"/><category term="윌리엄 허트"/><category term="은행"/><category term="이공계"/><category term="이름"/><category term="이명근"/><category term="이벤트"/><category term="이영훈"/><category term="이용자수"/><category term="이정헌"/><category term="이클립스"/><category term="이프"/><category term="인맥"/><category term="인사이드 아웃"/><category term="인수"/><category term="인퍼머스"/><category term="임부"/><category term="자드"/><category term="자막"/><category term="잡동사니"/><category term="재난"/><category term="재난게임"/><category term="재워드립니다"/><category term="잭 리처"/><category term="잭 스나이더"/><category term="저스티스 리그"/><category term="절망선생"/><category term="절체절명도시3"/><category term="정명훈"/><category term="정부"/><category term="정책"/><category term="제다이"/><category term="제리코"/><category term="조이콘"/><category term="조현재"/><category term="좋은 관리자의 조건"/><category term="주제가"/><category term="주토피아"/><category term="주훈"/><category term="줄리 벤즈"/><category term="중국"/><category term="중독"/><category term="쥬만지"/><category term="지구방위군5"/><category term="지니모션"/><category term="지스타"/><category term="지하철"/><category term="직연"/><category term="진학"/><category term="착각"/><category term="천호진"/><category term="초딩"/><category term="취직"/><category term="측면 패널"/><category term="카고 아이"/><category term="카라"/><category term="카마이타치의밤"/><category term="카하라 토모미"/><category term="캐슬 폴즈"/><category term="캡콤"/><category term="캡틴 마블"/><category term="캡틴 아메리카"/><category term="케이스"/><category term="케이트 베킨세일"/><category term="쿵푸팬더"/><category term="크롬"/><category term="크툴루"/><category term="클라우드 컴퓨팅"/><category term="클라이브 바커"/><category term="클로버스튜디오"/><category term="킹스맨"/><category term="타이거 우즈"/><category term="타일러 페리"/><category term="탐 크루즈"/><category term="태블릿"/><category term="태터앤컴퍼니"/><category term="테드 창"/><category term="테크노스재팬"/><category term="토르"/><category term="트위터"/><category term="트집"/><category term="티맥스"/><category term="파프롬홈"/><category term="패치"/><category term="페이트/그랜드 오더"/><category term="평균근속연수"/><category term="포털"/><category term="폴 발레리"/><category term="프랑스"/><category term="프로리그"/><category term="프로요"/><category term="프로토타이핑"/><category term="플래닛 테러"/><category term="플레이스테이션"/><category term="피곤"/><category term="하치스카 유키코"/><category term="학력"/><category term="학벌"/><category term="학연"/><category term="한 솔로"/><category term="한동욱"/><category term="한빛"/><category term="한일전"/><category term="해고"/><category term="해적왕과 최후의 보물"/><category term="헤쎈"/><category term="현실"/><category term="호라이즌 포비든 웨스트"/><category term="홈커밍"/><category term="환상"/><category term="황우석"/><category term="회사명"/><title type='text'>Flowers bloom in sunlight</title><subtitle type='html'>이 블로그는 게임개발, IT 업계, 엔터테인먼트 등의 주제를 가지고 다소 루즈하게 운영되고 있습니다..</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://szmyoung.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23721639/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://szmyoung.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/23721639/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Sean Myoung</name><uri>http://www.blogger.com/profile/16105280024115881940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>397</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-23721639.post-6505593631254351208</id><published>2025-09-12T14:00:00.001+09:00</published><updated>2025-09-12T14:14:20.249+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="2.1"/><category scheme="http://www.blogger.com/atom/ns#" term="Hunyuan 3D"/><title type='text'>Hunyuan 3D 2.1 돌려봄</title><content type='html'>&lt;p&gt;Hunyuan 3D 2.1을 돌려봤음.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;ComfyUI에서 된다고 하길레 설치하려 했는데 잘 안 돌아서 잠깐 문제를 고쳐보려다 관두고 검색해보니 github에 누군가 정리해서 올려둔 걸 발견.&lt;/p&gt;&lt;p&gt;https://github.com/YanWenKun/Hunyuan3D-2-WinPortable&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;설치방법을 따라한 후 Win10, RTX5090에서 돌려봤는데 잘 돌아감. 생성하는 geometry는 이전 버전인 2.0과 별 차이가 없고 PBR 텍스쳐 기능만 추가된 듯 함. 역시나 아직은 게임에 넣고 쓸만한 상태는 아닌 듯. 약간 다듬으면 프랍 정도는 가능하려나.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://szmyoung.blogspot.com/feeds/6505593631254351208/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://szmyoung.blogspot.com/2025/09/hunyuan-3d-21.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23721639/posts/default/6505593631254351208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23721639/posts/default/6505593631254351208'/><link rel='alternate' type='text/html' href='http://szmyoung.blogspot.com/2025/09/hunyuan-3d-21.html' title='Hunyuan 3D 2.1 돌려봄'/><author><name>Sean Myoung</name><uri>http://www.blogger.com/profile/16105280024115881940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23721639.post-8044325228960308115</id><published>2025-09-10T18:00:00.003+09:00</published><updated>2025-09-10T18:16:16.146+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="PCG"/><category scheme="http://www.blogger.com/atom/ns#" term="번역"/><title type='text'>계획을 활용한 퀘스트 및 스토리 (번역)</title><content type='html'>&lt;p&gt;제&lt;span lang=&quot;EN-US&quot;&gt;7&lt;/span&gt;장 계획을 활용한 퀘스트 및 스토리&lt;/p&gt;&lt;p&gt;원문 출처 :&amp;nbsp;https://www.pcgbook.com/&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Yun-Gyung Cheong, Mark O. Riedl,
Byung-Chull Bae, Mark J. Nelson&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;요약&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;대부분의 게임은 어떤 형태의 서사를 포함한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;게임 콘텐츠의 다른
측면과 마찬가지로&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;스토리도 생성될 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이 장에서는
주로 계획 알고리즘을 사용하여 스토리를 생성하는 방법을 논의한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;플랜 공간에서 탐색하는 알고리즘과
상태 공간에서 탐색하는 알고리즘 모두가 이때 유용할 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;또한 스토리와 대응하는 게임 세계를 함께
생성하는 방법을 제시한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;7.1 &lt;/span&gt;게임 속 스토리&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;게임은 종종 스토리라인을 가진다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;어떤 게임에서는 짧은 배경 이야기를
제공하여 액션을 설정한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;예를 들어 일인칭 슈팅 게임 둠&lt;span lang=&quot;EN-US&quot;&gt;(Doom)&lt;/span&gt;의
스토리는 부적절하게 지옥으로 가는 포털을 열어버린 군사 과학 실험에 관한 것으로&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;이 스토리는 게임의
분위기와 일반적인 주제를 설정하고&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;플레이어가 레벨을 탐험하고 악마를 쏘는 이유를 동기화하는 데 그
목적이 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;게임이 시작된 이후에는 레벨 진행과 게임 메커닉이 스토리와 거의 관련이 없다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;다른 게임에서는 스토리라인이 게임 진행을 더 깊이 구조화하여&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;게임
플레이가 이루어지는 내러티브 아크를 제공한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;파이널 판타지 시리즈는 이 스타일의 게임 스토리라인을
대표하는 예시이다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;이 글의 주제는 게임에 들어가는 모든 것을 절차적으로 생성하는 것이므로&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;이제
절차적으로 게임 스토리라인을 생성하는 방법을 살펴보는 것은 놀라운 일이 아니다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;앞 장에서 논의한 게임
규칙의 절차적 생성과 마찬가지로&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;스토리라인의 절차적 생성은 다른 종류의 절차적 콘텐츠 생성과는 다소
차이가 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;스토리라인은 게임과 깊이 얽혀 있으며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;게임의
장르와 메커닉에 크게 의존하기 때문이다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;어드벤쳐 게임과 롤플레잉 게임에서 게임의 스토리라인을 게임 플레이와 통합하는 일반적인 방법은 퀘스트이다&lt;span lang=&quot;EN-US&quot;&gt;[23, 1]. &lt;/span&gt;퀘스트에서 플레이어는 게임 세계에서 할 일을 부여받는다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이
일은 보통 현재 스토리라인의 상태에 의해 동기화되며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;완료하면 스토리를 어떤 방식으로든 전진시킨다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;예를 들어&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;플레이어는 물건을 회수하거나&lt;span lang=&quot;EN-US&quot;&gt;, NPC&lt;/span&gt;를 돕거나&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;몬스터를 물리치거나&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;물품을 다른 마을로 운송하는 일을 맡게 될 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;일부 게임&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;특히&lt;span lang=&quot;EN-US&quot;&gt; RPG)&lt;/span&gt;은 하나의 거대한 퀘스트로 구성되며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;이를 작은 하위 퀘스트로 나누어 게임플레이와 스토리 진행이 교차하도록 설계된다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;제일장에 다룬 일반적인 절차적 콘텐츠 생성 논증을 넘어&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;게임 디자이너가
게임 스토리를 절차적으로 생성하려는 여러 가지 이유가 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;한 가지 이유는 절차적으로 생성된 게임
세계가 플레이어에게 의미나 동기가 부족할 수 있기 때문이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이는 세계와 함께 스토리의 관련 부분을
절차적으로 생성해 게임 스토리와 연결되지 않으면 발생한다&lt;span lang=&quot;EN-US&quot;&gt;. Ashmore&lt;/span&gt;와&lt;span lang=&quot;EN-US&quot;&gt; Nitsche [2]&lt;/span&gt;는&lt;span lang=&quot;EN-US&quot;&gt; &#39;&lt;/span&gt;문맥과 목표가 없으면 생성된 행동&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;그래픽&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;게임 공간이 실질적이거나 지루하게 될 위험이 있다&lt;span lang=&quot;EN-US&quot;&gt;&#39;&lt;/span&gt;고 주장한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;두 번째 이유는 퀘스트를 절차화하면 실제로 플레이할
수 있는 게임이 된다는 점이다&lt;span lang=&quot;EN-US&quot;&gt;. Sullivan &lt;/span&gt;등&lt;span lang=&quot;EN-US&quot;&gt; [21]&lt;/span&gt;은
컴퓨터&lt;span lang=&quot;EN-US&quot;&gt; RPG&lt;/span&gt;는 흔히 퀘스트가&lt;span lang=&quot;EN-US&quot;&gt; &#39;&lt;/span&gt;일반적으로 과제나 마일스톤의
목록으로 구성된다&lt;span lang=&quot;EN-US&quot;&gt;&#39;&lt;/span&gt;는 매우 퇴화된 형태를 갖는다고 지적한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이는
플레이어가 창의적으로 충족할 수 있는 개방형 목표 대신이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;테이블탑&lt;span lang=&quot;EN-US&quot;&gt;
RPG&lt;/span&gt;는 훨씬 복잡하고 개방형 퀘스트를 가지고 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;그 이유는 인간 게임 마스터가 게임
진행 중에 퀘스트를 동적으로 생성하고 조정할 수 있기 때문이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;즉&lt;span lang=&quot;EN-US&quot;&gt;,
&lt;/span&gt;미리 작성되지 않는다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;절차적 퀘스트 생성은 그 유연성을 비디오게임 퀘스트에 다시 가져오는
방법을 제공한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;7.2 &lt;/span&gt;계획을 통한 절차적 스토리 생성&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;스토리를 절차적으로 생성하는 한 가지 방법은 그것들을 계획 문제로 보는 것이다&lt;span lang=&quot;EN-US&quot;&gt;.
&lt;/span&gt;인공지능에서는 계획 알고리즘이 목표를 만족시키는 행동 시퀀스를 찾는다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;예를 들어&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;로봇은 물체를 집어 옮기기 위해 필요한 액추에이터 움직임 시퀀스를 계획한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;스토리의 행동 시퀀스는 무엇이며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;목표는 무엇인가&lt;span lang=&quot;EN-US&quot;&gt;? &lt;/span&gt;이 질문에 답하는 방법은 여러 가지가 있으며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;절차적 스토리 생성
연구자들은 &lt;span lang=&quot;EN-US&quot;&gt;1970&lt;/span&gt;대에 이를 살펴보기 시작했다&lt;span lang=&quot;EN-US&quot;&gt;—&lt;/span&gt;당시에는 게임
스토리가 아닌 순수 텍스트 기반 단편 소설을 생성했다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;우리는 스토리를 이야기 세계&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;우리 경우에는 게임 세계&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;에서 일어나는 사건들의 시퀀스로 답할 수 있다&lt;span lang=&quot;EN-US&quot;&gt;—&lt;/span&gt;이 시퀀스는 결국 사건
연쇄를 통해 스토리의 끝으로 이끈다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;따라서 우리는 가상의 작품을 시뮬레이션함으로써 스토리를 생성한다&lt;span lang=&quot;EN-US&quot;&gt;: &lt;/span&gt;스토리를 말하기 위해 우리는 먼저 캐릭터가 움직이고 행동하는 것을 시뮬레이션하고&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;그 다음에 스토리는 단순히 발생한 사건을 회상하는 것으로 이루어진다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이
접근 방식을 취한 최초의 영향력 있는 스토리 생성 시스템 중 하나인&lt;span lang=&quot;EN-US&quot;&gt; Tale-Spin[14]&lt;/span&gt;가 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;스토리 세계를 시뮬레이션하여 스토리를 생성하는 것은 몇 가지 단점이 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이는
스토리를 단순히 사건 로그와 차별화시키는 요소&lt;span lang=&quot;EN-US&quot;&gt;—&lt;/span&gt;특히 흥미로운 스토리의 요소&lt;span lang=&quot;EN-US&quot;&gt;—&lt;/span&gt;를 고려하지 않는다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;스토리는 저자에 의해 일정한 속도&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;드라마틱한 긴장감&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;예고&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;내러티브
아크 등을 갖도록 신중히 구성된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;반면에 가상 캐릭터의 일상 시뮬레이션은 이러한 좋은 스토리의 특징을
우연히 갖출 가능성은 있지만 반드시 갖는 것은 아니다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이 문제를 해결하기 위해 우리는 스토리 세계에서
행동을 취하는 주인공의 관점이 아니라&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;스토리를 쓰는 저자의 관점에서 스토리 계획 문제를 바라볼 수
있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;따라서 스토리 계획은 저자의 목표에 맞는 내러티브 시퀀스를 구성하는 문제로 바뀐다&lt;span lang=&quot;EN-US&quot;&gt;[6]. Universe[12]&lt;/span&gt;와&lt;span lang=&quot;EN-US&quot;&gt; Minstrel[25]&lt;/span&gt;는 작가 중심
접근 방식을 취하는 두 개의 잘 알려진 스토리 생성기이다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;비디오 게임 스토리의 경우&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;작가의 관점에서 계획을 세우는 것은 문제를
더 복잡하게 만들 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이는 플레이어가 게임의 스토리 세계에서 행동하고&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;작가의 머릿속이 아니라 실제 세계에서 상호작용하기 때문이다&lt;span lang=&quot;EN-US&quot;&gt;.
Tale-Spin&lt;/span&gt;과 같은 접근법을 사용하여 스토리 세계 내에서 일어나는 이야기를 절차적으로 생성하는 것은 더 직관적일 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이는 플레이어가 상호작용할 장소와 사건에 대해 동일한 내용을 다루는 장점이 있기 때문이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;반면에 우리는 여전히 서사 아크와 다른 작가 수준의 목표를 원할 수 있으며&lt;span lang=&quot;EN-US&quot;&gt;,
&lt;/span&gt;이는 스토리 세계 사건 위에 작가 수준의 목표를 계획하는 하이브리드 시스템으로 이어질 수 있다&lt;span lang=&quot;EN-US&quot;&gt; [13,
19]. &lt;/span&gt;많은 질문이 아직 열려 있으므로 게임에서의 절차적 스토리 생성은 활발히 연구되는 분야이다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;이 장의 나머지 부분에서는 스토리 계획의 개념과 알고리즘을 소개하고&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;계획을
사용해 인터랙티브 스토리를 생성하는 예시를 살펴본다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;7.3 &lt;/span&gt;계획을 계획 공간을 통한 탐색으로 보기&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;계획은 문제 영역에 대한 지식이 주어졌을 때&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;잠재적 해들의 공간을
탐색하여 주어진 문제에 대한 해를 찾는 과정으로 볼 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이 문제를 계획 문제라고 하며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;목표 상태와 초기 상태로 구성된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;계획 문제의 해는 행동 시퀀스를
포함하는 계획이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;실행 시 초기 상태에서 시작해 목표 상태에 도달한다면&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;그 계획은 타당하다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;도메인 지식은 계획 연산자들의 라이브러리로
표현되며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;각 연산자는 전제 조건 세트와 효과 세트로 구성된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;전제
조건은 연산자를 실행하기 위해 충족되어야 할 조건이며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;효과는 계획 연산자가 실행되어 업데이트되는 조건이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;잠재적 해의 공간은 두 가지 방식으로 표현될 수 있다&lt;span lang=&quot;EN-US&quot;&gt;: &lt;/span&gt;상태 공간
또는 계획 공간&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;상태 공간은 노드와 호&lt;span lang=&quot;EN-US&quot;&gt;(arc)&lt;/span&gt;로 구성된
트리로 표현할 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;노드는 상태를 나타내고&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;호는 연산자
적용에 의한 상태 전이를 나타낸다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;알고리즘이 전진 탐색&lt;span lang=&quot;EN-US&quot;&gt;(forward
progression search)&lt;/span&gt;일 때는 공간의 루트 노드가 초기 상태를 나타내고&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;역
회귀 탐색&lt;span lang=&quot;EN-US&quot;&gt;(backward regression search)&lt;/span&gt;일 때는 루트 노드가 목표 상태를 나타낸다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;아래는 상태 공간 알고리즘의 의사코드이다&lt;span lang=&quot;EN-US&quot;&gt;:&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;1: &lt;/span&gt;루트 노드를 초기 상태로 구성&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;2: &lt;/span&gt;비종단 노드를 선택한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;mso-char-indent-count: 2.0; text-indent: 22pt;&quot;&gt;비종단 노드가
없으면 실패를 반환하고 종료한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;mso-char-indent-count: 2.0; text-indent: 22pt;&quot;&gt;현재 노드가 목표
상태라면&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;초기 상태에서 현재 상태까지의 경로를 솔루션으로 반환하고 종료한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;3: &lt;/span&gt;적용 가능한 연산자를 선택한다&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;전진
탐색에서는 전제 조건이 참이고&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;역 회귀 탐색에서는 효과가 참&lt;span lang=&quot;EN-US&quot;&gt;).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;mso-char-indent-count: 2.0; text-indent: 22pt;&quot;&gt;해당 연산자가
없으면 노드를 종단으로 표시하고 이로 돌아간다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;
&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;4: &lt;/span&gt;연산자를 적용해 자식 노드를 구성한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;mso-char-indent-count: 2.0; text-indent: 22pt;&quot;&gt;그래프의 노드
수가 사전 정의된 최대 탐색 노드 수를 초과하면 실패를 반환하고 종료한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;5: 2&lt;/span&gt;단계로 이동&lt;span lang=&quot;EN-US&quot;&gt;.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;계획 공간&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;그림&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; 7.1
&lt;/span&gt;참조&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;은 노드와 아크로 구성된 트리로 표현될 수 있으며&lt;span lang=&quot;EN-US&quot;&gt;,
&lt;/span&gt;상태 공간과 달리 트리의 루트 노드가 계획 문제&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;초기 상태 및 목표 상태를 명시한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;각 리프 노드는 실행 시 주어진 초기 상태에서 목표 상태를 달성할 수 있는 완전한 계획&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;즉&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;해결책&lt;span lang=&quot;EN-US&quot;&gt;) &lt;/span&gt;혹은 계획의
불일치로 인해 더 이상 정제할 수 없는 부분 계획을 나타낸다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;내부 노드는 결함이 있는 부분 계획을
나타낸다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;탐색 과정은 부모 노드를 부모 노드의 결함을 수정하는 계획으로 정제하는 과정으로 볼 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;계획의 결함은 이전 계획 단계에서 설정되지 않은 열린 전제 조건이거나&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;이미
확립된 인과 관계를 뒤집을 수 있는 위협일 수 있다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;다음은 부분 순서 계획 알고리즘의 의사코드 설명이다&lt;span lang=&quot;EN-US&quot;&gt;:&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;1: &lt;/span&gt;계획 문제를 루트 노드로 생성한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;2: &lt;/span&gt;휴리스틱 값을 기준으로 비말단 노드를 선택한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;3: &lt;/span&gt;노드에서 결함을 선택한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;mso-char-indent-count: 2.0; text-indent: 22pt;&quot;&gt;결함이 없으면
노드를 솔루션으로 반환하고 종료한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;4: &lt;/span&gt;결함을 수리하여 자식 노드를 생성한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;mso-char-indent-count: 2.0; text-indent: 22pt;&quot;&gt;결함이 열려 있는
전제일 경우에는&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;mso-char-indent-count: 4.0; text-indent: 44pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;a) &lt;/span&gt;기존 계획 단계에서 인과 연결을 설정하거나&lt;span lang=&quot;EN-US&quot;&gt;,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;mso-char-indent-count: 4.0; text-indent: 44pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;b) &lt;/span&gt;전제를 만족하는 효과를 갖는 새로운 계획 단계를 추가한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;mso-char-indent-count: 2.0; text-indent: 22pt;&quot;&gt;결함이 위협일
경우에는&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;mso-char-indent-count: 4.0; text-indent: 44pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;a) &lt;/span&gt;위협받는 인과 연결이 방해받지 않도록 시계열 순서 제약을 추가하거나&lt;span lang=&quot;EN-US&quot;&gt;,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;mso-char-indent-count: 4.0; text-indent: 44pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;b) &lt;/span&gt;위협 단계와 위협받는 인과 연결에 참여하는 단계들을 분리하는 바인딩 제약을 추가한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;mso-char-indent-count: 2.0; text-indent: 22pt;&quot;&gt;결함이 수리 불가능한
경우에는 노드를 말단으로 표시하고 &lt;span lang=&quot;EN-US&quot;&gt;2&lt;/span&gt;번 단계로 돌아간다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;mso-char-indent-count: 2.0; text-indent: 22pt;&quot;&gt;그래프의 노드
수가 미리 정의된 최대 탐색 노드 수를 초과하면 실패를 반환하고 종료한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;5: 2&lt;/span&gt;번 단계로 이동한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;상태공간 탐색 알고리즘이 생성하는 완전한 계획은 전순서 계획이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이는
계획의 모든 단계에 대한 시계열 순서 제약을 지정한다는 의미이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;반대로 부분 순서 계획은 위협을 해결하기
위해 반드시 설정해야 하는 시계열 순서만 지정한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;예를 들어&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;식료품점에서
우유와 빵을 사는 목표가 주어졌다고 가정해 보자&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;목표는 먼저 어떤 것을 사야 할지 걱정하지 않고도
성공적으로 달성할 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;하지만 전순서 계획은 이 두 구매 행위의 순서를 지정하고&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;두 가지 계획을 생성한다&lt;span lang=&quot;EN-US&quot;&gt;: a) &lt;/span&gt;먼저 우유를 사고 그 다음에 빵을
사는 경우&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;그리고&lt;span lang=&quot;EN-US&quot;&gt; b) &lt;/span&gt;먼저 빵을 사고 그 다음에 우유를
사는 경우&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;반면에 부분 순서 계획은 순서 제약을 지정하지 않으며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;필요할
때까지 결정이 연기된다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Figure 7.1: &lt;/span&gt;계획 공간 그래프&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;루트 노드&lt;span lang=&quot;EN-US&quot;&gt; #1&lt;/span&gt;은 초기 단계와 목표 단계만 있는 빈 계획을 나타낸다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;초기 단계는 효과로&lt;span lang=&quot;EN-US&quot;&gt; p&lt;/span&gt;를 포함하고&lt;span lang=&quot;EN-US&quot;&gt;,
&lt;/span&gt;목표 단계는 전제로&lt;span lang=&quot;EN-US&quot;&gt; g&lt;/span&gt;를 포함한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;노드&lt;span lang=&quot;EN-US&quot;&gt; #2&lt;/span&gt;와&lt;span lang=&quot;EN-US&quot;&gt; #3&lt;/span&gt;은 각각 다른 계획 단계&lt;span lang=&quot;EN-US&quot;&gt;
S1, S2&lt;/span&gt;를 추가하여 열린 전제&lt;span lang=&quot;EN-US&quot;&gt; g&lt;/span&gt;를 수정한 부분 계획이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;노드&lt;span lang=&quot;EN-US&quot;&gt; #4&lt;/span&gt;는 초기 단계와 인과 연결을 만들어서 열린 전제&lt;span lang=&quot;EN-US&quot;&gt; p&lt;/span&gt;를 수정한 완전한 계획이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;한 개의 해만 필요하다면 여기서 탐색을
끝낼 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;모든 해를 찾으려면&lt;span lang=&quot;EN-US&quot;&gt; #3&lt;/span&gt;에서부터 정제 탐색이
계속돼서 더 많은 자식 노드&lt;span lang=&quot;EN-US&quot;&gt; (#5, #6, #7)&lt;/span&gt;를 만든다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;노드&lt;span lang=&quot;EN-US&quot;&gt; #7&lt;/span&gt;은 열린 전제&lt;span lang=&quot;EN-US&quot;&gt; c&lt;/span&gt;를 고칠 수 있는 연산자가 없으므로 터미널로 표시된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;추가 해를 찾는 탐색은&lt;span lang=&quot;EN-US&quot;&gt; #6(&lt;/span&gt;보여지지 않음&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;에서 계속된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;계획 공간 탐색에서는 현재 계획에 포함된 단계 수와 결함 수를 바탕으로 최적 완전 계획의 길이를 추정하는 휴리스틱
함수를 사용해 탐색 과정을 안내할 수 있다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;
&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;상태 공간 탐색과 계획 공간 탐색 모두 장점이 있지만&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;계획 공간
탐색 플래너는 인간이 이야기를 읽을 때 만드는 정신 구조와 비슷한 표현을 가지고 있고&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;탐색 과정이
인간이 해결책을 찾으려 할 때의 추론 방식과 닮아 있어 스토리 제작에 선호된다&lt;span lang=&quot;EN-US&quot;&gt; [24]. &lt;/span&gt;또한 계획
구조에 인코딩된 인과 관계는 스토리 요약이나 정서 생성 같은 서사 컴퓨터 모델을 더 깊이 탐구할 수 있게 한다&lt;span lang=&quot;EN-US&quot;&gt;
[3, 5]. &lt;/span&gt;그러나 부분 순서 계획&lt;span lang=&quot;EN-US&quot;&gt;(POP)&lt;/span&gt;은 계획이 길어질수록 공간이 기하급수적으로
증가해 계산 비용이 많이 들기 때문에 많은 실용적인 응용에서는 사용되지 않는다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;계층적 작업 네트워크&lt;span lang=&quot;EN-US&quot;&gt;(HTN)[20, 22]&lt;/span&gt;는 복합 비원시 행동을
더 작은 원시 행동으로 재귀적으로 분할하여 계획을 계층적으로 표현한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;그림 &lt;span lang=&quot;EN-US&quot;&gt;7.2&lt;/span&gt;는 추상 작업을 원시 작업으로 분해하는&lt;span lang=&quot;EN-US&quot;&gt; HTN &lt;/span&gt;행동 스키마를 보여준다&lt;span lang=&quot;EN-US&quot;&gt;. HTN&lt;/span&gt;은 캐릭터 행동을 생성함으로써 이야기를 만드는 데 활용할 수 있다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Fig.&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; 7&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;.2: HTN &lt;/span&gt;동작 스키마&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;타원은 추상 연산자이며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;직사각형은 기본 연산자이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이 예시는 게임 세계에서 한 시간 동안
진행되는&lt;span lang=&quot;EN-US&quot;&gt; NPC &lt;/span&gt;활동을 인코딩한다&lt;span lang=&quot;EN-US&quot;&gt;. NPC&lt;/span&gt;는 피곤하면 잠을
자거나 무작위 작업을 수행할 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;배고플 때는 음식 획득&lt;span lang=&quot;EN-US&quot;&gt;(“Get
Food”)&lt;/span&gt;을 시도할 수도 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;음식 획득은 추상 작업이며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;사냥&lt;span lang=&quot;EN-US&quot;&gt;(Hunt)&lt;/span&gt;과 사냥 배우기&lt;span lang=&quot;EN-US&quot;&gt;(Learn
Hunting) &lt;/span&gt;같은 기본 작업으로 분해된다&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;[11].&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;HTN &lt;/span&gt;계획은 계획 공간에서 적절한 계획을 탐색한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;간단한&lt;span lang=&quot;EN-US&quot;&gt; HTN &lt;/span&gt;알고리즘은 다음과 같다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;1. &lt;/span&gt;추상 연산자를 사용해 루트 노드를 생성한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;2. &lt;/span&gt;확장할 추상 연산자를 선택한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;mso-char-indent-count: 2.0; text-indent: 22pt;&quot;&gt;추상 연산자가
없고&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;mso-char-indent-count: 4.0; text-indent: 44pt;&quot;&gt;모든 전제 조건이
만족되면&lt;span lang=&quot;EN-US&quot;&gt;,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;mso-char-indent-count: 4.0; text-indent: 44pt;&quot;&gt;네트워크를 해결책으로
반환하고 종료한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;3. &lt;/span&gt;전제 조건이 참인 동작 스키마를 선택한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;mso-char-indent-count: 2.0; text-indent: 22pt;&quot;&gt;해당 방법이 없으면
실패를 반환한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;4. &lt;/span&gt;추상 연산자를 하위 작업으로 분해한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;mso-char-indent-count: 2.0; text-indent: 22pt;&quot;&gt;동작 스키마에
인코딩된 형식으로&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;5. 2&lt;/span&gt;단계로 돌아간다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;7.4 &lt;/span&gt;도메인 모델 &lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;도메인 모델은 특정 도메인&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;이 장에서는 스토리 월드&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;의 지식을 인코딩한 계획 연산자 템플릿 라이브러리이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;상태&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;동작&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;목표를 통해 계획 문제를 기술하기 위해 다양한 형식 언어가
제안되었다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이 절에서는 고전 플래너에서 널리 사용되는&lt;span lang=&quot;EN-US&quot;&gt; STRIPS&lt;/span&gt;와&lt;span lang=&quot;EN-US&quot;&gt; ADL &lt;/span&gt;두 가지 계획 언어에 초점을 맞춘다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;형식론으로 넘어가기 전에 예를 들어 보겠다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이야기 속 캐릭터인 알렉스가
건물 옥상에 있다고 상상해 보자&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;그의 목표는 부상 없이 건물의 바닥층에 도착하는 것이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;알렉스는 즉시 여러 계획을 생각할 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;예를 들어&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;엘리베이터를 타는 것&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;계획&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; 1&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;), &lt;/span&gt;계단을 내려가는 것&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;계획&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; 2&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;), &lt;/span&gt;혹은 옥상에서 뛰어내리는 것&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;계획&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; 3&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;을 할 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;결정을 내리려면 그의 능력&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;예&lt;span lang=&quot;EN-US&quot;&gt;: &lt;/span&gt;노인이거나 이동성에 문제가 있는 경우&lt;span lang=&quot;EN-US&quot;&gt;), &lt;/span&gt;건물의 시설&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;예&lt;span lang=&quot;EN-US&quot;&gt;: &lt;/span&gt;엘리베이터&lt;span lang=&quot;EN-US&quot;&gt;), &lt;/span&gt;그리고 그의 선호&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;예&lt;span lang=&quot;EN-US&quot;&gt;: &lt;/span&gt;알렉스는
운동을 위해 계단을 내려가는 것을 항상 선호함&lt;span lang=&quot;EN-US&quot;&gt;) &lt;/span&gt;등과 같은 제약을 고려해야 한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;건물에 엘리베이터가 있고 알렉스가 빠르게 바닥층으로 가고 싶다면 계획&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; 1&lt;/span&gt;이
가장 적합하다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;알렉스는 건물에 엘리베이터가 없으면&lt;span lang=&quot;EN-US&quot;&gt; Plan 2&lt;/span&gt;를
선택할 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;알렉스가 낙하산을 가지고 있고 칼을 든 연쇄 살인자가 그에게 달려오는 경우&lt;span lang=&quot;EN-US&quot;&gt; Plan 3&lt;/span&gt;을 선택할 수 있다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;계획 알고리즘의 목표는 이러한 종류의 결정을 형식화하는 것이다&lt;span lang=&quot;EN-US&quot;&gt;: &lt;/span&gt;다양한
조건&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;제약 및 선호도에 직면해 목표를 극대화하는 계획을 찾는 것이다&lt;span lang=&quot;EN-US&quot;&gt;.
&lt;/span&gt;따라서 문제 도메인을 가장 잘 표현하는 형식 언어를 선택하는 것이 중요하다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;7.4.1 STRIPS &lt;/span&gt;스타일 계획 표현&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;STRIPS&lt;/span&gt;는 &lt;span lang=&quot;EN-US&quot;&gt;1971&lt;/span&gt;년&lt;span lang=&quot;EN-US&quot;&gt; Fikes&lt;/span&gt;와&lt;span lang=&quot;EN-US&quot;&gt; Nilson&lt;/span&gt;에 의해 도입되었으며&lt;span lang=&quot;EN-US&quot;&gt; [7], &lt;/span&gt;계획 분야의 많은 현대 형식 언어의 선구자이다&lt;span lang=&quot;EN-US&quot;&gt;. STRIPS &lt;/span&gt;스타일
계획에서 상태는 프로포지션적 리터럴&lt;span lang=&quot;EN-US&quot;&gt;(propositional literal) &lt;/span&gt;또는 첫 번째 순서의 리터럴&lt;span lang=&quot;EN-US&quot;&gt;(first-order literal) &lt;/span&gt;중 하나로 표현된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이때 리터럴은
그라운드&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;즉&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;변수와 함수가 없는&lt;span lang=&quot;EN-US&quot;&gt;) &lt;/span&gt;상태이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;프로포지션적 리터럴은 참 또는 거짓이 될 수 있는 명제를
나타내며&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;예&lt;span lang=&quot;EN-US&quot;&gt;: p, q, PoorButler), &lt;/span&gt;첫 번째
순서의 논리 리터럴은 객체 간의 관계를 나타내며 이 관계도 참 또는 거짓이 될 수 있다&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;예&lt;span lang=&quot;EN-US&quot;&gt;: At(Butler,House), Lord(Higginbotham)).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;STRIPS &lt;/span&gt;스타일 표현에서는 닫힌 세계 가정&lt;span lang=&quot;EN-US&quot;&gt;(closed-world assumption)&lt;/span&gt;을 한다&lt;span lang=&quot;EN-US&quot;&gt;—&lt;/span&gt;명시적으로 지정되지
않은 조건은 모두 거짓으로 간주된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;따라서 초기 상태&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;목표
상태&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;전제 조건을 묘사할 때는 양수 리터럴만 사용된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;동작의
효과에는 특정 조건을 부정하기 위해 음수 리터럴이 포함될 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;위에서 논의한 알렉스가 건물을 떠나는
방법을 선택하는 시나리오를&lt;span lang=&quot;EN-US&quot;&gt; STRIPS &lt;/span&gt;스타일로 공식화하면 다음과 같다&lt;span lang=&quot;EN-US&quot;&gt;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;• 초기 상태 표현&lt;span lang=&quot;EN-US&quot;&gt;:&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;
&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;
&lt;/span&gt;At(Alex,Rooftop) ∧ Alive(Alex) ∧ Walkable(Rooftop,Ground) ∧ Person(Alex)
∧ Place(Rooftop) ∧ Place(Ground)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;• 목표 상태 표현&lt;span lang=&quot;EN-US&quot;&gt;:&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;
&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;
&lt;/span&gt;At(Alex,Ground) ∧ Alive(Alex)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;• 동작 표현&lt;span lang=&quot;EN-US&quot;&gt;:&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;
&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;
&lt;/span&gt;Action(WalkStairs(p,from,to))&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;
&lt;/span&gt;PRECONDITION: At(p,from) ∧ Walkable(from,to) ∧ Person(p) ∧ Place(from) ∧
Place(to)&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;
&lt;/span&gt;EFFECT: ¬At(p,from) ∧ At(p,to)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;위 예에서 초기 상태는 여섯 개의 첫 번째 순서 논리 술어를 합성한 것으로 표현된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;목표 상태는 같은 방식으로 두 개의 술어를 합성한 것이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;동작
표현에서&lt;span lang=&quot;EN-US&quot;&gt; WalkStairs&lt;/span&gt;라는 동작은 세 개의 변수 매개변수&lt;span lang=&quot;EN-US&quot;&gt;(p,
from, to)&lt;/span&gt;를 가지며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;동작의 전제 조건은 다섯 개의 술어를 합성한 것으로 표현되고&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;동작의 효과는 음수 리터럴을 포함한 두 개의 술어를 합성한 것으로 표시된다&lt;span lang=&quot;EN-US&quot;&gt;.
WalkStairs &lt;/span&gt;동작은 그 전제 조건이 만족될 때에만 적용되고 실행된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;실행 후&lt;span lang=&quot;EN-US&quot;&gt;, At(p, from) &lt;/span&gt;조건은 현재 세계 상태에서 삭제되고&lt;span lang=&quot;EN-US&quot;&gt; At(p, to) &lt;/span&gt;조건은
현재 세계 상태에 추가된다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;7.4.2 ADL, &lt;/span&gt;액션 디스크립션 언어&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;STRIPS&lt;/span&gt;는 세계의 상태를 모델링하기 위한 효율적인 표현 언어이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;상대적으로 단순한 논리 서술&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;예&lt;span lang=&quot;EN-US&quot;&gt;:
&lt;/span&gt;양수와 함수가 없는 리터럴의 결합&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;을 사용해 현실 세계의 특정 도메인에서의 상태와 행동을
해당 추상 계획 문제로 변환할 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;그러나 이 단순성은 복잡한 계획 문제에서 한계가 될 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;따라서 많은 후속 계획 표현은 더 많은 기능으로 확장된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;대표적인
확장 언어 중 하나가 액션 디스크립션 언어&lt;span lang=&quot;EN-US&quot;&gt;(ADL)&lt;/span&gt;이며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;다음과
같은 추가 기능을 제공한다&lt;span lang=&quot;EN-US&quot;&gt;[16]: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;• 양수와 음수 리터럴이 모두 허용되며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;오픈 월드 의미론&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;명시되지 않은 조건은 기본적으로 거짓이 아니라 알 수 없음으로 간주&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;을
따른다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;• 목표 상태 묘사에 양화 변수와 결합&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;및&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;과 분리&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;또는&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;의 조합이
허용된다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;• 조건부 효과가 허용된다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;• 동등성 및 비동등성 술어&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;예&lt;span lang=&quot;EN-US&quot;&gt;:
(from is not to))&lt;/span&gt;와 타입이 지정된 변수&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;예&lt;span lang=&quot;EN-US&quot;&gt;:
(p: Person), (from: Location))&lt;/span&gt;를 지원한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;이전 예시의&lt;span lang=&quot;EN-US&quot;&gt; ADL &lt;/span&gt;스타일 표현은 아래와 같다&lt;span lang=&quot;EN-US&quot;&gt;:&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;• 초기 상태 표현&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;
&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;At(Alex, Rooftop) ∧ ¬Dead(Alex) ∧
Walkable(Rooftop, Ground) ∧ Person(Alex) ∧ Place(Rooftop) ∧ Place(Ground) ∧
Wearing(Alex, Parachute) ∧ ¬Injured(Alex) ∧ Thing(Parachute)&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;• 목표 상태 표현&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;
&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;At(Alex, Ground) ∧ ¬(Dead(Alex) ∨
Injured(Alex))&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;• 동작 표현&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;
&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Action(WalkStairs(p: Person, from: Place,
to: Place))&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;PRECONDITION: At(p, from) ∧ (from &lt;/span&gt;육&lt;span lang=&quot;EN-US&quot;&gt;= to) ∧ (Walkable(from, to))&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;EFFECT: ¬At(p, from) ∧ At(p, to)&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Action(JumpFromRooftop(p: Person, from:
Place, to: Place, sth:Thing))&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;PRECONDITION: At(p, from) ∧ (from &lt;/span&gt;육&lt;span lang=&quot;EN-US&quot;&gt;= to) ∧ Emergent(p)&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;EFFECT: ¬At(p, from) ∧ At(p, to) ∧ (when
Wearing(p, Parachute): ¬Dead(p))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;7.5 &lt;/span&gt;스토리 계획&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;스토리는 부분 순서 계획으로 표현될 수 있는데&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;이는&lt;span lang=&quot;EN-US&quot;&gt; &amp;lt;S, O, C&amp;gt; &lt;/span&gt;튜플로 나타내며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;여기서&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;• &lt;span lang=&quot;EN-US&quot;&gt;S&lt;/span&gt;는 일련의 사건&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;즉&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;인스턴스화된 계획 연산자&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;을&lt;span lang=&quot;EN-US&quot;&gt;,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;• &lt;span lang=&quot;EN-US&quot;&gt;O&lt;/span&gt;는 시점 순서를&lt;span lang=&quot;EN-US&quot;&gt;
(s₁&amp;nbsp;→&amp;nbsp;s₂) &lt;/span&gt;형태로 표시하며&lt;span lang=&quot;EN-US&quot;&gt;, s₁&lt;/span&gt;이&lt;span lang=&quot;EN-US&quot;&gt; s₂&lt;/span&gt;보다 앞서 있음을 의미하고&lt;span lang=&quot;EN-US&quot;&gt;,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;• &lt;span lang=&quot;EN-US&quot;&gt;C&lt;/span&gt;는 인과 연결 목록으로&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;인과
연결은&lt;span lang=&quot;EN-US&quot;&gt; (s,&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;t;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;c) &lt;/span&gt;형태로 표시되어 계획 단계&lt;span lang=&quot;EN-US&quot;&gt; s&lt;/span&gt;가&lt;span lang=&quot;EN-US&quot;&gt;
c&lt;/span&gt;를 설정하고&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;이는 단계&lt;span lang=&quot;EN-US&quot;&gt; t&lt;/span&gt;의 전제 조건임을
나타낸다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;그림&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; 7&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;.3&lt;/span&gt;은 초기 상태&lt;span lang=&quot;EN-US&quot;&gt; have(Butler, Wine) ∧ have(Butler, Poison) ∧ serving(Butler, Lord)&lt;/span&gt;에서
시작하여 목표&lt;span lang=&quot;EN-US&quot;&gt; dead(Lord)&lt;/span&gt;를 달성하는 네 개의 사건으로 구성된 스토리를 보여준다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;계획의 텍스트 설명은 다음과 같이 읽을 수 있다&lt;span lang=&quot;EN-US&quot;&gt;: (1) Butler&lt;/span&gt;가
독을 와인에 넣는다&lt;span lang=&quot;EN-US&quot;&gt;. (2) Butler&lt;/span&gt;가 와인을&lt;span lang=&quot;EN-US&quot;&gt; Lord
Higginbotham&lt;/span&gt;에게 옮긴다&lt;span lang=&quot;EN-US&quot;&gt;. (3) Lord Higginbotham&lt;/span&gt;이 와인을 마신다&lt;span lang=&quot;EN-US&quot;&gt;. (4) Lord Higginbotham&lt;/span&gt;이 넘어져 죽는다&lt;span lang=&quot;EN-US&quot;&gt;. (&lt;/span&gt;원본
스토리는&lt;span lang=&quot;EN-US&quot;&gt; [4]&lt;/span&gt;에서 가져온 것이다&lt;span lang=&quot;EN-US&quot;&gt;.)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;이 계획은 스토리로서 합리적으로 보인다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;그러나 이것이 최소 단계
수를 갖는 최적 계획인가&lt;span lang=&quot;EN-US&quot;&gt;? Butler&lt;/span&gt;가 대신&lt;span lang=&quot;EN-US&quot;&gt; Poison&lt;/span&gt;을&lt;span lang=&quot;EN-US&quot;&gt; Lord&lt;/span&gt;에게 건네주었다면 어떨까&lt;span lang=&quot;EN-US&quot;&gt;? &lt;/span&gt;그 경우 계획은 세 단계로 구성된다&lt;span lang=&quot;EN-US&quot;&gt;: 1) Butler&lt;/span&gt;가&lt;span lang=&quot;EN-US&quot;&gt; Poison&lt;/span&gt;을 운반한다&lt;span lang=&quot;EN-US&quot;&gt;. 2) Lord&lt;/span&gt;가&lt;span lang=&quot;EN-US&quot;&gt; Poison&lt;/span&gt;을 마신다&lt;span lang=&quot;EN-US&quot;&gt;. 3) Lord&lt;/span&gt;가 넘어진다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;이미 알았겠지만&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;새로운 계획은 논리적으로 타당하지만 좋은 스토리를
만들지는 않는다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;왜&lt;span lang=&quot;EN-US&quot;&gt; Lord&lt;/span&gt;가 이 계획에 동의할까&lt;span lang=&quot;EN-US&quot;&gt;? &lt;/span&gt;이는 작가 중심 스토리 생성이 개별 인물의 합리적 의도를 무시할 수 있다는 문제점 중 하나다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;대안으로&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;인물 중심 스토리 생성은 각 인물이 자신의 행동을 계획하도록
한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이는 논리적으로 일관된 행동 집합을 생산할 가능성이 높지만&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;순수
인물 중심 계획만으로는 흥미로운 스토리가 나올 것이라 단정할 수 없다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;말할 수 있는 상황은 거의 작가의
목표 없이 발생하지 않는다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이 문제를 해결하기 위해&lt;span lang=&quot;EN-US&quot;&gt; Riedl&lt;/span&gt;과&lt;span lang=&quot;EN-US&quot;&gt; Young&lt;/span&gt;은 작가 중심 접근과 인물 중심 접근의 균형을 맞추는 의도 기반 계획 알고리즘을 제안했다&lt;span lang=&quot;EN-US&quot;&gt; [19].&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;7.6 &lt;/span&gt;게임 세계와 스토리 함께 생성하기&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;많은 컴퓨터 게임은 스토리 플레이와 개방형 플레이가 교차되는 기간을 통해 플레이어를 끌어들인다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;스토리 플레이는 플레이어가 게임 세계를 원하는 결말로 이끄는 서사적 순서에 따라 진행하도록 촉진하는 활동을
포함한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이 장에서 제시한 바와 같이&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;스토리는 실행될
때 세계를 점진적으로 원하는 결말에 가까워지게 하는 부분적으로 순서가 있는 행동 계획으로 표현될 수 있으며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;이는
목표 상황으로 대표된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;개방형 플레이는 스토리 계획을 진행시키지 않으며&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;또는 억제하지도 않으며&lt;span lang=&quot;EN-US&quot;&gt;) &lt;/span&gt;플레이어의 활동을 포함한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;개방형 플레이 활동의 예로는 공간 환경 탐험&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;무작위 적과의 만남&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;보물이나 아이템을 찾는 것이 있다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;그림 &lt;span lang=&quot;EN-US&quot;&gt;7.3: &lt;/span&gt;버틀러 이야기&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;사각형은
이벤트를 나타내고 화살표는 소스 이벤트가 대상 이벤트에 대한 조건을 설정하는 인과 연결을 나타낸다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;시간
순서는 위에서 아래로 진행한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;원본 스토리는&lt;span lang=&quot;EN-US&quot;&gt; [4]&lt;/span&gt;에서
가져왔다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;이 섹션은 스토리 플레이와 오픈 엔디드 플레이를 포함한 게임 플레이 경험을 생성하는 것에 관한 것이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;플레이어는 스토리 플레이와 오픈 엔디드 플레이에 관련된 모든 위치를 포함하는 공간 환경인 게임 세계에 몰입하고&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;게임 캐릭터와 다른 모든&lt;span lang=&quot;EN-US&quot;&gt; NPC&lt;/span&gt;가 거주하는 세계를 기대한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;스토리 플레이와 오픈 엔디드 플레이는 종종 공간 환경과 연결된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;불행히도&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;스토리 플랜 생성기를 사용한다고 해도 공간 환경과 연결되지 않으면 플레이 가능한 경험이 반드시 생기지는 않는다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;자동으로 생성된 스토리 플랜의 목적에 맞는 게임 세계가 존재하지 않는 경우&lt;span lang=&quot;EN-US&quot;&gt;,
&lt;/span&gt;게임 세계를 자동으로 생성할 수 있다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;게임 세계 생성을 동기화하기 위해&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;표 &lt;span lang=&quot;EN-US&quot;&gt;7.1&lt;/span&gt;의 완전 정렬 플랜을 생각해 보자&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이 플랜은 플레이어 캐릭터인
팔라딘이 왕의 신뢰를 얻고&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;보물 동굴에 대해 배우고&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;덫을
탈출하기 위해 일련의 작업을 수행한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;플랜의 각 행동은 이후 행동이 발생하기 위해 필요한 여러 세계
조건을 설정한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;예를 들어&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;마녀는 죽은 뒤에만 신발을
떨어뜨리고&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;왕은 마녀의 신발을 받으면 팔라딘을 신뢰한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;스토리
플랜은 목표 상황으로 진행하기 위한 필수 단계만 제공하고&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;스토리 진행에 영향을 주지 않는 플레이어
활동에 대해서는 추론하지 않는다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;표 &lt;span lang=&quot;EN-US&quot;&gt;7.1: &lt;/span&gt;이벤트 위치가 포함된 예시 계획&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;1. &lt;/span&gt;팔라딘이 물통을 왕궁에서 가져옵니다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;2. &lt;/span&gt;팔라딘이 바바 야가를 물통과 함께 무덤일에서 죽입니다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;3. &lt;/span&gt;바바 야가가 루비 슬리퍼를 무덤일에서 떨어뜨립니다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;4. &lt;/span&gt;팔라딘이 신발을 무덤일에서 가져옵니다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;5. &lt;/span&gt;팔라딘이 신발을 사용해 알프레드 왕에게 신뢰를 얻습니다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;6. &lt;/span&gt;알프레드 왕이 보물에 대해 보물 동굴에서 팔라딘에게 말합니다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;7. &lt;/span&gt;팔라딘이 보물을 보물 동굴에서 가져옵니다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;8. &lt;/span&gt;팔라딘이 보물 동굴에서 덫을 닫습니다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;9. &lt;/span&gt;팔라딘이 보물 동굴에서 퍼즐을 해결합니다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;10. &lt;/span&gt;팔라딘이 보물 동굴에서 덫을 엽니다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;도메인 모델은 스토리 진행에 가장 중요한 세계의 측면에 집중하기 위해 플레이어와&lt;span lang=&quot;EN-US&quot;&gt; NPC&lt;/span&gt;의 순간순간 활동을 많이 추상화한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;하지만 게임 플레이는 항상
분리된 연산의 순서가 아니다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;예를 들어 퍼즐을 해결하려면 여러 개의 레버를 올바른 순서로 작동시켜야
할 수도 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이 장에서는 스토리 계획의 연산을 그 추상적 특성을 강조하기 위해 이벤트라고 부르겠다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이벤트는 시간적으로 연장된다&lt;span lang=&quot;EN-US&quot;&gt;; &lt;/span&gt;각 이벤트는 연속적인 기간을 가질
수 있고 이벤트 사이에 긴 시간 간격이 있을 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;계획은 이벤트 사이의 개방형 플레이 기회를 고려하지
않는다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;예를 들어&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;묘지는 성에 비해 어디에 있고&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;그 거리를 이동하는 데 얼마나 걸리며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;플레이어가 그 과정에서 직접적으로
스토리 계획과 관련이 없는 무엇을 볼 수 있을지 등을 말한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;게임 세계가 정해져 있다면&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;즉&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;여러
위치와&lt;span lang=&quot;EN-US&quot;&gt; NPC&lt;/span&gt;가 있는 고정된 세계라면&lt;span lang=&quot;EN-US&quot;&gt;) &lt;/span&gt;계획의 스토리 이벤트가
게임 세계의 가상 위치와 매핑된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;예를 들어&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;표 &lt;span lang=&quot;EN-US&quot;&gt;7.1&lt;/span&gt;의 게임 세계는 묘지&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;성&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;보물
동굴이 필요하다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;그러나 자동 생성된 스토리 계획의 특성상&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;스토리
계획의 요구 사항을 충족하는 하나의 고정된 게임 세계를 갖는 것이 항상 가능하지는 않다&lt;span lang=&quot;EN-US&quot;&gt;: &lt;/span&gt;위치가 누락될
수 있고&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;관련 없는 위치가 너무 많을 수 있으며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;위치를
재배치해야 보다 일관되고 의미 있는 흐름을 만들 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;다음 절에서는 스토리 계획을 기반으로 플레이
가능한 게임 세계를 자동으로 생성하는 기술을 설명한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;7.6.1 &lt;/span&gt;스토리에서 공간으로&lt;span lang=&quot;EN-US&quot;&gt;: &lt;/span&gt;게임
세계 생성&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;게임은 종종 플롯 포인트와 열린 게임 플레이를 교차하므로&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;생성되는
게임 세계는 세계에서 일어나는 일련의 사건이 일관되게 진행되도록 보장해야 한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;문제는 다음과 같이
정의할 수 있다&lt;span lang=&quot;EN-US&quot;&gt;: &lt;/span&gt;알려진 유형의 위치를 참조하는 이벤트 목록이 주어지면&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;이벤트를 선형으로 진행할 수 있는 게임 세계를 생성한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;스토리를
공간에 매핑하기 위해 우리는 섬과 다리의 비유를 사용할 것이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;섬은 사건이 발생하는 공간 영역이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;다리는 섬 사이에 있는 영역으로&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;열린 게임 플레이가 진행되는 곳이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;다리는 분기할 수 있어&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;플레이어가 스토리 진행 중에 반드시 방문해야
할 필요가 없는 영역이 있을 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;다리의 길이와 다리의 분기 인수는 디자이너가 설정하거나 플레이어
모델에 의해 결정될 수 있는 매개변수이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;게임 세계는 세 단계 파이프라인에서 생성된다&lt;span lang=&quot;EN-US&quot;&gt;: (1) &lt;/span&gt;스토리 계획을 파싱하여 이벤트가 참조하는 위치 정보를 추출한다&lt;span lang=&quot;EN-US&quot;&gt;. (2)
&lt;/span&gt;탐색 가능한 공간의 중간 추상 표현을 생성한다&lt;span lang=&quot;EN-US&quot;&gt;. (3) &lt;/span&gt;탐색 가능한 공간의 그래픽 시각화를
구현한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;표 &lt;span lang=&quot;EN-US&quot;&gt;7.2: &lt;/span&gt;기획 도메인에 대한 초기 상태 선언 일부 &lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;영웅&lt;span lang=&quot;EN-US&quot;&gt; (&lt;/span&gt;팔라딘&lt;span lang=&quot;EN-US&quot;&gt;)&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;물건&lt;span lang=&quot;EN-US&quot;&gt; (&lt;/span&gt;물병&lt;span lang=&quot;EN-US&quot;&gt;)&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;타입&lt;span lang=&quot;EN-US&quot;&gt;
(&lt;/span&gt;궁전&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;성&lt;span lang=&quot;EN-US&quot;&gt;)&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;NPC (&lt;/span&gt;바바야가&lt;span lang=&quot;EN-US&quot;&gt;)&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;물건&lt;span lang=&quot;EN-US&quot;&gt; (&lt;/span&gt;보물&lt;span lang=&quot;EN-US&quot;&gt;)&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;타입&lt;span lang=&quot;EN-US&quot;&gt;
(&lt;/span&gt;묘지일&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;묘지&lt;span lang=&quot;EN-US&quot;&gt;)&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;NPC (&lt;/span&gt;킹 알프레드&lt;span lang=&quot;EN-US&quot;&gt;)&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;물건&lt;span lang=&quot;EN-US&quot;&gt; (&lt;/span&gt;루비 슬리퍼&lt;span lang=&quot;EN-US&quot;&gt;)&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;타입&lt;span lang=&quot;EN-US&quot;&gt;
(&lt;/span&gt;보물 동굴&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;동굴&lt;span lang=&quot;EN-US&quot;&gt;)&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;장소&lt;span lang=&quot;EN-US&quot;&gt; (&lt;/span&gt;궁전&lt;span lang=&quot;EN-US&quot;&gt;)&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;악&lt;span lang=&quot;EN-US&quot;&gt; (&lt;/span&gt;바바야가&lt;span lang=&quot;EN-US&quot;&gt;)&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;타입&lt;span lang=&quot;EN-US&quot;&gt;
(&lt;/span&gt;물병&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;버킷&lt;span lang=&quot;EN-US&quot;&gt;)&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;장소&lt;span lang=&quot;EN-US&quot;&gt; (&lt;/span&gt;묘지일&lt;span lang=&quot;EN-US&quot;&gt;)&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;타입&lt;span lang=&quot;EN-US&quot;&gt; (&lt;/span&gt;바바야가&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;마녀&lt;span lang=&quot;EN-US&quot;&gt;)&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;타입&lt;span lang=&quot;EN-US&quot;&gt; (&lt;/span&gt;루비 슬리퍼&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;신발&lt;span lang=&quot;EN-US&quot;&gt;)&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;장소&lt;span lang=&quot;EN-US&quot;&gt; (&lt;/span&gt;보물 동굴&lt;span lang=&quot;EN-US&quot;&gt;)&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;타입&lt;span lang=&quot;EN-US&quot;&gt; (&lt;/span&gt;킹 알프레드&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;왕&lt;span lang=&quot;EN-US&quot;&gt;)&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;타입&lt;span lang=&quot;EN-US&quot;&gt; (&lt;/span&gt;보물&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;금&lt;span lang=&quot;EN-US&quot;&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;먼저&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;생성된 스토리 플랜을 파싱하여 각 위치가 섬이 되는 일련의
위치를 추출한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;스토리 플랜은 완전히 순서가 정해져 있어야 이러한 순서를 생성할 수 있다&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;부분적으로 순서가 지정된 플랜은 완전한 순서가 지정된 플랜으로 변환될 수 있다&lt;span lang=&quot;EN-US&quot;&gt;).
&lt;/span&gt;스토리 플랜의 각 이벤트는 반드시 위치와 연관되어야 한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;예를 들어&lt;span lang=&quot;EN-US&quot;&gt; Table&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; 7&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;.1&lt;/span&gt;의 스토리 플랜에서는&lt;span lang=&quot;EN-US&quot;&gt; palace, graveyard&lt;/span&gt;일&lt;span lang=&quot;EN-US&quot;&gt;, treasure&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt;‑&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;cave&lt;/span&gt;라는 기호가 나타내는 장소에서 이벤트가 발생한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;각 참조된
위치는 타입이 있어야 한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이 정보는 보통 계획 도메인의 초기 상태 선언에서 찾을 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. Table&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; 7&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;.2&lt;/span&gt;는 예시 스토리
플랜을 생성할 때 사용된 도메인의 초기 상태 일부를 보여준다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;따라서 예시 스토리 플랜은 세 장소에서
진행된다&lt;span lang=&quot;EN-US&quot;&gt;: &lt;/span&gt;성&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;이벤트&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; 1&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;,&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; 5&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;,&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; 6&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;), &lt;/span&gt;무덤&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;이벤트&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; 2&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;~4), &lt;/span&gt;동굴&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;이벤트&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; 7&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;~10).&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;다음 단계는 게임 세계를 위치 타입 그래프인 공간 트리&lt;span lang=&quot;EN-US&quot;&gt;(space tree)&lt;/span&gt;로
중간 표현을 생성하는 것이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;공간 트리는 게임 세계가 얼마나 크고&lt;span lang=&quot;EN-US&quot;&gt;,
&lt;/span&gt;고유 위치가 몇 개인지&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;어떤 위치가 서로 인접해 있는지를 나타내는 이산 데이터 구조이다&lt;span lang=&quot;EN-US&quot;&gt;. Figure&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; 7&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;.4&lt;/span&gt;는 예시 공간
트리를 보여준다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이 트리에서 섬 위치에 해당하는 노드&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;스토리
플랜 이벤트가 발생하는 위치&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;는 굵게 표시되고&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;나머지 노드는
다리&lt;span lang=&quot;EN-US&quot;&gt;(bridges)&lt;/span&gt;를 구성한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;계획 도메인은 다리로 사용할 위치 타입에 대한 충분한 정보를 제공하지 않는다&lt;span lang=&quot;EN-US&quot;&gt;.
&lt;/span&gt;따라서 환경 전이 그래프&lt;span lang=&quot;EN-US&quot;&gt;(environment transition graph)&lt;/span&gt;라는 추가
지식 구조가 필요하다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;환경 전이 그래프는 게임 디자이너가 생각하는 좋은 환경 타입 전이를 캡처하는
데이터 구조이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;환경 전이 그래프의 각 노드는 가능한 위치 타입이며&lt;span lang=&quot;EN-US&quot;&gt;,
&lt;/span&gt;엣지는 한 위치 타입에서 다른 위치 타입으로 전이될 확률이 이 아닌 경우를 나타낸다&lt;span lang=&quot;EN-US&quot;&gt;. Figure&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; 7&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;.5&lt;/span&gt;는 환경 전이 그래프 예시를 보여준다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;그림&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; 7&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;.4: &lt;/span&gt;예시 공간
트리&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;섬들은 굵은 선으로 표시된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;출처&lt;span lang=&quot;EN-US&quot;&gt;:&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;[8]&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;그림&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; 7&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;.5: &lt;/span&gt;환경 전이
그래프&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;출처&lt;span lang=&quot;EN-US&quot;&gt;:&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;[8]&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;공간 트리 생성을 위해 평가 기준을 충족하는 공간 트리를 찾는 데는 어떤 최적화 알고리즘이든 활용할 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;절차적 콘텐츠 생성에 대한 일반적인 탐색 기반 접근 방식은 &lt;span lang=&quot;EN-US&quot;&gt;2&lt;/span&gt;장을
참고하고&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;구체적인 구현 세부 사항은&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;[8]&lt;/span&gt;을 참고하자&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;평가 기준은 다음과 같다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;• 다리&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;섬 사이의 공간 트리 노드&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;가
선호되는 길이를 갖는지&lt;span lang=&quot;EN-US&quot;&gt;.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;• 다리가 선호되는 가지수&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;분기 계수&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;를 갖는지&lt;span lang=&quot;EN-US&quot;&gt;.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;
&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;• 측면 경로&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;두 섬 사이에 직접 연결되지 않은 가지 노드&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;의 길이가 선호되는 측면 경로 길이와 일치하는지&lt;span lang=&quot;EN-US&quot;&gt;.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;• 인접한 노드 간의 환경 유형 전이가 환경 전이 그래프 확률과 얼마나 잘 일치하는지&lt;span lang=&quot;EN-US&quot;&gt;.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;이 평가 기준은 디자이너가 설정한 매개변수를 사용한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;다른 평가
기준도 사용할 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;공간 트리가 탐색 기반 최적화 과정을 통해 생성되면&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;세 번째 단계는
게임 세계를 시각적으로 구현하는 것이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;공간 트리는 이 게임 세계의 추상적 표현을 제공하지만 각 위치가
어떻게 보여야 하는지는 알려주지 않는다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;예를 들어 숲&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;마을&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;묘지 등과 같은 외관을 만들기 위해 아트 에셋을 공간적으로 어디에 배치해야 할까&lt;span lang=&quot;EN-US&quot;&gt;?&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;그림&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; 7&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;.6: &lt;/span&gt;그리드에 매핑된
공간 트리&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;출처&lt;span lang=&quot;EN-US&quot;&gt;:&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;[8]&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;우리는 공간 트리로 설명된 게임 세계의 &lt;span lang=&quot;EN-US&quot;&gt;2D, &lt;/span&gt;탑다운&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;타일 기반 그래픽 시각화를 생성하는 그래픽 실현 과정을 설명한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;빈
타일의 격자부터 시작하여 먼저 공간 트리를 &lt;span lang=&quot;EN-US&quot;&gt;2D &lt;/span&gt;격자에 매핑한 뒤&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;격자의
각 셀에 타일을 선택한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;격자가&lt;span lang=&quot;EN-US&quot;&gt; mworld × nworld &lt;/span&gt;타일이라면&lt;span lang=&quot;EN-US&quot;&gt;, mscreen × nscreen &lt;/span&gt;타일은 화면에 동시에 표시될 수 있는 타일 수이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;공간 트리의 각 노드는&lt;span lang=&quot;EN-US&quot;&gt; mlocation × nlocation &lt;/span&gt;화면
그리드에 매핑된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;그림 &lt;span lang=&quot;EN-US&quot;&gt;7.6&lt;/span&gt;에서는 세계가 &lt;span lang=&quot;EN-US&quot;&gt;340×160 &lt;/span&gt;타일이며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;각 화면이 &lt;span lang=&quot;EN-US&quot;&gt;34×16
&lt;/span&gt;타일이고&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;각 위치가 &lt;span lang=&quot;EN-US&quot;&gt;3×3 &lt;/span&gt;화면 격리를 포함한다&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;일부만 표시&lt;span lang=&quot;EN-US&quot;&gt;). &lt;/span&gt;공간 트리를 격자에 매핑하는 방법은 다음과 같다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;공간 트리를 깊이 우선 탐색으로 사용하여 각 자식을 그리드에서 부모 옆에 배치한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;특정 방향&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;예&lt;span lang=&quot;EN-US&quot;&gt;: &lt;/span&gt;왼쪽에서
오른쪽으로&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;으로 세계가 성장하는 알고리즘 편향을 방지하기 위해 각 자식을 배치하려는 방위 방향의 순서를
무작위화할 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;노드가 같은 격자 영역에 매핑될 가능성을 최소화하려면&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;공간 트리를 노드가 최대 두 개의 자식만 가지도록 제한하여 총 세 개의 인접 노드만 있도록 할 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;필요하면 백트래킹한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;매핑 솔루션이 없으면 공간 트리를 폐기하고
다음 최선의 공간 트리를 찾아 검색을 재개한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;공간 트리의 각 노드가 격자상의 영역에 할당되면&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;모듈은 세계의 그래픽
인스턴스화를 시작한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;공간 트리의 각 노드는 환경 유형을 가지며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;이
환경 유형은 배치될 장식물을 결정한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;장식물은 타일 위에 오버레이되는 그래픽 자산이며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;환경 유형을 시각적으로 나타낸다&lt;span lang=&quot;EN-US&quot;&gt;. 2D &lt;/span&gt;타일 기반 게임 세계의 실현에서는
장식물은 서로 다른 환경 유형에서 찾을 수 있는 풍경을 묘사하는 스프라이트이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;숲 환경은 풀&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;나무&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;덤불로 구성된 장식물을 가지고 있고&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;마을은 건물&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;성벽&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;거리
포장석처럼 보이는 장식물을 가진다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;하지만 시스템이 각 장식물의 배치 위치를 어떻게 알 수 있을까&lt;span lang=&quot;EN-US&quot;&gt;? &lt;/span&gt;이
지식 역시 도메인 모델에 존재하지 않으므로&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;세 번째 유형의 외부 지식이 필요하다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;각 환경 유형에는 장식물들을&lt;span lang=&quot;EN-US&quot;&gt; XY &lt;/span&gt;타일 좌표에 대한 확률 분포로
매핑하는 함수가 연결되어 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;우리는 두 종류의 매핑 함수를 확인했다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;가우시안 분포는 위치의 중심점을 기준으로 장식물의 분산을 정의하며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;그
결과 각 위치의 중심점 주변에 장식물이 더 촘촘히 배치된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;가우시안 분포의 장점은 장식물들이 인접한
위치에 배치될 수 있어 하나의 위치가 다음 위치와 자연스럽게 이어지는 듯한 모습을 만들어낸다는 점이다&lt;span lang=&quot;EN-US&quot;&gt; (&lt;/span&gt;그림
&lt;span lang=&quot;EN-US&quot;&gt;7.7 &lt;/span&gt;참조&lt;span lang=&quot;EN-US&quot;&gt;).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Fig.&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; 7&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;.7: &lt;/span&gt;습지와 인접한 숲&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;두 지역 모두 가우시안 분포를 가지며 부드러운
전환을 이룬다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;출처&lt;span lang=&quot;EN-US&quot;&gt;: [8]&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;사용자 정의 분포&lt;span lang=&quot;EN-US&quot;&gt;(custom distribution)&lt;/span&gt;는 장식물을&lt;span lang=&quot;EN-US&quot;&gt; XY &lt;/span&gt;좌표상의 어느 곳에 배치할 확률을 반환하는 임의의&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;설계자가
지정한 함수이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;그림&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; 7&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;.8&lt;/span&gt;은 도시 지역
유형에 대한 사용자 정의 분포를 보여준다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이 분포에 따르면 건물은 그리드형 도시 블록으로 배치될 가능성이
높고&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;포장 돌은 도시 블록 사이의 거리로 사용되며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;방패탑은
도시 외곽을 둘러싸는 고리 형태로 배열된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;그림&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; 7&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;.8&lt;/span&gt;는 표&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; 7&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;.1&lt;/span&gt;의 세 개 섬을 추출한 완전한 게임 세계 예시를 보여준다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;7.6.2 &lt;/span&gt;스토리에서 시간으로&lt;span lang=&quot;EN-US&quot;&gt;: &lt;/span&gt;스토리
계획 실행 &lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;스토리가 전개될 공간이 생성된 후&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;두 가지 추가 문제가 해결되어야
한다&lt;span lang=&quot;EN-US&quot;&gt;: (a) &lt;/span&gt;세계를&lt;span lang=&quot;EN-US&quot;&gt; NPC&lt;/span&gt;로 채워야 하고&lt;span lang=&quot;EN-US&quot;&gt;, (b) NPC&lt;/span&gt;가 스토리를 수행해야 한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;스토리 실행 전에 이 행동은
미리 알 수 없다&lt;span lang=&quot;EN-US&quot;&gt;. NPC&lt;/span&gt;로 세계를 채우는 과정은 스토리 계획에서&lt;span lang=&quot;EN-US&quot;&gt;
NPC &lt;/span&gt;참조를 파싱하고&lt;span lang=&quot;EN-US&quot;&gt;, NPC &lt;/span&gt;유형에 따라 스프라이트를 인스턴스화하여 이벤트에 처음 참여해야
할 위치에 배치하는 단순한 과정이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이벤트의 시간 연장으로 인해&lt;span lang=&quot;EN-US&quot;&gt;
NPC&lt;/span&gt;는 전투를 수행하고&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;대화를 나누며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;덫을
설치하고 트리거하는 등 이벤트를 상세히 설명해야 한다&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;세계 자체가&lt;span lang=&quot;EN-US&quot;&gt;
NPC&lt;/span&gt;가 될 수 있다&lt;span lang=&quot;EN-US&quot;&gt;). &lt;/span&gt;스토리와 세계 지오메트리가 사전에 알려져 있지 않으므로&lt;span lang=&quot;EN-US&quot;&gt;, NPC&lt;/span&gt;는 현재 시점 이전에 발생한 이벤트와 세계 배치에 따라 다양한 상황에서 이벤트를 구체화할 수 있을 만큼
유연해야 한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Fig.&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; 7&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;.8: &lt;/span&gt;도시용 사용자 정의 분포&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;위&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;와
결과 예시&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;아래&lt;span lang=&quot;EN-US&quot;&gt;). &lt;/span&gt;밝은 색일수록 장식물의 확률이 높으며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;빨간색은 건물&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;녹색은 포장 돌&lt;span lang=&quot;EN-US&quot;&gt;,
&lt;/span&gt;파란색은 탑을 나타낸다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;출처&lt;span lang=&quot;EN-US&quot;&gt;: [8]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;한 가지 해결책은 각 이벤트를 반응형 스크립트와 짝지어&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;이벤트를
여러 개의 기본&lt;span lang=&quot;EN-US&quot;&gt; NPC &lt;/span&gt;행동으로 분해하는 것이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;대략적으로
반응형 스크립트는 내부 노드가 추상 행동을 나타내는&lt;span lang=&quot;EN-US&quot;&gt; AND&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt;‑&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;OR &lt;/span&gt;트리 구조이며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;내부 노드는 여러 캐릭터가 함께 수행하는 행동일
수도 있고&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;리프 노드는 애니메이션 같은 실행 가능한 기본 행동을 나타낸다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;반응형 스크립트 실행은 트리를 따라가면서 이벤트를 구현하는 것으로&lt;span lang=&quot;EN-US&quot;&gt;, AND&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt;‑&lt;/span&gt;노드는
하위 행동을 순서대로 연결하고&lt;span lang=&quot;EN-US&quot;&gt; OR&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt;‑&lt;/span&gt;노드는 행동을 달성하는 대안적인
방식을 표현하며&lt;span lang=&quot;EN-US&quot;&gt;, if&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt;‑&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;then&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt;‑&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;else &lt;/span&gt;의사결정 논리를 구현한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;내부 노드는 실행 시점에 가상 세계의
상태에 맞지 않는 하위 트리를 잘라내는 데 사용되는 적용 가능성 기준&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;전제와 유사&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;을 구현할 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;반응형 스크립트 기술의 예로는 행동 트리&lt;span lang=&quot;EN-US&quot;&gt; [9], &lt;/span&gt;계층적 유한 상태 기계&lt;span lang=&quot;EN-US&quot;&gt; [20], SHOP 2 [15] &lt;/span&gt;같은
계층적 작업 네트워크&lt;span lang=&quot;EN-US&quot;&gt;, ABL &lt;/span&gt;반응형 행동 플래너&lt;span lang=&quot;EN-US&quot;&gt; [13] &lt;/span&gt;등이
있다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;자동으로 생성된 스토리를 개방형 게임 세계에서 실행하려면 두 종류의 반응형 스크립트가 필요하다&lt;span lang=&quot;EN-US&quot;&gt; [18]: &lt;/span&gt;내러티브 지시 행동과 로컬 자율 행동&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;내러티브 지시 행동은
도메인 모델의 이벤트 템플릿과 연결된 반응형 스크립트이며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;위와 같이 이벤트를 기본 행동으로 분해한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;내러티브 지시 행동은 연극의 무대 관리자처럼 이벤트를 수행한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이는
특정 캐릭터와 직접 연결되지 않으며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;여러 캐릭터를 동시에 제어할 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;로컬 자율 행동은&lt;span lang=&quot;EN-US&quot;&gt; NPC &lt;/span&gt;유형과 연결되어 있으며&lt;span lang=&quot;EN-US&quot;&gt;, NPC&lt;/span&gt;가 세계에 인스턴스화될 때마다 실행되지만 이벤트에서 다른 역할을 수행하지 않는다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;로컬 자율 행동은 플레이어가 개방형 플레이 중에&lt;span lang=&quot;EN-US&quot;&gt; NPC&lt;/span&gt;를 만났을
때&lt;span lang=&quot;EN-US&quot;&gt;, NPC&lt;/span&gt;가 풍부한 내부 삶을 가지고 있는 것처럼 보이게 만든다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Fig. 7.9: &lt;/span&gt;표&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; 7&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;.1&lt;/span&gt;의 계획에 있는 섬에서 생성된 게임 세계 예시&lt;span lang=&quot;EN-US&quot;&gt;. [8]&lt;/span&gt;에서 가져온
것이다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;7.7 &lt;/span&gt;실습&lt;span lang=&quot;EN-US&quot;&gt;: &lt;/span&gt;이야기 도메인
모델 작성&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;이 실습의 목적은 이야기 도메인 모델을 작성하고 다양한 계획 알고리즘을 특징짓는 것이다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;1. JSHOP2&lt;/span&gt;에 익숙해지기&lt;span lang=&quot;EN-US&quot;&gt; –
JSHOP2&lt;/span&gt;는&lt;span lang=&quot;EN-US&quot;&gt; SHOP2 HTN &lt;/span&gt;플래너&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;원래는&lt;span lang=&quot;EN-US&quot;&gt; Lisp&lt;/span&gt;로 작성&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;의 상용&lt;span lang=&quot;EN-US&quot;&gt; Java &lt;/span&gt;구현체이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;•
JSHOP2&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;mso-ascii-font-family: &amp;quot;Cambria Math&amp;quot;; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;; mso-hansi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt;를&lt;/span&gt;
다운로드하고 설치한다&lt;span lang=&quot;EN-US&quot;&gt; (http://www.cs.umd.edu/projects/shop/).&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;• &lt;/span&gt;패키지에
포함된 샘플 예제를 체크아웃하고 테스트한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;2. &lt;/span&gt;초기 상태&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;목표
상태&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;그리고 행동을 정의하여 두 개의 이야기 도메인&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;빨간
모자와 마그리의 선물&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;을&lt;span lang=&quot;EN-US&quot;&gt; STRIPS &lt;/span&gt;스타일 또는&lt;span lang=&quot;EN-US&quot;&gt; ADL &lt;/span&gt;스타일 표현으로 계획 문제를 작성한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;두 이야기 세계 도메인에
더 적합한 표현을 논의하고 그 이유를 설명한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;3. &lt;/span&gt;위의 계획 문제를&lt;span lang=&quot;EN-US&quot;&gt; JSHOP2&lt;/span&gt;에
적합한&lt;span lang=&quot;EN-US&quot;&gt; HTN &lt;/span&gt;표현으로 변환하고 실행합니다&lt;span lang=&quot;EN-US&quot;&gt;. HTN &lt;/span&gt;계획&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;또는&lt;span lang=&quot;EN-US&quot;&gt; SHOP2 &lt;/span&gt;플래너&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;의
이야기 생성 수단&lt;span lang=&quot;EN-US&quot;&gt;/&lt;/span&gt;도구로서의 강점과 약점을 논의한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;4. &lt;/span&gt;섹션&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; 7&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;.5&lt;/span&gt;에 서술된 버틀러&lt;span lang=&quot;EN-US&quot;&gt;(Butler) &lt;/span&gt;이야기에 대해&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;주인이 와인이 독이 든 것을 알고 있고 단지 죽은 척만 할 뿐이며 버틀러는 주인이 그것을 알고 있다는 사실을
모른다고 가정한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;새로운 저자 목표는 이제&lt;span lang=&quot;EN-US&quot;&gt; ¬dead(Lord) ∧
arrested(Butler)&lt;/span&gt;로 표현된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;추가 행동&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;예&lt;span lang=&quot;EN-US&quot;&gt;: Call&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;-911(Lord),
Arrest(Police, Butler)), &lt;/span&gt;상태&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;인과 연결을 추가하여 완전한 이야기
계획을 만든다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이로 인해 이야기가 더 흥미롭게 될 것이라고 생각하는가&lt;span lang=&quot;EN-US&quot;&gt;? &lt;/span&gt;왜 그런지 혹은 아닌지 그 이유를 설명한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;5. &lt;/span&gt;계획 기반 이야기 생성의 전반적인 장점과 한계를 논의한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;6. &lt;/span&gt;계획 기반 이야기 생성 기법이 인터랙티브 스토리텔링 시스템 및
게임에서 효과적으로 사용될 수 있는 방법을 논의한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;7.8 &lt;/span&gt;요약 &lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;대부분의 게임은 이야기&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;전형적인 슈터에서의 배경 이야기&lt;span lang=&quot;EN-US&quot;&gt;, RPG&lt;/span&gt;에서의 게임 경험을 구조화하는 이야기 등&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;를 가지고 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이야기도 콘텐츠로 볼 수 있으며 생성될 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;가장 흔한 이야기
생성 접근 방식은 어떤 형태의 계획 알고리즘을 사용하는 것이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;계획 알고리즘은 초기 상태에서 목표
상태까지의 경로를 찾으며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;이 경로를 구성하는 행동 시퀀스는 이야기로 해석될 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;계획 알고리즘 중에서는 알고리즘이 가능한 계획의 공간을 탐색하는 계획 공간 탐색&lt;span lang=&quot;EN-US&quot;&gt;(plan&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt;‑&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;space search)&lt;/span&gt;과
새로운 부분을 순차적으로 추가해가며 계획을 구축하는 상태 공간 탐색&lt;span lang=&quot;EN-US&quot;&gt;(state&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt;‑&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;space search) &lt;/span&gt;사이의 구분이 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;도메인 모델은 게임 세계에
대한 사실과 그 안에서 취할 수 있는 가능한 행동들의 모음이며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;이 모델은 플래너가 계획을 세우는 데
사용된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;도메인 모델을 표현하는 방법에는&lt;span lang=&quot;EN-US&quot;&gt; STRIPS&lt;/span&gt;와&lt;span lang=&quot;EN-US&quot;&gt; ADL &lt;/span&gt;언어 등이 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;게임 플레이에 영향을 미치는 이야기의 경우&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;이야기와 동시에 맵을 생성하거나 이야기를 따르는 맵을 만드는 방법이 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;마지막으로&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;탐색 및 최적화 기법을 사용해 플롯 포인트를 물리적 위치에 매핑할 수 있다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://szmyoung.blogspot.com/feeds/8044325228960308115/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://szmyoung.blogspot.com/2025/09/7-yun-gyung-cheong-mark-o.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23721639/posts/default/8044325228960308115'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23721639/posts/default/8044325228960308115'/><link rel='alternate' type='text/html' href='http://szmyoung.blogspot.com/2025/09/7-yun-gyung-cheong-mark-o.html' title='계획을 활용한 퀘스트 및 스토리 (번역)'/><author><name>Sean Myoung</name><uri>http://www.blogger.com/profile/16105280024115881940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23721639.post-3052007455730117902</id><published>2025-09-10T16:00:00.001+09:00</published><updated>2025-09-10T16:08:40.131+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="PCG"/><category scheme="http://www.blogger.com/atom/ns#" term="번역"/><title type='text'>지하 던전 및 레벨을 위한 구조적 생성 방법 (번역)</title><content type='html'>&lt;p&gt;제3장&lt;span lang=&quot;EN-US&quot;&gt;: &lt;/span&gt;지하 던전 및
레벨을 위한 구조적 생성 방법&lt;/p&gt;&lt;p&gt;원문 출처 :&amp;nbsp;https://www.pcgbook.com/&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Noor Shaker, Antonios Liapis, Julian
Togelius, Ricardo Lopes, Rafael Bidarra&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;요약&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;이 장은 게임 콘텐츠의 한 종류인 던전과 이러한 콘텐츠를 생성하는 데 일반적으로 사용되는 여러 방법을 다룬다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이들 방법은 모두&lt;span lang=&quot;EN-US&quot;&gt; ‘&lt;/span&gt;구조적&lt;span lang=&quot;EN-US&quot;&gt;(constructive)’&lt;/span&gt;이며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;고정된&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;보통 짧은&lt;span lang=&quot;EN-US&quot;&gt;) &lt;/span&gt;시간
안에 실행되고&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;출력물을 재생성하기 위해 평가하지 않는다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;대부분의
방법은 구현이 비교적 간단하다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;던전 혹은 던전과 유사한 환경은 매우 많은 게임에서 등장하지만&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;이 방법들은 다른 유형의 콘텐츠에도 적용될 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;마지막으로&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;슈퍼 마리오 브라더스 레벨에 적용되는 몇 가지 구조적 생성 방법에 대해 논의하며 장을 마무리한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;3.1 &lt;/span&gt;던전과 레벨&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;현실 세계에서 던전은 죄수들이 가두어져 있는 차갑고 어두우며 끔찍한 장소이다&lt;span lang=&quot;EN-US&quot;&gt;.
&lt;/span&gt;반면 컴퓨터 게임에서 던전은 모험가가 한 지점에서 입장해 보물을 모으고&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;몬스터를 피해
또는 처치하며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;귀족 인물을 구출하고&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;함정에 빠지며 궁극적으로
다른 지점에서 탈출하는 미로 같은 환경이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이러한 던전에 대한 개념은 아마도 롤플레잉 보드게임 『던전&lt;span lang=&quot;EN-US&quot;&gt; &amp;amp; &lt;/span&gt;드래곤스』에서 비롯되었으며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;거의 모든 컴퓨터 롤플레잉
게임&lt;span lang=&quot;EN-US&quot;&gt;(RPG)&lt;/span&gt;의 핵심 특성이 되었고&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;장르를 정의한 게임들인
『젤다의 전설』 시리즈와 『파이널 판타지』 시리즈&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;최근의 대성공작인 『엘더 스크롤&lt;span lang=&quot;EN-US&quot;&gt; V: &lt;/span&gt;스카이림』까지 적용되어 왔다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;특히 원래 &lt;span lang=&quot;EN-US&quot;&gt;1980&lt;/span&gt;년의 『로그』를 따라 프로시저적 런타임 던전 생성 기능을 갖춘&lt;span lang=&quot;EN-US&quot;&gt; ‘&lt;/span&gt;로그라이크&lt;span lang=&quot;EN-US&quot;&gt;’ &lt;/span&gt;장르가 주목할 만하다&lt;span lang=&quot;EN-US&quot;&gt;; &lt;/span&gt;이 전통의 고프로필 시리즈가 바로 『디아블로』
시리즈다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이러한 성공적인 게임들과의 밀접한 관계와 설계상의 독특한 제어 도전 때문에 던전은 특히 활발하고
매력적인&lt;span lang=&quot;EN-US&quot;&gt; PCG(Procedural Content Generation) &lt;/span&gt;주제이다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;본 장의 목적을 위해 우리는 어드벤쳐와&lt;span lang=&quot;EN-US&quot;&gt; RPG &lt;/span&gt;던전 레벨을 상호 연결된
도전&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;보상 및 퍼즐로 구성된 미로 같은 환경으로 정의하며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;이는
시간과 공간에서 밀접하게 짜여져 고도로 구조화된 게임 플레이 진행을 제공한다&lt;span lang=&quot;EN-US&quot;&gt;[9]. &lt;/span&gt;던전을 다른 유형의
레벨과 구분 짓는 측면은 정교한 게임 플레이 속도와 진행 개념이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;던전 레벨은 플레이어가 자유롭게
탐험할 수 있지만&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;예를 들어 플랫폼 레벨보다&lt;span lang=&quot;EN-US&quot;&gt;), &lt;/span&gt;이 탐험은
게임 디자이너가 설계한 도전&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;보상&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;퍼즐의 진행과 견고하게
연결된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;그리고 플랫폼 레벨이나 레이스 트랙과 달리 던전 레벨은 자유 탐험을 장려하면서도 게임 경험&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;진행 및 속도에 대한 엄격한 통제를 유지한다&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;오픈 월드와 달리&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;플레이어가 더 독립적이다&lt;span lang=&quot;EN-US&quot;&gt;). &lt;/span&gt;예를 들어&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;플레이어는 여러 가능한 던전 경로 중에서 자유롭게 선택할 수 있지만&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;현재의
기술 수준에 비해 불가능한 도전은 만나지 못하도록 설계된다&lt;span lang=&quot;EN-US&quot;&gt; (&lt;/span&gt;예를 들어&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;샌드박스 도시처럼 뒤로 돌아갈 수 있는 공간이 열려 있지 않기 때문에&lt;span lang=&quot;EN-US&quot;&gt;). &lt;/span&gt;던전을
디자인하는 것은 정해진 게임플레이에서 복잡한 게임 공간을 부상시키는 정교한 연습이며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;그 반대가 아니다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;대부분의 어드벤처 게임과&lt;span lang=&quot;EN-US&quot;&gt; RPG&lt;/span&gt;에서 던전은 여러 방이 복도로 연결된
구조를 이루고 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;원래&lt;span lang=&quot;EN-US&quot;&gt; &#39;&lt;/span&gt;던전&lt;span lang=&quot;EN-US&quot;&gt;&#39;&lt;/span&gt;이라는 용어는 감옥 셀의 미로를 가리키지만&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;게임에서는 동굴&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;굴&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;인간이 만든 구조물도 포함된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;기하학과 위상학을 넘어 던전은 플레이어를 사냥할 몬스터&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;구할 공주와
같은&lt;span lang=&quot;EN-US&quot;&gt; NPC, &lt;/span&gt;장식&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;보통 판타지 기반&lt;span lang=&quot;EN-US&quot;&gt;), &lt;/span&gt;그리고 보물 같은 오브젝트를 포함한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;던전의 절차적 생성은 이 유형의 레벨의 토폴로지&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;기하학 및 게임플레이
관련 오브젝트를 생성하는 것을 말한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;일반적인 던전 생성 방법은 세 가지 요소로 구성된다&lt;span lang=&quot;EN-US&quot;&gt;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;1. &lt;/span&gt;표현 모델&lt;span lang=&quot;EN-US&quot;&gt;: &lt;/span&gt;던전의
추상적이고 단순화된 표현으로&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;최종 던전 구조를 간단히 개관할 수 있다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;2. &lt;/span&gt;그 표현 모델을 구축하는 방법&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;3. &lt;/span&gt;표현 모델에서 실제 던전 기하학을 만드는 방법&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;위에서는 던전을 플랫폼 레벨과 구분했지만&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;두 가지 유형의 게임 레벨
사이에는 명확한 유사점도 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;플랫폼 게임 레벨의 대표적인 예는&lt;span lang=&quot;EN-US&quot;&gt;
Super Mario Bros.&lt;/span&gt;와&lt;span lang=&quot;EN-US&quot;&gt; Sonic the Hedgehog&lt;/span&gt;이며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;이 전통에서 절차적 레벨 생성을 특징으로 하는 현대 게임 예로는&lt;span lang=&quot;EN-US&quot;&gt;
Spelunky&lt;/span&gt;가 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;던전과 마찬가지로 플랫폼 게임 레벨은 일반적으로 자유 공간&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;벽&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;보물 또는 다른 수집품&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;적과
함정이 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;그러나 플랫폼 게임의 게임 메커닉에서는 플레이어 에이전트가 중력에 의해 제한된다&lt;span lang=&quot;EN-US&quot;&gt;: &lt;/span&gt;에이전트는 좌우로 움직이고 떨어질 수 있지만&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;보통은 작게 위쪽으로
점프할 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;결과적으로&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;플랫폼과 갭의 상호작용은 플랫폼
게임 레벨 어휘에서 필수적인 요소이다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;본 장에서는 던전과 플랫폼 게임 레벨을 프로시저적으로 생성하는 다양한 방법을 연구할 것이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이러한 방법들은 매우 다양할 수 있지만 공통점이 하나 있다&lt;span lang=&quot;EN-US&quot;&gt;: &lt;/span&gt;이들은
모두 생성적이며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;실행마다 하나의 출력 인스턴스만 생성한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이는
예를 들어 검색 기반 방법과 대조된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;또한 이들은 빠르다는 공통점이 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;일부는 런타임에 레벨을 생성하는 데에도 성공한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;일반적으로 이러한
방법들은 출력과 그 속성에 대해&lt;span lang=&quot;EN-US&quot;&gt; (&lt;/span&gt;대체로&lt;span lang=&quot;EN-US&quot;&gt;) &lt;/span&gt;제한된 제어를
제공한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;제공되는 제어의 정도는 현재 어떤 프로시저 방법에서도 매우 중요한 특성이다&lt;span lang=&quot;EN-US&quot;&gt;. &#39;&lt;/span&gt;제어&lt;span lang=&quot;EN-US&quot;&gt;&#39;&lt;/span&gt;라는 말은 디자이너&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;또는
프로그래머&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;가 갖는 옵션 집합을 의미하며 레벨 생성 과정을 의도적으로 조정하기 위해&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;그리고 그 조정에 필요한 노력을 조절하기 위해 필요한 컨트롤을 갖추고 있다&lt;span lang=&quot;EN-US&quot;&gt;.
&lt;/span&gt;컨트롤은 또한 옵션과 매개변수를 편집했을 때 출력이 합리적으로 변하는지를 결정한다&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;즉
생성기가 직관적으로 반응하는 정도를 말한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;적절한 컨트롤은 생성기가 일관된 결과&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;예&lt;span lang=&quot;EN-US&quot;&gt;: &lt;/span&gt;플레이 가능한 레벨&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;를
만들어 내도록 보장하면서&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;원하는 특성 집합과 변동성을 모두 유지한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;우리는 여러 종류의 절차적 기법을 논의할 것이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;단순화를 위해&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;이들 기법은 각각 던전 또는 플랫폼 게임 레벨이라는 하나의 콘텐츠 유형의 맥락에서 제시된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이 장에서 먼저 논의할 알고리즘 집단은 공간 분할이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;던전을 공간
분할로 생성하는 두 가지 다른 예시가 제시되며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;핵심 아이디어는 사용 가능한 공간을 재귀적으로 조각으로
나눈 다음 이 조각들을 연결해 던전을 형성하는 것이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이어서&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;에이전트
기반 방법에 대한 논의가 이어지며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;이 방법의 핵심 아이디어는 에이전트가 원시 물질의 덩어리에 경로를
파는 것이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;다음으로 소개될 알고리즘 집단은 셀룰러 오토마타이며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;이는
동굴 같은 던전 구조를 생성하는 간단하고 빠른 수단임을 보여준다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;또 다른 절차적 방법인 생성 문법은
다음에 논의되며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;이는 높은 수준의 던전 설계 측면을 자연스럽게 포착할 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이후에는 플랫폼 레벨 생성을 위해 개발된 몇 가지 방법에 주목한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이들
중 일부는 던전에도 적용 가능하다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이 장은 상업용 게임&lt;span lang=&quot;EN-US&quot;&gt;
Spelunky&lt;/span&gt;와 오픈 소스 프레임워크&lt;span lang=&quot;EN-US&quot;&gt; Infinite Mario Bros. &lt;/span&gt;그리고 그
최근 파생물인&lt;span lang=&quot;EN-US&quot;&gt; InfiniTux&lt;/span&gt;에 구현된 플랫폼 레벨 생성 방법에 대한 논의로 끝난다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;실습에서는&lt;span lang=&quot;EN-US&quot;&gt; InfiniTux API&lt;/span&gt;를 사용해 이 장의 최소한 하나의
방법을 구현하게 된다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;3.2 &lt;/span&gt;던전 생성을 위한 공간 분할&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;이름 그대로&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;공간 분할 알고리즘은 공간 분할&lt;span lang=&quot;EN-US&quot;&gt;(space partition)&lt;/span&gt;을 생성한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;즉&lt;span lang=&quot;EN-US&quot;&gt; 2D &lt;/span&gt;또는 &lt;span lang=&quot;EN-US&quot;&gt;3D &lt;/span&gt;공간을 서로 겹치지 않는 부분집합으로 분할하여&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;공간 안의 모든 점이 정확히 하나의 부분집합&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;셀이라고도 함&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;에 속하도록 하는 것이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;공간 분할 알고리즘은 보통 계층적으로 동작한다&lt;span lang=&quot;EN-US&quot;&gt;: &lt;/span&gt;공간 분할의 각 셀은 같은 알고리즘을 재귀적으로 적용하여 더 세분화된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이를
통해 공간 분할을&lt;span lang=&quot;EN-US&quot;&gt; “&lt;/span&gt;공간 분할 트리&lt;span lang=&quot;EN-US&quot;&gt;”&lt;/span&gt;라고 불리는 트리 구조로
배치할 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;또한&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;이러한 트리 데이터 구조는 공간
안의 임의의 점에 대해 빠른 기하학적 질의를 가능하게 하여&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;예를 들어 효율적인 광선 추적&lt;span lang=&quot;EN-US&quot;&gt;(raycasting), &lt;/span&gt;프러스텀 절단&lt;span lang=&quot;EN-US&quot;&gt;(frustum culling) &lt;/span&gt;및
충돌 감지 같은 컴퓨터 그래픽스 작업에 특히 중요하다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;공간 분할의 가장 인기 있는 방법은 이진 공간 분할&lt;span lang=&quot;EN-US&quot;&gt;(binary space
partitioning, BSP)&lt;/span&gt;이며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;이는 공간을 재귀적으로 두 개의 부분집합으로 나눈다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이진 공간 분할을 통해 공간은&lt;span lang=&quot;EN-US&quot;&gt; BSP &lt;/span&gt;트리라고 불리는 이진 트리로
표현된다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;BSP&lt;/span&gt;의 다양한 변형은 특정 규칙에 따라 서로 다른 분할 초평면을
선택한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이러한 알고리즘에는 쿼드트리&lt;span lang=&quot;EN-US&quot;&gt;(quadtree)&lt;/span&gt;와
옥트트리&lt;span lang=&quot;EN-US&quot;&gt;(octree)&lt;/span&gt;가 포함된다&lt;span lang=&quot;EN-US&quot;&gt;: &lt;/span&gt;쿼드트리는 이차원 공간을
네 개의 사분면으로 분할하고&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;옥트트리는 삼차원 공간을 여덟 개의 팔분면으로 분할한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;여기서는 가장 단순한 예로 이차원 이미지에 쿼드트리를 사용한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;쿼드트리의
사분면은 임의의 직사각형 형태일 수 있지만&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;일반적으로 같은 크기의 정사각형이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;깊이가&lt;span lang=&quot;EN-US&quot;&gt; n&lt;/span&gt;인 쿼드트리는 &lt;span lang=&quot;EN-US&quot;&gt;2^n ×
2^n &lt;/span&gt;픽셀의 이진 이미지를 모두 표현할 수 있으며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;트리 노드의 총 수와 깊이는 이미지의
구조에 따라 달라진다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;루트 노드는 전체 이미지를 나타내고&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;그
네 개의 자식 노드는 이미지의 좌상단&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;우상단&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;좌하단&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;우하단 사분면을 나타낸다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;사분면 내부의 픽셀 색이 서로 다르면
그 사분면을 세분화한다&lt;span lang=&quot;EN-US&quot;&gt;; &lt;/span&gt;이 과정은 각 리프 사분면&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;크기와
상관없이&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;이 같은 색의 픽셀만 포함할 때까지 재귀적으로 적용된다&lt;span lang=&quot;EN-US&quot;&gt; (&lt;/span&gt;그림
&lt;span lang=&quot;EN-US&quot;&gt;3.1 &lt;/span&gt;참조&lt;span lang=&quot;EN-US&quot;&gt;).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;(a) &lt;/span&gt;이미지 및 분할&lt;span lang=&quot;EN-US&quot;&gt; (b) &lt;/span&gt;쿼드트리&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Fig. 3.1: &lt;/span&gt;이진 이미지의 예시 쿼드트리 분할&lt;span lang=&quot;EN-US&quot;&gt; (0&lt;/span&gt;은 빨간색&lt;span lang=&quot;EN-US&quot;&gt;, 1&lt;/span&gt;은 검은색으로 표시&lt;span lang=&quot;EN-US&quot;&gt;). &lt;/span&gt;이미지의 오른쪽 가장자리에 있는 것처럼 한 색상으로 이루어진 대규모 영역은 추가로 분할되지 않는다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이미지의 크기는 &lt;span lang=&quot;EN-US&quot;&gt;16×16 &lt;/span&gt;픽셀이므로 쿼드트리의 깊이는 &lt;span lang=&quot;EN-US&quot;&gt;4&lt;/span&gt;이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;완전히 확장된 쿼드트리&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;리프
노드가 단일 픽셀에 대한 정보를 포함하는 경우&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;라면 &lt;span lang=&quot;EN-US&quot;&gt;256&lt;/span&gt;개의
리프 노드가 생길 것이지만&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;한 색상으로 된 대규모 영역은 리프 노드가 구십사개인 쿼드트리를 만든다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;트리의 첫 번째 계층은&lt;span lang=&quot;EN-US&quot;&gt; (b)&lt;/span&gt;에서 보여지는데&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;루트 노드는 전체 이미지를 포함하고 네 개의 자식은 다음 순서대로 배치된다&lt;span lang=&quot;EN-US&quot;&gt;:
&lt;/span&gt;상단 왼쪽 사분면&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;상단 오른쪽 사분면&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;하단
왼쪽 사분면&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;하단 오른쪽 사분면&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;다른 순서도 가능하다&lt;span lang=&quot;EN-US&quot;&gt;).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;2D &lt;/span&gt;또는 &lt;span lang=&quot;EN-US&quot;&gt;3D &lt;/span&gt;그래픽에서
공간 분할 알고리즘이 사용될 때&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;그 목적은 일반적으로 폴리곤이나 픽셀과 같은 기존 요소를 나타내는
것이며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;새로운 요소를 생성하는 것이 아니다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;그러나 공간
분할이 겹치지 않는 이산적인 하위 집합을 만들어 내는 원리는 던전의 방을 만들거나 일반적으로 게임 레벨에서 구분된 영역을 만들 때 특히 적합하다&lt;span lang=&quot;EN-US&quot;&gt;. BSP&lt;/span&gt;를 이용한 던전 생성은 매크로 접근 방식을 따르며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;알고리즘은
종종 섹션 &lt;span lang=&quot;EN-US&quot;&gt;3.3&lt;/span&gt;에 제시된 에이전트 기반 접근 방식에서처럼&lt;span lang=&quot;EN-US&quot;&gt; “&lt;/span&gt;눈먼
채굴기&lt;span lang=&quot;EN-US&quot;&gt;”&lt;/span&gt;가 아니라 전부를 보는 던전 설계자 역할을 한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;전체
던전 영역은&lt;span lang=&quot;EN-US&quot;&gt; BSP &lt;/span&gt;트리의 루트 노드로 표현되며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;방의 최소
크기와 같은 종료 조건이 만족될 때까지 재귀적으로 분할된다&lt;span lang=&quot;EN-US&quot;&gt;. BSP &lt;/span&gt;알고리즘은 두 방이 겹치지 않도록
보장하며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;던전이 매우 구조화된 모습을 갖도록 허용한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;생성 알고리즘이 전통적 분할 알고리즘의 원칙을 얼마나 엄격하게 따르느냐가 만들어지는 던전의 외관에 영향을 미친다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;예를 들어&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;쿼드트리를 사용해 무작위로 사분면을 선택하고 분할함으로써
던전을 만들 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;완성되면 각 사분면에 &lt;span lang=&quot;EN-US&quot;&gt;0 (&lt;/span&gt;빈 공간&lt;span lang=&quot;EN-US&quot;&gt;) &lt;/span&gt;또는 &lt;span lang=&quot;EN-US&quot;&gt;1 (&lt;/span&gt;방&lt;span lang=&quot;EN-US&quot;&gt;) &lt;/span&gt;값을
할당하고&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;모든 방이 연결되도록 한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이 방법은&lt;span lang=&quot;EN-US&quot;&gt; Figure 3.2a&lt;/span&gt;에 보이는 것처럼 매우 대칭적이고&lt;span lang=&quot;EN-US&quot;&gt; “&lt;/span&gt;정사각형&lt;span lang=&quot;EN-US&quot;&gt;” &lt;/span&gt;모양의 던전을 생성한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;또한&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;리프
사분면이 균일한 요소&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;이미지의 경우 같은 색상 픽셀&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;로 구성되어야
한다는 원칙은 던전 생성을 위해 완화될 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;각 리프 사분면에 단일 방이 포함되어도 빈 영역도
가질 수 있다면&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;사분면 경계보다 작은 방이라면 서로 다른 크기의 방을 만들 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이후 이러한 방들을 무작위 또는 규칙 기반 프로세스를 사용해 서로 연결할 수 있으며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;쿼드트리를 전혀 고려하지 않아도 된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이러한 추가적인 확률성을
갖더라도 던전은 여전히 매우 깔끔하게 정돈될 가능성이 높다&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;그림 &lt;span lang=&quot;EN-US&quot;&gt;3.2b
&lt;/span&gt;참조&lt;span lang=&quot;EN-US&quot;&gt;).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;그림 &lt;span lang=&quot;EN-US&quot;&gt;3.2: (a) &lt;/span&gt;사분 트리를 이용해 생성한 던전으로&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;각 셀이 전부 빈 공간&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;검정&lt;span lang=&quot;EN-US&quot;&gt;) &lt;/span&gt;혹은
방&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;흰색&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;으로만 이루어져 있다&lt;span lang=&quot;EN-US&quot;&gt;. (b) &lt;/span&gt;사분 트리를 이용해 생성한 던전이지만&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;각 사분면에 하나의
방&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;무작위로 배치&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;과 빈 공간이 함께 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;구획 과정이 끝난 뒤 복도를 추가한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;이제 우리는&lt;span lang=&quot;EN-US&quot;&gt; BSP &lt;/span&gt;기법을 느슨하게 기반으로 한 보다 확률적인 접근
방식을 설명한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;우리는 던전의 영역을 너비&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;w&lt;/span&gt;와 높이&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;h&lt;/span&gt;인 영역으로 간주하며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;이는&lt;span lang=&quot;EN-US&quot;&gt; BSP &lt;/span&gt;트리의 루트 노드에 저장된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;공간은 수직선이나 수평선에 따라 분할될 수 있으며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;결과적으로 생기는
분할 셀은 같은 크기가 아닐 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;트리를 생성하는 동안&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;매
반복마다 리프 노드를 무작위로 선택하고 무작위로 선택된 수직선 또는 수평선을 따라 분할한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;리프 노드는
최소 크기&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;이 예에서는 최소 너비&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;w/4 &lt;/span&gt;및 최소 높이&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;h/4)&lt;/span&gt;를 밑돌면 더
이상 분할되지 않는다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;결국 각 분할 셀에는 하나의 방이 포함된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;방의
모서리는 확률적으로 선택되어 방이 해당 분할 안에 위치하고 허용 가능한 크기&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;즉&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;너무 작지 않음&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;를 갖도록 한다&lt;span lang=&quot;EN-US&quot;&gt;.
&lt;/span&gt;트리가 생성되면&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;동굴은 같은 부모 노드의 자식들을 서로 연결함으로써 생성된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;아래는 생성 알고리즘의 고수준 의사 코드이며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;그림&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; 3&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;.3&lt;/span&gt;과&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; 3&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;.4&lt;/span&gt;는 샘플 던전을
생성하는 과정을 보여준다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;1: &lt;/span&gt;전체 던전 영역&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;트리의
루트 노드&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;으로 시작&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;2: &lt;/span&gt;영역을 수평선 또는 수직선에 따라 나눔&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;3: &lt;/span&gt;새로 생긴 두 개의 분할 셀 중 하나를 선택&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;4: &lt;/span&gt;이 셀이 최소 허용 크기보다 크면&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;5: &lt;/span&gt;단계&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; &lt;/span&gt;이로
이동&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;이 셀을 분할 영역으로 사용&lt;span lang=&quot;EN-US&quot;&gt;)&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;6: &lt;/span&gt;다른 분할 셀을 선택하고 단계&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;4&lt;/span&gt;로 이동&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;
&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;7: &lt;/span&gt;모든 분할 셀에 대해&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;8: &lt;/span&gt;셀 내부에 방을 생성&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;경계
안에서 무작위로 두 점&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;좌상단과 우하단&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;을 선택&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;9: &lt;/span&gt;가장 낮은 층부터 시작하여&lt;span lang=&quot;EN-US&quot;&gt;
BSP &lt;/span&gt;트리에서 같은 부모의 자식에 해당하는 방들을 연결하는 복도 그리기&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;10: &lt;/span&gt;루트 노드의 자식들이 연결될 때까지 &lt;span lang=&quot;EN-US&quot;&gt;9&lt;/span&gt;번 반복&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;
&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;그림&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; 3&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;.3: BSP &lt;/span&gt;트리의
루트 노드에 포함된 던전 영역&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;A&lt;/span&gt;를 확률적으로 분할하는
과정&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;처음에는 공간이 수직선으로&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;B&lt;/span&gt;와&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;C&lt;/span&gt;로 나뉘는데&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;이 수직선의&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;x&lt;/span&gt;좌표는 무작위로 결정된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;더 작은 영역&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;B&lt;/span&gt;는 추가적으로 수직선을
그려&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;D&lt;/span&gt;와&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;E&lt;/span&gt;로 분할된다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;D&lt;/span&gt;와&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;E&lt;/span&gt;는 너비 기준으로
분할할 만큼 충분히 크지 않으므로 리프 노드로 남게 된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;반면&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;더
큰 영역&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;C&lt;/span&gt;는 수평선을 따라&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;F&lt;/span&gt;와&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;G&lt;/span&gt;로 나뉘며&lt;span lang=&quot;EN-US&quot;&gt;,&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;F&lt;/span&gt;와&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;G&lt;/span&gt;는 분할이 가능한 충분한 크기를 갖고 있어서 각각 수직선과 수평선을 따라 분할된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이 시점에서&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;G&lt;/span&gt;의 분할 셀&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;J&lt;/span&gt;와&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;K&lt;/span&gt;는 더 이상 분할할
만큼 작으며&lt;span lang=&quot;EN-US&quot;&gt;,&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;F&lt;/span&gt;의 분할 셀&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;I &lt;/span&gt;역시 마찬가지다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;셀&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;H&lt;/span&gt;는 아직 충분히 커서 수평선을 따라&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;L&lt;/span&gt;과&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;M&lt;/span&gt;으로 분할된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이때 모든 분할 영역은 더 이상 분할할 수 없게 되고&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;던전 분할은&lt;span lang=&quot;EN-US&quot;&gt; BSP &lt;/span&gt;트리에 &lt;span lang=&quot;EN-US&quot;&gt;7&lt;/span&gt;개의
리프 노드가 남는 것으로 종료된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;그림&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; 3&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;.4&lt;/span&gt;는 이 던전에서 방과 복도 배치를 보여준다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;그림 &lt;span lang=&quot;EN-US&quot;&gt;3.4: &lt;/span&gt;그림 &lt;span lang=&quot;EN-US&quot;&gt;3.3&lt;/span&gt;의
분할 던전에서 방과 복도의 배치&lt;span lang=&quot;EN-US&quot;&gt;. (a) BSP &lt;/span&gt;트리의 각 리프 노드에 대해&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;방은 해당 분할 셀의 경계 안에서 상단 왼쪽과 하단 오른쪽 코너의 좌표를 무작위로 선택하여 배치된다&lt;span lang=&quot;EN-US&quot;&gt;. (b) &lt;/span&gt;가장 낮은 층&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;리프&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;인&lt;span lang=&quot;EN-US&quot;&gt; L&lt;/span&gt;과&lt;span lang=&quot;EN-US&quot;&gt; M&lt;/span&gt;의 리프 노드를 연결하는 복도가 추가된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이 시점부터 알고리즘은 방&lt;span lang=&quot;EN-US&quot;&gt; L&lt;/span&gt;과&lt;span lang=&quot;EN-US&quot;&gt;
M&lt;/span&gt;을 연결된 것으로 간주하고&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;이를 부모&lt;span lang=&quot;EN-US&quot;&gt; H&lt;/span&gt;로
묶는다&lt;span lang=&quot;EN-US&quot;&gt;. (c) &lt;/span&gt;트리를 위쪽으로 올라가며&lt;span lang=&quot;EN-US&quot;&gt;, H(&lt;/span&gt;방&lt;span lang=&quot;EN-US&quot;&gt; L&lt;/span&gt;과&lt;span lang=&quot;EN-US&quot;&gt; M&lt;/span&gt;의 그룹&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;는 복도를
통해 방&lt;span lang=&quot;EN-US&quot;&gt; I&lt;/span&gt;와 연결되고&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;방&lt;span lang=&quot;EN-US&quot;&gt; J&lt;/span&gt;와&lt;span lang=&quot;EN-US&quot;&gt; K&lt;/span&gt;는 복도를 통해 부모&lt;span lang=&quot;EN-US&quot;&gt; G&lt;/span&gt;로
그룹화된다&lt;span lang=&quot;EN-US&quot;&gt;. (d) &lt;/span&gt;더 위쪽에서는 같은 부모를 가진 방&lt;span lang=&quot;EN-US&quot;&gt; D&lt;/span&gt;와&lt;span lang=&quot;EN-US&quot;&gt; E&lt;/span&gt;가 복도로 연결되고&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;방&lt;span lang=&quot;EN-US&quot;&gt; L,
M, I&lt;/span&gt;의 그룹이 방&lt;span lang=&quot;EN-US&quot;&gt; J&lt;/span&gt;와&lt;span lang=&quot;EN-US&quot;&gt; K&lt;/span&gt;의 그룹과 연결된다&lt;span lang=&quot;EN-US&quot;&gt;. (e) &lt;/span&gt;마지막으로&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;루트 노드의 두 서브트리가 서로 연결되고&lt;span lang=&quot;EN-US&quot;&gt; (f) &lt;/span&gt;던전이 완전히 연결된다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;바이너리 공간 분할&lt;span lang=&quot;EN-US&quot;&gt;(BSP)&lt;/span&gt;은 주로 여기에서 겹치지 않는 방을 만들기
위해 사용되었지만&lt;span lang=&quot;EN-US&quot;&gt;, BSP &lt;/span&gt;트리의 계층 구조는 던전 생성의 다른 측면에도 활용될 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;그림 &lt;span lang=&quot;EN-US&quot;&gt;3.4&lt;/span&gt;의 예시는 방 연결성이&lt;span lang=&quot;EN-US&quot;&gt;
BSP &lt;/span&gt;트리로 어떻게 결정되는지를 보여준다&lt;span lang=&quot;EN-US&quot;&gt;: &lt;/span&gt;같은 부모의 자식에 해당하는 방들을 연결하는
복도를 사용하면 복도끼리 겹치거나 교차할 확률이 줄어든다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;또한&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;리프가
아닌 분할 셀은 동일한 테마를 따르는 방 그룹을 정의하는 데 사용될 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;예를 들어&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;던전의 한 구간은 높은 레벨의 몬스터나 마법에 더 취약한 몬스터를 포함할 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. BSP &lt;/span&gt;트리 계층 구조를 기반으로 한 복도 연결과 결합하면&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;이러한
방 그룹은 던전의 나머지 부분과 단일 입구를 가질 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이는 그러한 방을 감옥이나 어두운 조명
영역으로 장식하도록 허용하며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;은밀한 플레이에 능숙한 플레이어에게 유리하다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;테마가 있는 던전 분할 예시는 그림 &lt;span lang=&quot;EN-US&quot;&gt;3.5&lt;/span&gt;에 표시되어 있다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Figure 3.5: Figure&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; 3&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;.4&lt;/span&gt;에서 예시 던전을 사용하여 파티션을 활용해 방의 내용을 테마화한 예입니다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;파티션
셀&lt;span lang=&quot;EN-US&quot;&gt; B&lt;/span&gt;와&lt;span lang=&quot;EN-US&quot;&gt; C&lt;/span&gt;는 하나의 복도만으로 연결되어 있어&lt;span lang=&quot;EN-US&quot;&gt;, B &lt;/span&gt;파티션의 방은 잠겨 있을 수 있습니다&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;녹색 자물쇠&lt;span lang=&quot;EN-US&quot;&gt;). &lt;/span&gt;이 방에 접근하려면&lt;span lang=&quot;EN-US&quot;&gt; C &lt;/span&gt;셀에서 열쇠가 필요합니다&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;방&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;L). &lt;/span&gt;비슷하게&lt;span lang=&quot;EN-US&quot;&gt;, B &lt;/span&gt;셀의 방은 오로지 보물과 보상만을 포함하고&lt;span lang=&quot;EN-US&quot;&gt;, C &lt;/span&gt;파티션의 방은
주로 몬스터로 채워집니다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;또한&lt;span lang=&quot;EN-US&quot;&gt;, C &lt;/span&gt;셀의 몬스터 난이도는
자식 노드에 따라 나뉘어집니다&lt;span lang=&quot;EN-US&quot;&gt;: &lt;/span&gt;파티션&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;G&lt;/span&gt;에는 약한 고블린이&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;셀&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;F&lt;/span&gt;에는 마법 능력을 가진 도전적인 몬스터가 있습니다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;추가적인 향상은&lt;span lang=&quot;EN-US&quot;&gt; G &lt;/span&gt;셀을 어둡게 만들고&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;조명 소스를 적게 배치&lt;span lang=&quot;EN-US&quot;&gt;) B &lt;/span&gt;셀의 바닥과 벽에 다른 질감을 사용하거나&lt;span lang=&quot;EN-US&quot;&gt;, C &lt;/span&gt;셀의 방 모양을
원형으로 바꾸는 등의 방법으로&lt;span lang=&quot;EN-US&quot;&gt; G &lt;/span&gt;셀의 난이도를 높일 수 있습니다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;3.3 &lt;/span&gt;에이전트 기반 던전 성장&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;던전 생성을 위한 에이전트 기반 접근법은 보통 하나의 에이전트를 사용해 터널을 파고 방을 순차적으로 만드는 방식이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;섹션 &lt;span lang=&quot;EN-US&quot;&gt;3.2&lt;/span&gt;의 공간 분할 방식과는 달리&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;이와 같은 에이전트 기반 접근법은 미시적 접근 방식을 따르며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;섹션
&lt;span lang=&quot;EN-US&quot;&gt;3.2&lt;/span&gt;의 깔끔하게 정돈된 던전 대신 유기적이고 다소 혼란스러운 던전을 만들 가능성이 높다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;던전의 외관은 에이전트의 행동에 크게 좌우된다&lt;span lang=&quot;EN-US&quot;&gt;: &lt;/span&gt;높은 확률적 특성을
가진 에이전트는 매우 혼란스러운 던전을 만들어내고&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;일정 부분&lt;span lang=&quot;EN-US&quot;&gt;
&quot;&lt;/span&gt;전진 예측&lt;span lang=&quot;EN-US&quot;&gt;&quot; &lt;/span&gt;기능이 있는 에이전트는 교차되는 복도나 방을 피할 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. AI &lt;/span&gt;행동 매개변수가 생성되는 던전의 외관에 미치는 영향은 광범위한 시행착오 없이는 예측하기 어렵다&lt;span lang=&quot;EN-US&quot;&gt;; &lt;/span&gt;따라서 에이전트 기반 접근법은 공간 분할 방식보다 훨씬 예측 불가능하다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;또한&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;에이전트 기반 접근법이 방이 서로 겹치거나 던전 영역의 한쪽 모서리만을 차지하는 던전을 생성하지 않을 것이라고
보장할 수 없다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;다음 단락에서는 던전을 생성하기 위한 두 가지 에이전트 기반 접근법을 소개한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;던전을 만들 때 드라이버 에이전트에 적용될 수 있는&lt;span lang=&quot;EN-US&quot;&gt; AI &lt;/span&gt;행동은 무한히
많으며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;그 결과는 매우 다를 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;예시로&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;우리는 먼저 매우 확률적이고&lt;span lang=&quot;EN-US&quot;&gt; &#39;&lt;/span&gt;눈먼&lt;span lang=&quot;EN-US&quot;&gt;&#39; &lt;/span&gt;방식을 고려할 것이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;에이전트는 던전의 어느 지점에서 시작하며
무작위 방향&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;위&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;아래&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;왼쪽&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;오른쪽&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;을 선택한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;그
후 에이전트는 그 방향으로 파기를 시작하며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;파낸 던전 타일마다&lt;span lang=&quot;EN-US&quot;&gt; &#39;&lt;/span&gt;복도&lt;span lang=&quot;EN-US&quot;&gt;&#39; &lt;/span&gt;타일로 교체된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;첫 번째 파기를 마친 뒤&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;에이전트가 방향을 바꿀 확률이 &lt;span lang=&quot;EN-US&quot;&gt;5%&lt;/span&gt;이며&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;새로운 무작위 방향을 선택&lt;span lang=&quot;EN-US&quot;&gt;), &lt;/span&gt;또 다른 &lt;span lang=&quot;EN-US&quot;&gt;5%&lt;/span&gt;의 확률로 무작위 크기의 방&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;예시에서는 가로&lt;span lang=&quot;EN-US&quot;&gt;·&lt;/span&gt;세로 &lt;span lang=&quot;EN-US&quot;&gt;3~7 &lt;/span&gt;타일&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;을 배치한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;전전의 방향과 동일한 방향으로 움직인 타일마다 방향을 바꿀 확률이 &lt;span lang=&quot;EN-US&quot;&gt;5%&lt;/span&gt;씩
증가한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;각 타일을 이동할 때 방이 추가되지 않으면 방을 추가할 확률이 &lt;span lang=&quot;EN-US&quot;&gt;5%&lt;/span&gt;씩 증가한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;에이전트가 방향을 바꾸면 방향을 다시 바꿀 확률은
&lt;span lang=&quot;EN-US&quot;&gt;0%&lt;/span&gt;로 감소한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;에이전트가 방을 추가하면 방을 다시 추가할
확률은 &lt;span lang=&quot;EN-US&quot;&gt;0%&lt;/span&gt;로 감소한다&lt;span lang=&quot;EN-US&quot;&gt;. Figure&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; 3&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;.6&lt;/span&gt;은 알고리즘의 예시 실행을 보여 주며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;그 의사 코드가 아래와 같다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;1: &lt;/span&gt;방향을 바꿀 확률&lt;span lang=&quot;EN-US&quot;&gt; Pc&lt;/span&gt;를
&lt;span lang=&quot;EN-US&quot;&gt;5&lt;/span&gt;로 초기화&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;
&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;2: &lt;/span&gt;방을 추가할 확률&lt;span lang=&quot;EN-US&quot;&gt; Pr&lt;/span&gt;을
&lt;span lang=&quot;EN-US&quot;&gt;5&lt;/span&gt;로 초기화&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;
&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;3: &lt;/span&gt;굴착기를 던전 타일에 배치하고 방향을 무작위화&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;4: &lt;/span&gt;해당 방향으로 파쇄&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;5: 0~100 &lt;/span&gt;사이의 난수&lt;span lang=&quot;EN-US&quot;&gt; Nc&lt;/span&gt;를
생성&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;6: Nc&lt;/span&gt;가&lt;span lang=&quot;EN-US&quot;&gt; Pc&lt;/span&gt;보다 작으면&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;7: &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;에이전트의
방향을 무작위화&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;8: &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;Pc&lt;/span&gt;를
&lt;span lang=&quot;EN-US&quot;&gt;0&lt;/span&gt;으로 설정&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;
&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;9: &lt;/span&gt;아니면&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;10: &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;Pc&lt;/span&gt;를&lt;span lang=&quot;EN-US&quot;&gt; Pc&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;+&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; 5&lt;/span&gt;로
설정&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;11: 0~100 &lt;/span&gt;사이의 난수&lt;span lang=&quot;EN-US&quot;&gt; Nr&lt;/span&gt;를
생성&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;12: Nr&lt;/span&gt;가&lt;span lang=&quot;EN-US&quot;&gt; Pr&lt;/span&gt;보다
작으면&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;13: &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;방의
너비와 길이를 &lt;span lang=&quot;EN-US&quot;&gt;3~7 &lt;/span&gt;사이로 무작위화&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;14: &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;현재
에이전트 위치 주변에 방 배치&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;14: &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;Pr&lt;/span&gt;를 &lt;span lang=&quot;EN-US&quot;&gt;0&lt;/span&gt;으로 설정&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;15: &lt;/span&gt;아니면&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;16: &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;Pr&lt;/span&gt;를&lt;span lang=&quot;EN-US&quot;&gt; Pr&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;+&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; 5&lt;/span&gt;로
설정&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;17: &lt;/span&gt;던전이 충분히 크지 않다면&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;18: &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;4&lt;/span&gt;번
단계로 이동&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;이전 확률적 접근 방식의 제어 부족을 방지하기 위해&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;이는 방과 방
또는 방과 통로의 교차를 초래할 수 있는 겹치는 방과 막다른 통로를 만들 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;에이전트는 던전의
전체적인 모습을 조금 더 잘 파악하고 방을 추가할 때 방&lt;span lang=&quot;EN-US&quot;&gt;–&lt;/span&gt;방 또는 방&lt;span lang=&quot;EN-US&quot;&gt;–&lt;/span&gt;통로
교차가 발생하는지 미리 확인하도록 할 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;또한 방향을 바꾸는 것을 매 단계마다 무작위화할 필요는
없으며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;이는 꼬인 경로를 방지한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;그림 &lt;span lang=&quot;EN-US&quot;&gt;3.6: &lt;/span&gt;확률적&lt;span lang=&quot;EN-US&quot;&gt; &quot;&lt;/span&gt;블라인드&lt;span lang=&quot;EN-US&quot;&gt;&quot; &lt;/span&gt;굴착기의 짧은 실행 시퀀스&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;굴착기는 지도상의 임의의 타일에서
시작&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;첫 번째 이미지&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;하고 아래쪽으로 굴착을 시작한다&lt;span lang=&quot;EN-US&quot;&gt;. 5&lt;/span&gt;개의 타일을 굴착한 후&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;세 번째 이미지&lt;span lang=&quot;EN-US&quot;&gt;) &lt;/span&gt;방을 추가할 확률이 &lt;span lang=&quot;EN-US&quot;&gt;25%&lt;/span&gt;이며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;주사위를
굴려서 네 번째 이미지와 같이 방이 추가된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;에이전트는 아래쪽으로 이동을 계속&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;네 번째 이미지&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;하며 방을 추가할 확률은 &lt;span lang=&quot;EN-US&quot;&gt;5%, &lt;/span&gt;방향을 바꿀 확률은 &lt;span lang=&quot;EN-US&quot;&gt;30%&lt;/span&gt;이다&lt;span lang=&quot;EN-US&quot;&gt;.
&lt;/span&gt;주사위를 굴리면 새 방향이 오른쪽이 되어&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;여섯 번째 이미지&lt;span lang=&quot;EN-US&quot;&gt;) &lt;/span&gt;이동을 시작한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;또 다른 &lt;span lang=&quot;EN-US&quot;&gt;6&lt;/span&gt;개의
타일을 이동한 후&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;일곱 번째 이미지&lt;span lang=&quot;EN-US&quot;&gt;) &lt;/span&gt;방을 추가할 확률은
&lt;span lang=&quot;EN-US&quot;&gt;30%, &lt;/span&gt;방향을 바꿀 확률은 &lt;span lang=&quot;EN-US&quot;&gt;25%&lt;/span&gt;가 된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;방향 전환이 발생하면&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;여덟 번째 이미지&lt;span lang=&quot;EN-US&quot;&gt;) &lt;/span&gt;에이전트는 왼쪽으로 이동한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;또 한 번 타일을 굴착한 뒤&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;아홉 번째 이미지&lt;span lang=&quot;EN-US&quot;&gt;) &lt;/span&gt;방을 추가할 확률이 &lt;span lang=&quot;EN-US&quot;&gt;40%&lt;/span&gt;이며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;주사위 결과에 따라 새로운 방이 추가된다&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;열 번째 이미지&lt;span lang=&quot;EN-US&quot;&gt;). &lt;/span&gt;이 매우 짧은 실행 시퀀스에서도 이미 에이전트는
골목과 겹치는 두 개의 방을 만들었다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;우리는 앞을 내다보는 불확실성이 적은 에이전트를 두 번째 예시로 고려할 것이다&lt;span lang=&quot;EN-US&quot;&gt;.
&lt;/span&gt;앞서와 같이&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;에이전트는 던전의 무작위 지점에서 시작한다&lt;span lang=&quot;EN-US&quot;&gt;.
&lt;/span&gt;에이전트는 현재 위치에 방을 추가하면 기존 방과 교차하는지 여부를 확인한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;모든 가능한
방이 교차를 초래한다면&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;에이전트는 잠재적인 복도가 기존 방이나 복도와 교차하지 않도록 방향과 파쇄
거리를 선택한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;알고리즘은 방이나 복도를 추가해도 교차가 발생하지 않는 위치에서 더 이상 진행할 수
없을 때 멈추며 종료된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;그림 &lt;span lang=&quot;EN-US&quot;&gt;3.7&lt;/span&gt;은 알고리즘의 실행
예를 보여 주며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;아래에는 그 의사코드가 제공된다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;1: &lt;/span&gt;굴착기를 던전 타일에 배치한다&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;2: &lt;/span&gt;보조 변수&lt;span lang=&quot;EN-US&quot;&gt; Fr=0, Fc=0&lt;/span&gt;을
설정한다&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;3: &lt;/span&gt;가능한 모든 방 크기에 대해&lt;span lang=&quot;EN-US&quot;&gt;:&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt; 3: &lt;/span&gt;잠재적 방이 기존 방과 교차하지 않으면&lt;span lang=&quot;EN-US&quot;&gt;:&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;  4: &lt;/span&gt;방을 배치한다&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;  5: Fr=1&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;
&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;  6: for &lt;/span&gt;루프를 종료한다&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;7: &lt;/span&gt;방향과 길이&lt;span lang=&quot;EN-US&quot;&gt;(3~7) &lt;/span&gt;범위의
모든 잠재적 복도로에 대해&lt;span lang=&quot;EN-US&quot;&gt;:&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt; 8: &lt;/span&gt;잠재적 복도가 기존 방과 교차하지 않으면&lt;span lang=&quot;EN-US&quot;&gt;:&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;  9: &lt;/span&gt;복도를 배치한다&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;  10: Fc=1&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;
&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;  11: for &lt;/span&gt;루프를 종료한다&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;12: Fr=1 &lt;/span&gt;또는&lt;span lang=&quot;EN-US&quot;&gt; Fc=1&lt;/span&gt;이면&lt;span lang=&quot;EN-US&quot;&gt;:&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;13: 2&lt;/span&gt;번으로 이동한다&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Fig. 3.7: &lt;/span&gt;정보에 기반한&lt;span lang=&quot;EN-US&quot;&gt;
&quot;look ahead&quot; &lt;/span&gt;굴착기의 짧은 실행 과정&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;굴착기는 맵의 랜덤
타일&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;첫번째 이미지&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;에서 시작하여 방&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;두번째 이미지&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;과 복도&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;세번째
이미지&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;를 배치한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;빈 던전에서는 겹침이 허용되지 않기
때문이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;첫 번째 복도를 배치한 뒤&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;이전 방과 겹치지
않는 &lt;span lang=&quot;EN-US&quot;&gt;3x3 &lt;/span&gt;이상의 방이 들어갈 공간이 없으므로 굴착기는 아래쪽으로 다른 복도를 만든다&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;네번째 이미지&lt;span lang=&quot;EN-US&quot;&gt;). &lt;/span&gt;이 시점에서 겹치지 않는 작은 방이 들어갈 공간이
있으므로 굴착기는 다섯번째 이미지의 방을 배치하고 이어서 복도&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;여섯번째 이미지 및 여덟번째 이미지&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;와 방&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;일곱번째 이미지 및 아홉번째 이미지&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;을 차례로 배치한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;아홉번째 이미지 이후에는 기존 방 및 복도와
교차하지 않는 방이나 복도를 추가할 수 없으므로 던전 생성이 중단된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;비록 던전 영역의 상당 부분이
비어 있음에도 불구하고이다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;“블라인드”와&lt;span lang=&quot;EN-US&quot;&gt; “&lt;/span&gt;룩어헤드&lt;span lang=&quot;EN-US&quot;&gt;” &lt;/span&gt;굴착기
에이전트와 함께 제공된 예시들은 순진하고 단순한 접근 방식을 보여 준다다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;그림 &lt;span lang=&quot;EN-US&quot;&gt;3.6&lt;/span&gt;과 &lt;span lang=&quot;EN-US&quot;&gt;3.7&lt;/span&gt;은 알고리즘이 실행될 때 발생할 수 있는 최악의 시나리오를
대부분 보여 주며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;그 결과 던전이 겹치거나 조기에 종료되는 경우가 나타난다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;제공된 굴착기 행동에 단순하거나 더 복잡한 코드 추가를 통해 이러한 문제 중 다수를 회피할 수 있지만&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;에이전트의 알고리즘을 광범위한 실험 없이 이러한 문제를 예측하기는 어렵다는 사실은 변함이 없다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이는 바람직한 특성이 될 수도 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;알고리즘의 비제어성은 유기적이고
현실적인 동굴&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;인간 광부가 금맥을 향해 터널을 파는 것을 시뮬레이션&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;을
만들 수 있으며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;던전의 예측 가능성을 플레이어에게 낮출 수 있기 때문이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;그러나 동시에 게임이 불가능하거나 재미없어지는 지도도 만들어질 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이
장에 제시된 대부분의 접근 방식보다 굴착기 에이전트의 매개변수가 생성된 유물의 플레이 가능성 및 엔터테인먼트 가치에 매우 강력한 영향을 미칠 수
있으며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;이러한 매개변수를 최적화하는 일은 직관적이거나 쉬운 과제가 아니다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;(a) &lt;/span&gt;무어 이웃&lt;span lang=&quot;EN-US&quot;&gt; (b) &lt;/span&gt;폰
노이만 이웃&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;그림 &lt;span lang=&quot;EN-US&quot;&gt;3.8: &lt;/span&gt;셀룰러 오토마타의 두 가지 이웃 유형&lt;span lang=&quot;EN-US&quot;&gt;. Wikipedia&lt;/span&gt;에서 가져옴&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;3.4 &lt;/span&gt;셀룰러 오토마타 &lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;셀룰러 오토마톤 &lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;복수형&lt;span lang=&quot;EN-US&quot;&gt;: &lt;/span&gt;셀룰러
오토마타&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;는 이산적 계산 모델이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;셀룰러 오토마타는 컴퓨터
과학&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;물리학&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;심지어 일부 생물학 분야에서도 널리 연구되며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;계산&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;성장&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;발달&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;물리 현상 등을 모델링하는 수단으로 활용된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;셀룰러 오토마타는
많은 논문에서 다뤄졌지만&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;기본 개념은 매우 단순하며 몇 문단과 그림 한 두 장으로 설명할 수 있다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;셀룰러 오토마타는&lt;span lang=&quot;EN-US&quot;&gt; n&lt;/span&gt;차원 격자&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;상태
집합&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;전이 규칙 집합으로 구성된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;대부분의 셀룰러 오토마타는
일차원&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;벡터&lt;span lang=&quot;EN-US&quot;&gt;) &lt;/span&gt;또는 이차원&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;행렬&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;각 셀은 여러 상태 중 하나일 수 있으며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;가장 단순한 경우에는 셀이 켜져있거나 꺼져있는 상태일 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;실험
시작 시&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;시간 &lt;span lang=&quot;EN-US&quot;&gt;t0)&lt;/span&gt;의 셀 상태 분포가 셀룰러 오토마타의
초기 상태이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;그 이후 오토마타는 해당 오토마타의 규칙에 따라 이산 단계로 진화한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;각 시간 &lt;span lang=&quot;EN-US&quot;&gt;t&lt;/span&gt;에서 각 셀은 이전 시간 &lt;span lang=&quot;EN-US&quot;&gt;t-1&lt;/span&gt;의 자신과 그 이웃에 있는 모든 셀의 상태를 기반으로 새로운 상태를 결정한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;이웃은 특정 셀 &lt;span lang=&quot;EN-US&quot;&gt;c &lt;/span&gt;주변의 어느 셀이 &lt;span lang=&quot;EN-US&quot;&gt;c&lt;/span&gt;의 미래 상태에 영향을 미치는지를 정의한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;일차원 셀룰러 오토마타의
경우&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;이웃은 크기에 의해 정의된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;즉&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;이웃이 왼쪽과 오른쪽으로 몇 개의 셀까지 퍼지는지를 말한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이차원
오토마타에서는 가장 흔한 이웃 유형이 무어 이웃과 폰 노이만 이웃이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;두 이웃 모두 크기가 &lt;span lang=&quot;EN-US&quot;&gt;1 &lt;/span&gt;이상의 정수일 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;무어 이웃은 정사각형이며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;크기가 &lt;span lang=&quot;EN-US&quot;&gt;1&lt;/span&gt;인 무어 이웃은 대각선 포함하여 &lt;span lang=&quot;EN-US&quot;&gt;c&lt;/span&gt;를 즉시 둘러싼 여덟 개의 셀로 구성된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;폰 노이만 이웃은 &lt;span lang=&quot;EN-US&quot;&gt;c&lt;/span&gt;를 중심으로 교차 형태이며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;크기가 &lt;span lang=&quot;EN-US&quot;&gt;1&lt;/span&gt;인 폰 노이만 이웃은 위&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;아래&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;왼쪽&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;오른쪽에 있는 네 개의 셀로 구성된다&lt;span lang=&quot;EN-US&quot;&gt; (&lt;/span&gt;그림 &lt;span lang=&quot;EN-US&quot;&gt;3.8 &lt;/span&gt;참조&lt;span lang=&quot;EN-US&quot;&gt;). &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;주변 영역의 가능한 구성 수는 셀 한 개가 가질 수 있는 상태 수를 그 주변 영역에 있는 셀 수만큼 거듭제곱한
것과 같다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이 수치는 매우 크게 성장할 수 있으며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;예를
들어 두 상태를 가진 오토마타에 무어&lt;span lang=&quot;EN-US&quot;&gt;(Moore) &lt;/span&gt;주변 영역의 크기가 이인 경우 &lt;span lang=&quot;EN-US&quot;&gt;2^25 = 33,554,432&lt;/span&gt;가지의 구성이 존재한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;주변 영역이
작을 때는 전이 규칙을 표 형태로 정의하는 것이 일반적이며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;이 표에서는 주변 영역의 각 가능한 구성이
한 개의 미래 상태와 대응된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;반면 주변 영역이 클 경우 전이 규칙은 보통 각 상태에 해당하는 셀의
비율을 기준으로 한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;셀룰러 오토마타는 매우 다재다능하며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;몇몇 유형이 튜링 완전임이 입증되었다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;실제로 이러한 시스템이 하향식 모델링을 통해 자연을 이해하는 새로운 방법의 기반이 될 수 있다는 주장이 제기되기도
했다&lt;span lang=&quot;EN-US&quot;&gt; [28]. &lt;/span&gt;그러나 본 장에서는 주로 셀룰러 오토마타가 정차적 콘텐츠 생성에 어떻게 활용될 수 있는지에
대해 다룰 것이다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Johnson &lt;/span&gt;등은 셀룰러 오토마타를 이용해 무한히 확장되는 동굴
같은 던전을 생성하는 시스템을 제시한다&lt;span lang=&quot;EN-US&quot;&gt; [4]. &lt;/span&gt;그 동기는 모든 방향으로 끊임없이 이어지는 무한 동굴
탐험 게임을 만들고자 하는 것이었다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;추가적인 설계 제약은 동굴이 직선 가장자리와 각도 대신 유기적이거나
부식된 외관을 가져야 한다는 점이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;진정으로 무한한 동굴을 저장할 수 있는 저장 매체는 없으므로&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;플레이어가 새로운 영역을 탐험할 때마다 실행 시점에 콘텐츠가 생성되어야 한다&lt;span lang=&quot;EN-US&quot;&gt;.
&lt;/span&gt;게임은 스크롤이 아니라 한 번에 한 화면씩 환경을 표시하며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;플레이어가 방을 벗어날 때마다
새 방을 생성할 수 있는 몇 백 밀리초의 시간 창을 제공한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;이 방법은 지도 생성 과정을 제어하기 위해 다음 네 가지 매개변수를 사용한다&lt;span lang=&quot;EN-US&quot;&gt;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;• 암석 셀 비율&lt;span lang=&quot;EN-US&quot;&gt; (&lt;/span&gt;접근 불가능한 영역&lt;span lang=&quot;EN-US&quot;&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;• 셀룰러 오토마타 세대 수&lt;span lang=&quot;EN-US&quot;&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;• 암석을 정의하는 이웃 임계값&lt;span lang=&quot;EN-US&quot;&gt; (T=5);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;• 이웃 셀 수&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;각 방은 &lt;span lang=&quot;EN-US&quot;&gt;50×50 &lt;/span&gt;격자로 구성되며&lt;span lang=&quot;EN-US&quot;&gt;,
&lt;/span&gt;각 셀은 빈 상태&lt;span lang=&quot;EN-US&quot;&gt;(empty) &lt;/span&gt;또는 암석&lt;span lang=&quot;EN-US&quot;&gt;(rock) &lt;/span&gt;중
하나의 상태를 가질 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;초기에는 격자가 모두 빈 상태로 시작한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;하나의 방을 생성하는 과정은 다음과 같다&lt;span lang=&quot;EN-US&quot;&gt;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;• 격자에&lt;span lang=&quot;EN-US&quot;&gt; &quot;&lt;/span&gt;뿌려져&lt;span lang=&quot;EN-US&quot;&gt;&quot;
&lt;/span&gt;암석이 배치된다&lt;span lang=&quot;EN-US&quot;&gt;: &lt;/span&gt;각 셀마다 확률&lt;span lang=&quot;EN-US&quot;&gt; r (&lt;/span&gt;예&lt;span lang=&quot;EN-US&quot;&gt;: 0.5)&lt;/span&gt;로 암석이 되도록 변한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이는 암석 셀의 비교적 균일한
분포를 초래한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;• 셀룰러 오토마타가 격자에&lt;span lang=&quot;EN-US&quot;&gt; n (&lt;/span&gt;예&lt;span lang=&quot;EN-US&quot;&gt;: 2) &lt;/span&gt;단계 동안 적용된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이 셀룰러 오토마타의 단일 규칙은&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;한 셀이 다음 시간 단계에서 암석이 되는 조건은 이웃 셀 중 최소&lt;span lang=&quot;EN-US&quot;&gt; T (&lt;/span&gt;예&lt;span lang=&quot;EN-US&quot;&gt;: 5) &lt;/span&gt;개가 암석일 때이며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;그렇지 않으면 빈 공간이 된다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;• 미적 이유로&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;빈 공간과 접한 암석 셀은&lt;span lang=&quot;EN-US&quot;&gt; &quot;&lt;/span&gt;벽&lt;span lang=&quot;EN-US&quot;&gt;&quot; &lt;/span&gt;셀로 지정된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;기능적으로는 암석 셀이지만 외관은 다르게 보인다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;이 간단한 절차는 놀랍도록 생동감 있는 동굴 방을 생성한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;그림
&lt;span lang=&quot;EN-US&quot;&gt;3.9&lt;/span&gt;는 무작위 지도&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;암석이 뿌려진 상태&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;와 셀룰러 오토마타의 몇 단계 이후 결과를 비교한 것이다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;그러나 이는 단일 방만을 생성하는 것이며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;게임에서는 여러 개의 연결된
방이 필요하다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;생성된 방은 제한 암석 안에 개구부가 없을 수 있고&lt;span lang=&quot;EN-US&quot;&gt;,
&lt;/span&gt;출구가 인접 방의 입구와 정렬될 것이라는 보장이 없다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;따라서 방이 생성될 때마다 그 즉각적인
이웃 방들도 함께 생성된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;두 방의 가장 큰 빈 공간 사이에 연결이 없으면&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;그 공간들 사이에서 가장 거리가 짧은 지점에 터널이 파집된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이후
이웃 방 아홉 개를 한 번에 두 번 더 셀룰러 오토마타를 실행하여 날카로운 가장자리를 부드럽게 한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;그림
&lt;span lang=&quot;EN-US&quot;&gt;3.10&lt;/span&gt;은 이 과정을 통해 아홉 방이 매끄럽게 연결된 결과를 보여준다&lt;span lang=&quot;EN-US&quot;&gt;.
&lt;/span&gt;이 생성 과정은 매우 빠르며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;최신 컴퓨터에서는 한 밀리초 이내에 모든 아홉 방을 생성할
수 있습니다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;(a) &lt;/span&gt;랜덤 맵&lt;span lang=&quot;EN-US&quot;&gt; (b) CA &lt;/span&gt;맵&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Fig. 3.9: &lt;/span&gt;동굴 생성&lt;span lang=&quot;EN-US&quot;&gt;: CA&lt;/span&gt;와
랜덤 생성 맵의 비교&lt;span lang=&quot;EN-US&quot;&gt; (&lt;/span&gt;두 맵 모두&lt;span lang=&quot;EN-US&quot;&gt; r = 0.5); CA &lt;/span&gt;파라미터&lt;span lang=&quot;EN-US&quot;&gt;: n = 4, M = 1, T = 5. &lt;/span&gt;바위와 벽 셀은 각각 흰색과 빨간색으로 표시된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;색깔 영역은 서로 다른 터널&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;바닥 클러스터&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;을 나타낸다&lt;span lang=&quot;EN-US&quot;&gt;. [4]&lt;/span&gt;에서 가져옴&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;우리는 작은 수의 파라미터와 그들이 비교적 직관적이라는 점이&lt;span lang=&quot;EN-US&quot;&gt; Johnson &lt;/span&gt;등
사람들의&lt;span lang=&quot;EN-US&quot;&gt; CA &lt;/span&gt;접근 방식의 장점이라고 결론지을 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;그러나
이 또한 이 방법의 단점 중 하나이다&lt;span lang=&quot;EN-US&quot;&gt;: &lt;/span&gt;디자이너와 프로그래머 모두에게 단일 파라미터가 생성 과정에 미치는
영향을 완전히 이해하기 어렵다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;각 파라미터는 생성된 맵의 여러 특징에 영향을 주기 때문이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;특정한 요구사항&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;예를 들어 일정 수의 방과 특정 연결성을 갖는
맵을 만드는 것은 불가능하다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;따라서 게임플레이 기능은 이러한 제어 파라미터와 어느 정도 분리되어 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이 생성 방법과 게임플레이 기능 사이의 연결은 시행착오 과정을 통해 만들어져야 할 것이다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Fig. 3.10: &lt;/span&gt;동굴 생성&lt;span lang=&quot;EN-US&quot;&gt;:
CA&lt;/span&gt;로 생성된 &lt;span lang=&quot;EN-US&quot;&gt;3×3 &lt;/span&gt;기본 격자 맵&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;바위와
벽 셀은 각각 흰색과 빨간색으로 표시된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;회색 영역은 바닥을 나타낸다&lt;span lang=&quot;EN-US&quot;&gt;. (M = 2; T = 13; n = 4; r = 50%). [4]&lt;/span&gt;에서 가져옴&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;3. 5 &lt;/span&gt;문법 기반 던전 생성&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;생성 문법은 원래 자연어의 구조를 형식적으로 기술하기 위해 개발되었다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이
구조들&lt;span lang=&quot;EN-US&quot;&gt;—&lt;/span&gt;구문&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;문장 등&lt;span lang=&quot;EN-US&quot;&gt;—&lt;/span&gt;은
더 큰 규모의 구조가 더 작은 규모의 구조로부터 어떻게 만들어지는지를 설명하는 재귀 규칙의 유한 집합으로 모델링되며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;개별 단어가 말미&lt;span lang=&quot;EN-US&quot;&gt;(terminal) &lt;/span&gt;기호가 된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이들은 생성적이기 때문에 언어 구조를 설명하면서 동시에 그것을 생성하는 방법도 함께 제시한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;우리는 생성 문법에서 샘플링하여 그 문법이 묘사하는 구조를 갖는 새로운 문장을 만들 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;유사한 기법은 다른 도메인에도 적용될 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;예를 들어&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;그래프 문법&lt;span lang=&quot;EN-US&quot;&gt;[15]&lt;/span&gt;은 유사한 재귀 규칙 집합을 사용해 그래프의 구조를
모델링하며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;개별 그래프 노드가 말미 기호가 된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;던전 생성 주제로 돌아가면&lt;span lang=&quot;EN-US&quot;&gt;, Adams[1]&lt;/span&gt;는 그래프 문법을 사용해
일인칭 슈팅 게임&lt;span lang=&quot;EN-US&quot;&gt;(FPS) &lt;/span&gt;레벨을 생성한다&lt;span lang=&quot;EN-US&quot;&gt;. FPS &lt;/span&gt;레벨은
던전과 명백히 같지 않을 수 있지만&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;우리 목적에선 그 레벨이 던전으로 간주된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;왜냐하면 그들은 같은 구조&lt;span lang=&quot;EN-US&quot;&gt;—&lt;/span&gt;상호 연결된 방들의 미로&lt;span lang=&quot;EN-US&quot;&gt;—&lt;/span&gt;를 공유하기 때문이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;그는 그래프 문법의 규칙을 사용해 레벨의 토폴로지를
설명하는 그래프를 생성한다&lt;span lang=&quot;EN-US&quot;&gt;: &lt;/span&gt;정점은 방을 나타내고&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;두 방
사이의 간선은 이 두 방이 인접해 있음을 의미한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이 방법은 방 크기와 같은 추가 기하학적 세부 사항을
생성하지는 않는다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;레벨의 이러한 고수준&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;토폴로지적 표현의
장점은 그래프 생성을 난이도&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;재미&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;전역 크기와 같은 매개변수를
통해 제어할 수 있다는 점이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;검색 알고리즘은 특정 시점에서 생산 규칙의 모든 결과를 분석하고&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;지정된 목표에 가장 잘 부합하는 규칙을 선택함으로써 입력 매개변수와 일치하는 레벨을 찾는다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Adams&lt;/span&gt;의 작업 한계는 그 문법 규칙과 특히 매개변수의 임시적이고
하드코딩된 특성이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이는 던전의 토폴로지적 묘사를 생성하는 데 유효한 접근법이지만&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;더 넓은 범위의 게임과 목표에 일반화하려면 매번 새로운 입력 매개변수와 규칙을 만들어야 한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;그럼에도 불구하고&lt;span lang=&quot;EN-US&quot;&gt;, Adams&lt;/span&gt;의 결과는 게임플레이를 통해 던전 생성을
제어하는 동기와 중요성을 보여준다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Dormans&lt;/span&gt;의 연구&lt;span lang=&quot;EN-US&quot;&gt;[3]&lt;/span&gt;는
&lt;span lang=&quot;EN-US&quot;&gt;5&lt;/span&gt;장에 더 광범위하게 다루어지므로 여기서는 그의 탐험 게임용 던전 공간을 생성하기 위한 생성적 문법
사용을 간략히 언급한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;그래프 문법을 통해 미션은 먼저 방향 그래프 형태로 생성되며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;이는 플레이어가 수행해야 할 연속적인 작업 모델로 사용된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이후
각 미션은 노드와 엣지의 네트워크로 추상화되어 형태 문법에 의해 대응되는 게임 공간이 생성된다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;이는 미션 문법의 개념을 통해 게임플레이 기반 제어를 최초로 성공적으로 도입한 방법이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;그러나 이 방법은 실제 제어 매개변수를 제공하지 않는다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;왜냐하면
제어는 그래프와 형태 문법의 서로 다른 규칙에 의해 수행되며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;이는 대부분의 디자이너에게 직관적이지
않기 때문이다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Dormans&lt;/span&gt;의 연구에 영감을 받아&lt;span lang=&quot;EN-US&quot;&gt;
van der Linden &lt;/span&gt;등&lt;span lang=&quot;EN-US&quot;&gt;[8]&lt;/span&gt;은 게임플레이 문법을 사용하여 던전 레벨을 생성하는 방식을
제안했다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;게임 디자이너는 게임 내에서 수행할 플레이어 행동&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;그
순서와 구성을 포함한 상호 관계 및 연관 콘텐츠로 구성된 게임플레이 지향 어휘를 사용해 사전 디자인 제약을 표현한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이러한 디자이너가 작성한 제약은 직접적으로 생성적 그래프 문법&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;즉
게임플레이 문법을 만들어내며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;서로 다른 제약 집합을 통해 여러 문법을 표현할 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;문법은 플레이어 행동 그래프를 생성하며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;이는 차례로 던전 레벨의
레이아웃을 결정한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;생성된 각 그래프에 대해 그래프의 제약을 따라 특정 콘텐츠가 합성된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;몇 가지 제안된 알고리즘은 그래프를 필요한 게임 공간에 매핑하고&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;두
번째 절차적 방법은 그래프가 요구하는 방과 복도의 기하학을 생성한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;이 접근법은 게임플레이 기반 제어를 일반적인 수준에서 개선하려는 목적을 가지고 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이는 디자이너가 처음부터 문법 기반의 플레이어 행동 그래프 생성기를 효과적으로 만들 수 있는 도구를 제공한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이 접근법은 일반적이며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;이러한 도구는 특정 도메인에 연결되어 있지
않으므로 플레이어 행동과 관련된 설계 제약을 여러 게임에서 생성하고 조작할 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;그러나 실제 게임에
플레이어 행동 그래프를 통합하려면&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;해당 그래프를 해당 게임에 맞는 구체적인 던전 레벨로 변환할 수
있는 전문화된 생성기가 필요하다&lt;span lang=&quot;EN-US&quot;&gt;. Van der Linden &lt;/span&gt;등은 단 한 가지 사례 연구에서 이러한
전문화된 생성기를 시연했으며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;이를 통해 게임&lt;span lang=&quot;EN-US&quot;&gt; *Dwarf
Quest*&lt;/span&gt;에 완전하게 플레이 가능한 &lt;span lang=&quot;EN-US&quot;&gt;3D &lt;/span&gt;던전 레벨을 만들었다&lt;span lang=&quot;EN-US&quot;&gt;[27]. &lt;/span&gt;그림 &lt;span lang=&quot;EN-US&quot;&gt;3.1&lt;/span&gt;은&lt;span lang=&quot;EN-US&quot;&gt; (a) &lt;/span&gt;게임플레이
그래프와&lt;span lang=&quot;EN-US&quot;&gt; (b) &lt;/span&gt;이 방법으로 생성된 던전을 보여준다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;게임플레이 기반 제어 측면에서 이 접근법은 디자이너가 보다 자연스러운 설계 지향 용어로 던전 생성을 지정하고
제어할 수 있도록 한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;디자이너는 자신만의 플레이어 행동을 만들고 이를 용어집으로 사용해 던전 생성기를
제어하고 제작할 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이를 위해 원하는 게임플레이를 지정하면 그에 따라 게임 공간 생성이 제한된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;또한 디자이너는 난이도와 같은 자신의 매개변수를 표현할 수 있으며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;이는
게임플레이 문법에서 규칙 재작성&lt;span lang=&quot;EN-US&quot;&gt;(rewriting)&lt;/span&gt;을 제어한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이러한
게임플레이 기반 매개변수를 설정함으로써 생성된 던전에 대해 더욱 세밀한 제어가 가능해진다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;(a) (b)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;그림 &lt;span lang=&quot;EN-US&quot;&gt;3.1: (a) van der Linden &lt;/span&gt;등&lt;span lang=&quot;EN-US&quot;&gt;(8)&lt;/span&gt;이 만든 게임플레이 그래프와&lt;span lang=&quot;EN-US&quot;&gt; (b) &lt;/span&gt;이에 대응하는 던전 레이아웃&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;3.6 &lt;/span&gt;고급 플랫폼 생성 방법&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;이 절에서는 플랫폼 레벨을 생성하기 위해 처음 제안된 두 가지 최신 방법을 논의하면서 플랫폼 생성 방법에 초점을
맞춘다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이전 절과 달리 이 방법들을 특징짓는 단일 카테고리나 계통은 존재하지 않는다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;흥미롭게도&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;우리는 각 방법의 핵심 개념이 던전 생성에도 크게 기여할
수 있음을 지적할 것이다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;첫 번째 방법은&lt;span lang=&quot;EN-US&quot;&gt; Smith et al.&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Cambria Math&amp;quot;,serif; mso-bidi-font-family: &amp;quot;Cambria Math&amp;quot;;&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;[23]&lt;/span&gt;이 제안한 리듬 기반 플랫폼 생성이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이 방법은 사용자 행동의
타이밍과 반복과 연결되는 리듬 개념에 기반해 레벨을 생성한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;그들은 먼저 리듬 그룹이라고 부르는 레벨의
작은 조각들을 두 단계의 문법 기반 접근법으로 생성한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;첫 번째 단계에서는 플레이어 행동 집합이 만들어지고&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;이후 이 행동 집합이 대응되는 기하학으로 변환된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;리듬 그룹을
연결함으로써 많은 레벨이 만들어지며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;구현된 평가자가 가장 우수한 레벨을 선택한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Smith &lt;/span&gt;등은 디자이너가 생성 과정을 제어할 수 있도록&lt;span lang=&quot;EN-US&quot;&gt; ‘&lt;/span&gt;노브&lt;span lang=&quot;EN-US&quot;&gt;’&lt;/span&gt;라고 부르는 일련의 매개변수를 제안한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;여기에는&lt;span lang=&quot;EN-US&quot;&gt; (i) &lt;/span&gt;레벨 전체를 통과하는 일반 경로&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;시작&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;끝&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;중간 선분
등&lt;span lang=&quot;EN-US&quot;&gt;), (ii) &lt;/span&gt;생성될 리듬의 종류&lt;span lang=&quot;EN-US&quot;&gt;, (iii) &lt;/span&gt;기하학 구성요소의
종류와 빈도&lt;span lang=&quot;EN-US&quot;&gt;, (iv) &lt;/span&gt;레벨에 분포되는 수집물&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;동전&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;의 배분 방식&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;예&lt;span lang=&quot;EN-US&quot;&gt;: &lt;/span&gt;그룹당
동전 수&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;갭 위 동전 출현 확률 등&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;이 포함된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;또한&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;생성된 각 리듬 그룹마다 점프 빈도&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;점프를 위해 특정 기하학&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;스프링&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;이
얼마나 자주 발생해야 하는지와 같은 파라미터가 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;다른 파라미터 집합은 리듬 길이&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;밀도&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;비트 종류 및 비트 패턴을 제어한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;추상화 수준이 다른 다수의 파라미터는 많은 제어 옵션을 제공하며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;매우
다양한 레벨을 다채롭게 생성할 수 있게 해준다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;또한&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;이
방법은 특히 플랫폼 게임 장르에서 게임플레이와 매우 자연스럽게 연결된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;하지만 이 접근법은 던전 생성에도
잘 맞출 수 있을 것이다&lt;span lang=&quot;EN-US&quot;&gt;. Dormans&lt;/span&gt;와 마찬가지로&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;두
단계의 문법을 사용하며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;첫 번째 단계는 게임 플레이&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;이
경우에는 플레이어 행동&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;를&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;두 번째 단계는 게임 공간&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;지오메트리&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;를 고려한다&lt;span lang=&quot;EN-US&quot;&gt;. Smith
&lt;/span&gt;등이 정의한 리듬 개념은 던전에는 직접 적용되지 않지만&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;방과 복도를 통과하는 속도 또는
템포는 던전 기반 게임에서 유사한 가치를 가질 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;레벨을 리듬 그룹으로 분해하는 것은 속도와
같은 독특한 게임플레이 특성을 가진 던전 그룹으로 던전을 분할하는 것과도 잘 연결된다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;두 번째 방법은&lt;span lang=&quot;EN-US&quot;&gt; Mawhorter &lt;/span&gt;등&lt;span lang=&quot;EN-US&quot;&gt;(11)&lt;/span&gt;의 제안으로&lt;span lang=&quot;EN-US&quot;&gt; &#39;OccupancyRegulated
Extension(ORE)&#39;&lt;/span&gt;라고 하며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;이는 &lt;span lang=&quot;EN-US&quot;&gt;2D &lt;/span&gt;플랫폼
레벨을 절차적으로 생성하는 것을 직접 목표로 한다&lt;span lang=&quot;EN-US&quot;&gt;. ORE&lt;/span&gt;는 인간 설계 기반 레벨 작성이 임의의 규모에서
지원되는 일반적인 지오메트리 조립 알고리즘이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이 접근 방식은 사전에 작성된 레벨 청크를 기초로 삼아&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;라이브러리에서 이러한 청크를 사용해 레벨을 조립한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;청크는 단일
지상 요소&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;지상 요소와 오브젝트의 조합&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;상호작용 가능한
오브젝트 등과 같은 레벨 지오메트리를 의미한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이는&lt;span lang=&quot;EN-US&quot;&gt; Smith &lt;/span&gt;등&lt;span lang=&quot;EN-US&quot;&gt;(23)&lt;/span&gt;이 도입한 리듬 그룹과 다르다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;리듬 그룹은&lt;span lang=&quot;EN-US&quot;&gt; PCG &lt;/span&gt;방법으로 별도로 생성되는 반면&lt;span lang=&quot;EN-US&quot;&gt;, ORE &lt;/span&gt;청크는 수동으로 만든
콘텐츠 조각들이 라이브러리에 존재한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;알고리즘은 다음 단계를 거친다&lt;span lang=&quot;EN-US&quot;&gt;:
(i) &lt;/span&gt;임의의 잠재적 플레이어 위치&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;점유율&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;를
선택하여 청크를 배치&lt;span lang=&quot;EN-US&quot;&gt;; (ii) &lt;/span&gt;문맥 기반 호환 청크 목록에서 청크 선택&lt;span lang=&quot;EN-US&quot;&gt;; (iii) &lt;/span&gt;새 청크를 기존 지오메트리와 통합&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이 과정은 잠재적
플레이어 위치가 더 이상 없을 때까지 계속되며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;그 후 후처리는 파워업과 같은 오브젝트 배치를 담당한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;이 프레임워크는 일반적인 &lt;span lang=&quot;EN-US&quot;&gt;2D &lt;/span&gt;플랫폼 게임을 위해 설계되었으므로&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;특정 게임 요소와 메커니즘을 채워 넣어야 하고&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;청크를 설계해 라이브러리에
추가해야 한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;다양한 레벨은 최소한 흥미로운 청크 라이브러리를 사용해야만 생성될 수 있다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Mawhorter &lt;/span&gt;등은 그들의&lt;span lang=&quot;EN-US&quot;&gt;
ORE &lt;/span&gt;알고리즘에 대한 구체적인 제어 매개변수는 언급하지 않지만&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;디자이너는 여전히 일정
부분 제어할 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;우선&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;라이브러리 속 청크와 발생
확률은 암묵적 매개변수이며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;이는 실제로 레벨의 지오메트리와 다양성을 결정한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;따라서 플레이어가 수행할 수 있는 동작은 정의되고 청크 설계에 포함되어야 한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;그리고 가장 중요한 점은 그들의 혼합 주도 방식이 게임플레이 관점에서 제공할 수 있는 가장 큰 제어를 제공한다는
것이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;그러나 이 방식을 지나치게 확장하면 수동으로 레벨을 구성하는 것에 지나치게 가까워져&lt;span lang=&quot;EN-US&quot;&gt; PCG&lt;/span&gt;의 이점을 감소시킬 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;요약하면&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;이 방법은 많은 제어를 제공하지만&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;생성 과정은 아직 비효율적일
수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;특정 레벨을 생성하기 위해서는 여전히 많은 수작업이 필요해 보인다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;이&lt;span lang=&quot;EN-US&quot;&gt; ORE &lt;/span&gt;방법은 혼합 주도 방식을 제안하며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;디자이너가 알고리즘이 나머지를 생성하기 전에 콘텐츠를 배치할 수 있는 옵션을 제공한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이 접근법은 던전 생성에서도 매우 흥미롭다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;부분적으로 설계된 레벨을
채워넣을 수 있는 알고리즘은 큰 가치를 지닌다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;디자이너가 특수 이벤트 방을 배치하고&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;그 뒤에 알고리즘이 보다 일반적인 부분을 추가하도록 상상해 보라&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이
혼합 주도 방식은 레벨의 다양성과 디자이너의 제어를 동시에 향상시키면서도 그들의 작업 부담을 덜어준다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;또한&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;특수 방이 보다 일반적인 복도로 연결되는 던전 디자인 원칙에도 부합한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;청크
라이브러리를 활용하는 것은 던전 레벨 생성&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;예&lt;span lang=&quot;EN-US&quot;&gt;: &lt;/span&gt;템플릿 방&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;교차점&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;복도 세트의 결합&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;과
잘 맞는다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;다만&lt;span lang=&quot;EN-US&quot;&gt;, 3D &lt;/span&gt;던전 레벨은 일반적으로 &lt;span lang=&quot;EN-US&quot;&gt;2D &lt;/span&gt;플랫폼 레벨보다 훨씬 크고 복잡한 청크 라이브러리를 요구한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이는
많은 유사한 지면 지오메트리를 공유하기 때문이다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;3. 7 &lt;/span&gt;플랫폼 생성 예시&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;3. 7. 1 Spelunky&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Spelunky&lt;/span&gt;는 &lt;span lang=&quot;EN-US&quot;&gt;2008&lt;/span&gt;년&lt;span lang=&quot;EN-US&quot;&gt; Derek Yu&lt;/span&gt;가 처음 만든 &lt;span lang=&quot;EN-US&quot;&gt;2D &lt;/span&gt;플랫폼 인디 게임이다&lt;span lang=&quot;EN-US&quot;&gt; [29]. &lt;/span&gt;게임의&lt;span lang=&quot;EN-US&quot;&gt; PC &lt;/span&gt;버전은 무료로 제공된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이후 &lt;span lang=&quot;EN-US&quot;&gt;2012&lt;/span&gt;년&lt;span lang=&quot;EN-US&quot;&gt; Xbox Live
Arcade&lt;/span&gt;에서 향상된 그래픽과 더 많은 콘텐츠를 갖춘 업데이트 버전이 출시되었으며&lt;span lang=&quot;EN-US&quot;&gt;, 2013&lt;/span&gt;년에는&lt;span lang=&quot;EN-US&quot;&gt; PC&lt;/span&gt;에서 향상판이 추가로 출시되었다&lt;span lang=&quot;EN-US&quot;&gt;. Spelunky&lt;/span&gt;의 게임 플레이는
&lt;span lang=&quot;EN-US&quot;&gt;2D &lt;/span&gt;레벨을 탐색하고&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;아이템을 수집하고&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;적을 처치하며 끝까지 도달하는 것이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;게임에서 승리하려면 로프&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;버프&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;돈 등 다양한 자원을 잘 관리하는 기술이 필요하다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;어느 레벨에서든 게임에 졌을 때는 처음부터 다시 시작해야 한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;게임은 난이도가 점점 증가하는 네 개의 그룹으로 구성된 맵으로 이루어져 있다&lt;span lang=&quot;EN-US&quot;&gt;.
&lt;/span&gt;각 레벨 세트는 구별되는 레이아웃을 가지고 있으며 새로운 도전과 새로운 종류의 적을 도입한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;두
번째 세트의 예시 레벨은 그림 &lt;span lang=&quot;EN-US&quot;&gt;3.12&lt;/span&gt;에 제시되어 있다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Spelunky&lt;/span&gt;의 돋보이는 특징은 게임 콘텐츠의 프로시저적 생성이다&lt;span lang=&quot;EN-US&quot;&gt;. PCG&lt;/span&gt;를 사용하면 매번 플레이할 때마다 독특한 무한한 변형을 생성할 수 있다&lt;span lang=&quot;EN-US&quot;&gt;.
Spelunky&lt;/span&gt;의 각 레벨은 &lt;span lang=&quot;EN-US&quot;&gt;4×4 &lt;/span&gt;격자로 나뉜 &lt;span lang=&quot;EN-US&quot;&gt;16&lt;/span&gt;개의
방으로 구성되며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;두 방은 레벨의 시작과 끝을 표시한다&lt;span lang=&quot;EN-US&quot;&gt; (&lt;/span&gt;그림
&lt;span lang=&quot;EN-US&quot;&gt;3.13 &lt;/span&gt;참조&lt;span lang=&quot;EN-US&quot;&gt;). &lt;/span&gt;인접 방을 연결하는 복도도 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;모든 방이 반드시 연결되는 것은 아니다&lt;span lang=&quot;EN-US&quot;&gt;; &lt;/span&gt;그림 &lt;span lang=&quot;EN-US&quot;&gt;3.13&lt;/span&gt;에는 좌상단과 좌하단 모서리에 있는 고립된 방 같은 것이 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이러한
방에 도달하려면 플레이어는 한정된 자원인 폭탄을 사용해 벽을 파괴해야 한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;각 방의 레이아웃은 미리 정의된 템플릿 세트에서 선택된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;그림 &lt;span lang=&quot;EN-US&quot;&gt;3.13&lt;/span&gt;에 제시된 방 중 하나의 예시 템플릿은 그림 &lt;span lang=&quot;EN-US&quot;&gt;3.14&lt;/span&gt;에 나타나
있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;각 템플릿에서는 무작위화가 발생할 수 있는 여러 청크가 표시된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;레벨이 생성될 때마다 이 청크들은 무작위 숫자 생성기 세트를 따라 다양한 종류의 장애물로 대체된다&lt;span lang=&quot;EN-US&quot;&gt; [10]. &lt;/span&gt;이 방법을 따라&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;알고리즘을 실행할 때마다 새로운 레벨
변형을 생성할 수 있다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;그림 &lt;span lang=&quot;EN-US&quot;&gt;3.12: Spelunky &lt;/span&gt;스냅샷&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;그림 &lt;span lang=&quot;EN-US&quot;&gt;3.13: Spelunky&lt;/span&gt;에서의 레벨 생성&lt;span lang=&quot;EN-US&quot;&gt;. [10]&lt;/span&gt;에서 가져옴&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;
&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;그림 &lt;span lang=&quot;EN-US&quot;&gt;3.14: Spelunky&lt;/span&gt;의 예시 방 디자인&lt;span lang=&quot;EN-US&quot;&gt;. [10]&lt;/span&gt;에서 가져옴&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;더 구체적으로&lt;span lang=&quot;EN-US&quot;&gt;, Spelunky&lt;/span&gt;의 각 방은 &lt;span lang=&quot;EN-US&quot;&gt;8×10 &lt;/span&gt;행렬에 배열된 &lt;span lang=&quot;EN-US&quot;&gt;80&lt;/span&gt;개의 타일로 구성된다&lt;span lang=&quot;EN-US&quot;&gt; [6]. &lt;/span&gt;예시 방 템플릿은 다음과 같을 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;0000000011&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;0060000L11&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;0000000L11&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;0000000L11&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;0000000L11&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;0000000011&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;0000000011&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;1111111111&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;여기서 &lt;span lang=&quot;EN-US&quot;&gt;0&lt;/span&gt;은 빈 칸을 나타내고&lt;span lang=&quot;EN-US&quot;&gt;, 1&lt;/span&gt;은
벽 또는 벽돌을&lt;span lang=&quot;EN-US&quot;&gt;, L&lt;/span&gt;은 사다리를 나타낸다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이 예에서 &lt;span lang=&quot;EN-US&quot;&gt;6&lt;/span&gt;은 무작위 장애물로 대체될 수 있어 다양한 변형을 생성할 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;장애물
또는 함정은 일반적으로 원래 타일을 덮어쓰는 &lt;span lang=&quot;EN-US&quot;&gt;5×3 &lt;/span&gt;타일 블록으로 구성된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;게임에 포함된 예시 함정으로는 스파이크&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;거미줄&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;화살 함정 등이 있다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;레벨의 기본 레이아웃은 부분적으로 무작위이며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;변형 기회를 제공하지만
몬스터와 함정의 배치는 &lt;span lang=&quot;EN-US&quot;&gt;100% &lt;/span&gt;무작위이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;물리적 레이아웃이
생성된 후&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;레벨 맵은 몬스터를 생성할 수 있는 잠재적 장소를 스캔한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;예를 들어&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;뒤에 빈 타일이 있는 벽돌은 거미를 생성하기에 충분한
공간을 제공한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;몬스터 생성을 제어하는 또 다른 무작위 숫자 세트가 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이 숫자들은 유형과 생성 빈도를 제어한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;예를 들어&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;거대 거미를 생성할 확률이 &lt;span lang=&quot;EN-US&quot;&gt;20%&lt;/span&gt;이며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;한 번 거미가 생성되면 이 확률은 &lt;span lang=&quot;EN-US&quot;&gt;0&lt;/span&gt;으로 설정되어 레벨에 한 개
이상의 거대 거미가 존재하지 않도록 한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;이러한 관점에서&lt;span lang=&quot;EN-US&quot;&gt; Spelunky&lt;/span&gt;의 레벨 생성은 세 가지 주요 단계의
조합으로 볼 수 있다&lt;span lang=&quot;EN-US&quot;&gt;: &lt;/span&gt;첫 번째 단계에서는 사용 가능한 템플릿 중에서 방을 선택하고 출입점을 정의하여
레벨의 주요 레이아웃을 생성한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;두 번째 단계는 장애물 생성을 포함하며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;이는 사전에 정의된 공간에 휴리스틱 집합에 따라 장애물을 배치하는 에이전트가 레벨을 가로질러 진행하는 것으로
생각할 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;마지막 단계는 몬스터 생성 단계이며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;다른
에이전트가 레벨을 검색하고 충분한 공간이 발견되고 일련의 조건이 만족될 때 몬스터를 배치한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;3.7.2 Infinite Mario Bros.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Super Mario Bros.&lt;/span&gt;는 닌텐도에서 개발하고 &lt;span lang=&quot;EN-US&quot;&gt;1980&lt;/span&gt;년대 중반에 출시된 매우 인기 있는 &lt;span lang=&quot;EN-US&quot;&gt;2D &lt;/span&gt;플랫폼 게임이다&lt;span lang=&quot;EN-US&quot;&gt; [12]. &lt;/span&gt;게임의 퍼블릭 도메인 복제판인 &lt;span lang=&quot;EN-US&quot;&gt;Infinite Mario Bros.
(IMB)[14]&lt;/span&gt;는 이후&lt;span lang=&quot;EN-US&quot;&gt; Markus Persson&lt;/span&gt;에 의해 발표되었다&lt;span lang=&quot;EN-US&quot;&gt;. IMB&lt;/span&gt;는 &lt;span lang=&quot;EN-US&quot;&gt;Super Mario Bros.&lt;/span&gt;의 아트 자산과 일반 게임
메커니즘을 특징으로 하지만 레벨 구성이 다르다&lt;span lang=&quot;EN-US&quot;&gt;. IMB&lt;/span&gt;는 웹에서 플레이할 수 있으며&lt;span lang=&quot;EN-US&quot;&gt; Java &lt;/span&gt;소스 코드도 제공된다&lt;span lang=&quot;EN-US&quot;&gt;. Super Mario Bros.&lt;/span&gt;의
대부분 기능을 구현하면서&lt;span lang=&quot;EN-US&quot;&gt; IMB&lt;/span&gt;의 돋보이는 특징은 자동 레벨 생성이다&lt;span lang=&quot;EN-US&quot;&gt;.
&lt;/span&gt;새로운 게임을 시작할 때마다 레벨 맵을 순회하면서 특정 휴리스틱에 따라 특징을 추가해 레벨이 무작위로 생성된다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;IMB&lt;/span&gt;에서 레벨의 내부 표현은 게임 요소들의 이차원 배열이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;“작은” 상태에서는 마리오가 한 블록 너비와 한 블록 높이이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;배열의
각 위치는 벽돌 블록&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;코인&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;적 또는 빈칸으로 채울 수
있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;레벨은 이차원 레벨 맵에 게임 요소를 배치함으로써 생성된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;이 게임의 레벨을 생성하기 위해 다양한 접근 방식을 따를 수 있다&lt;span lang=&quot;EN-US&quot;&gt;[21, 19,
16, 24]. &lt;/span&gt;아래에서는 한 가지 가능한 접근 방식을 설명한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;확률적 다중 패스 생성기&lt;span lang=&quot;EN-US&quot;&gt;(Probabilistic Multi-pass
Generator, PMPG)&lt;/span&gt;는&lt;span lang=&quot;EN-US&quot;&gt; Ben Weber[21]&lt;/span&gt;가&lt;span lang=&quot;EN-US&quot;&gt; Mario AI Championship[17]&lt;/span&gt;의 레벨 생성 트랙에 참여하기 위해 만들었다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;생성기는 에이전트 기반이며 먼저 기본 레벨을 만들고 그 다음에 여러 번의 패스를 수행한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;레벨 생성은 왼쪽에서 오른쪽으로 이동하며 서로 다른 유형의 게임 요소 중 하나를 추가하는 여섯 번의 패스로
구성된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;각 패스는 사전에 정의된 균일 확률 분포에 따라 발생할 수 있는 여러 이벤트&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;총 &lt;span lang=&quot;EN-US&quot;&gt;14&lt;/span&gt;개&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;와 연관된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이 분포는 수동으로 가중치를 부여하며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;이 가중치를 조정함으로써
간격&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;언덕&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;적 등 다양한 요소의 빈도를 제어할 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;고려되는 여섯 번의 패스는 다음과 같다&lt;span lang=&quot;EN-US&quot;&gt;:&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;1. &lt;/span&gt;지면의 높이를 변경하고 간격을 시작하거나 끝내어 레벨의 기본
구조를 변경하는 초기 패스&lt;span lang=&quot;EN-US&quot;&gt;;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;2. &lt;/span&gt;두 번째 패스는 배경에 언덕을 추가한다&lt;span lang=&quot;EN-US&quot;&gt;;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;3. &lt;/span&gt;세 번째&lt;span lang=&quot;EN-US&quot;&gt; Pass&lt;/span&gt;에서는
기본적으로 생성된 플랫폼을 바탕으로 파이프 및 캐논과 같은 정적 적을 추가한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;4. &lt;/span&gt;쿠파와 구미보와 같은 움직이는 적을 추가한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;5. &lt;/span&gt;다섯 번째&lt;span lang=&quot;EN-US&quot;&gt; Pass&lt;/span&gt;에서는
연결되지 않은 수평 블록을 추가하고&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;마지막으로&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;6. &lt;/span&gt;여섯 번째&lt;span lang=&quot;EN-US&quot;&gt; Pass&lt;/span&gt;에서는
레벨 전역에 코인을 배치한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;플레이 가능성&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;즉 시작 지점에서 끝 지점까지의 경로가 존재함을 보장하기
위해 생성되고 배치된 항목에 제약을 가한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;예를 들어&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;생성된
구멍의 너비는 플레이어가 뛰어넘을 수 있는 최대 블록 수로 제한되며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;파이프의 높이는 플레이어가 통과할
수 있도록 제한된다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;3.8 &lt;/span&gt;실습 세션&lt;span lang=&quot;EN-US&quot;&gt;:
InfiniTux(&lt;/span&gt;및&lt;span lang=&quot;EN-US&quot;&gt; Infinite Mario)&lt;/span&gt;의 레벨 생성기 &lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;InfiniTux&lt;/span&gt;는&lt;span lang=&quot;EN-US&quot;&gt; Infinite
Mario Bros.(IMB)&lt;/span&gt;의 레벨을 생성하는 데 사용되는 기반 소프트웨어를&lt;span lang=&quot;EN-US&quot;&gt; Super Tux[26]&lt;/span&gt;의
아트 및 사운드 자산과 결합해 만든 &lt;span lang=&quot;EN-US&quot;&gt;2D &lt;/span&gt;플랫폼 게임이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이
게임은&lt;span lang=&quot;EN-US&quot;&gt; IMB&lt;/span&gt;를 대체하기 위해 만들어졌으며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;연구&lt;span lang=&quot;EN-US&quot;&gt;[13, 22, 25, 7, 2]&lt;/span&gt;와&lt;span lang=&quot;EN-US&quot;&gt; Mario AI &lt;/span&gt;챔피언십&lt;span lang=&quot;EN-US&quot;&gt;[20, 21, 5]&lt;/span&gt;에서 사용된다&lt;span lang=&quot;EN-US&quot;&gt;. InfiniTux&lt;/span&gt;의 레벨 생성기가&lt;span lang=&quot;EN-US&quot;&gt; IMB&lt;/span&gt;에서 사용되는 것과 동일하기 때문에&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;무작위 시드를 활용해 무한히
변형되는 레벨을 제공한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;난이도는 장애물과 몬스터의 수&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;빈도&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;유형을 조절하는 서로 다른 난이도 값을 사용해 조정할 수 있다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;본 실습의 목적은 이 장에서 제시된 한 가지 이상의 방법을 활용해 게임용 콘텐츠를 생성하는 자체 생성기를 구현하는
것이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;사용할 소프트웨어는&lt;span lang=&quot;EN-US&quot;&gt; InfiniTux&lt;/span&gt;를 기반으로
한&lt;span lang=&quot;EN-US&quot;&gt; Mario AI &lt;/span&gt;챔피언십의 후속인&lt;span lang=&quot;EN-US&quot;&gt; Platformer AI
Competition[18]&lt;/span&gt;의 레벨 생성 트랙에서 사용되는 소프트웨어이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이 소프트웨어는
시스템과의 상호작용을 용이하게 하는 인터페이스를 제공하며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;좋은 출발점이 된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;원본 레벨 생성기를 수정하거나 영감으로 활용할 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;소프트웨어
사용을 시작하는 데 도움을 주기 위해&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;제공되는 인터페이스의 주요 구성 요소와 사용 방법을 설명한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;레벨 생성 트랙 경쟁을 위해 소프트웨어가 개발되고 있으며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;이 트랙은
참가자들이 특정 플레이어에게 재미있는 레벨 생성기를 제출하도록 초대한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;인터페이스는 생성기를 구축할
때 활용할 수 있는 플레이어 행동 정보를 통합한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이 정보는 플레이어가 테스트 레벨을 플레이하면서
수집되며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;게임플레이 세션에서 추출된 통계적 특징을 담은 게임플레이 매트릭스에 저장된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;특징 예시로는 점프 횟수&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;달리기에 소요된 시간&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;수집한 아이템 수&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;처치한 적 수 등이 포함된다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;생성기가 정상적으로 작동하려면&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;레벨이&lt;span lang=&quot;EN-US&quot;&gt; LevelInterface&lt;/span&gt;를 구현해야 하며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;이는 레벨이 어떻게 구성되는지와
다양한 유형의 요소가 레벨 전반에 어떻게 흩어지는지를 지정한다&lt;span lang=&quot;EN-US&quot;&gt;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;public byte[][] getMap();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;public SpriteTemplate[][]
getSpriteTemplates()&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;레벨 맵의 크기는 &lt;span lang=&quot;EN-US&quot;&gt;320×15&lt;/span&gt;이며&lt;span lang=&quot;EN-US&quot;&gt;,
&lt;/span&gt;맵을 채우기 위해 원하는 방식을 구현해야 한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;레벨의 기본 구조는 적의 배치 정보를 저장하는
맵과는 다른 맵에 저장된다는 점을 주의해야 한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;레벨 생성기는 플레이어의 게임플레이 매트릭스를 레벨에 전달하고 시뮬레이터와 통신해야 하며&lt;span lang=&quot;EN-US&quot;&gt;, LevelGenerator &lt;/span&gt;인터페이스를 구현해야 한다&lt;span lang=&quot;EN-US&quot;&gt;: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;public LevelInterface
generateLevel(GamePlay playerMat);&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;이 소프트웨어를 콘텐츠 생성에 활용한 사례가 문헌에 다수 보고되고 있으며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;그
중 일부는&lt;span lang=&quot;EN-US&quot;&gt; Mario AI &lt;/span&gt;챔피언십에 참여했고&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;구현체는
오픈 소스로 공개되어 있으며 경쟁 웹사이트&lt;span lang=&quot;EN-US&quot;&gt;[17]&lt;/span&gt;에서 자유롭게 이용할 수 있다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;3.9 &lt;/span&gt;요약&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;건설적 방법은 롤플레잉 게임과 특정 플랫포머에서 던전과 레벨을 생성하는 데 일반적으로 사용된다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이러한 방법은 예측 가능한&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;대부분 짧은 시간 내에 실행되기 때문이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이러한 방법의 한 가지 계열은 이진 공간 분할&lt;span lang=&quot;EN-US&quot;&gt;(Binary Space
Partitioning)&lt;/span&gt;을 기반으로 하며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;영역을 재귀적으로 더 작은 단위로 분할한 뒤&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;순서대로 이 단위들을 연결하여 던전을 구성한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;또 다른 계열은&lt;span lang=&quot;EN-US&quot;&gt; &quot;&lt;/span&gt;굴착&lt;span lang=&quot;EN-US&quot;&gt;&quot;&lt;/span&gt;하는 에이전트&lt;span lang=&quot;EN-US&quot;&gt;(agent)&lt;/span&gt;를 기반으로 하여 던전을 탐색하며 구성한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이러한 방법은
게임 개발에서 유래했으며 다소 덜 원칙적일 수 있지만&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;던전 또는 레벨 생성에 사용되는 다른 방법들은
잘 알려진 컴퓨터 과학 기법의 응용이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;문법 기반 방법은 &lt;span lang=&quot;EN-US&quot;&gt;5&lt;/span&gt;장에
더 자세히 다루어지며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;생성 규칙을 사용해 공리&lt;span lang=&quot;EN-US&quot;&gt;(axion)&lt;/span&gt;에서부터
던전을 확장한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;셀룰러 오토마타는 확률적이며 반복적인 방법으로&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;독립적으로
사용하거나 다른 방법과 결합해 부드럽고 유기적인 디자인을 만들 수 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;마지막으로&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;관련된 몇 가지 방법은 레벨을 여러 번에 걸쳐 순차적으로 처리하며 간단한 확률 규칙에 따라 다양한 유형의 콘텐츠를
추가한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이러한 방법은 상징적인 로그라이크 플랫폼 게임&lt;span lang=&quot;EN-US&quot;&gt;
Spelunky&lt;/span&gt;와 마리오&lt;span lang=&quot;EN-US&quot;&gt; AI &lt;/span&gt;프레임워크에도 사용되었지만&lt;span lang=&quot;EN-US&quot;&gt;,
&lt;/span&gt;던전에도 쉽게 적용될 수 있다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://szmyoung.blogspot.com/feeds/3052007455730117902/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://szmyoung.blogspot.com/2025/09/blog-post.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23721639/posts/default/3052007455730117902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23721639/posts/default/3052007455730117902'/><link rel='alternate' type='text/html' href='http://szmyoung.blogspot.com/2025/09/blog-post.html' title='지하 던전 및 레벨을 위한 구조적 생성 방법 (번역)'/><author><name>Sean Myoung</name><uri>http://www.blogger.com/profile/16105280024115881940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23721639.post-1221871092083571048</id><published>2024-05-18T13:30:00.002+09:00</published><updated>2024-05-18T14:04:37.780+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Dragon Age Inquisition"/><category scheme="http://www.blogger.com/atom/ns#" term="Game"/><category scheme="http://www.blogger.com/atom/ns#" term="Patch"/><category scheme="http://www.blogger.com/atom/ns#" term="게임"/><category scheme="http://www.blogger.com/atom/ns#" term="패치"/><title type='text'>에픽스토어판 드래곤 에이지 인퀴지션 한글패치</title><content type='html'>&lt;p&gt;에픽스토어에서 무료 배포한 드래곤에이지 인퀴지션 GOTY판에 한글 패치가 안 되길래 찾아보다 방법을 찾아서 정리합니다. 제가 테스트한 환경은 Win11에서 에픽스토어 드래곤에이지 인퀴지션 GOTY판입니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;1. 당연히 에픽에서 게임을 설치합니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;2. 다음 링크에서 한글 패치를 받고 문서의 내용대로 Frosty Mod Manager를 설정하여 실행합니다.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://blog.naver.com/dhrgusdlrns4/222471457139&quot; target=&quot;_blank&quot;&gt;https://blog.naver.com/dhrgusdlrns4/222471457139&lt;/a&gt;&lt;/p&gt;&lt;p&gt;실행해보면 한글이 안 나와서 당황하게 되는데요.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;3. 다음 링크에서 FrostyFix를 다운받습니다.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/Dyvinia/FrostyFix/releases&quot; target=&quot;_blank&quot;&gt;https://github.com/Dyvinia/FrostyFix/releases&lt;/a&gt;&lt;/p&gt;&lt;p&gt;FrostyFix에서 Platform을 Global로 설정하고 Mods Enabled 버튼을 눌러주면 한글 패치가 적용됩니다.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://szmyoung.blogspot.com/feeds/1221871092083571048/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://szmyoung.blogspot.com/2024/05/blog-post.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23721639/posts/default/1221871092083571048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23721639/posts/default/1221871092083571048'/><link rel='alternate' type='text/html' href='http://szmyoung.blogspot.com/2024/05/blog-post.html' title='에픽스토어판 드래곤 에이지 인퀴지션 한글패치'/><author><name>Sean Myoung</name><uri>http://www.blogger.com/profile/16105280024115881940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23721639.post-7759515001525358785</id><published>2023-11-08T13:00:00.003+09:00</published><updated>2023-11-26T20:13:53.329+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Blender"/><category scheme="http://www.blogger.com/atom/ns#" term="Facial Image to Metahuman"/><category scheme="http://www.blogger.com/atom/ns#" term="Metahuman"/><category scheme="http://www.blogger.com/atom/ns#" term="Unreal Engine 5"/><title type='text'>얼굴 이미지로 메타휴먼 생성하기</title><content type='html'>2D 얼굴 이미지를 3D 메시로 만들어 언리얼 메타휴먼을 생성해보는걸 해봤습니다. 결과가 썩 만족스럽지는 않지만 전체 과정을 한 바퀴 돌았으니 여기까지 한 작업을 간단히 정리하고 퀄리티 업으로 넘어가기로 합니다. 본문에서 한 줄로 짧게 넘어가는 과정이 실제로는 그렇게 간단하진 않습니다. 직접 적용하려면 파이썬, 블렌더, 언리얼에 대해 어느 정도 사전 지식이 필요합니다.&lt;br /&gt;&lt;br /&gt;

기본적인 아이디어의 얼개는 다음 동영상에서 가져왔습니다.
&lt;br /&gt;&lt;br /&gt;
&lt;a href=&quot;https://youtu.be/kz13lcOQcig?si=TRlwu_A5ojT7ulKX&quot; target=&quot;_blank&quot;&gt;https://youtu.be/kz13lcOQcig?si=TRlwu_A5ojT7ulKX&lt;/a&gt;
&lt;br /&gt;&lt;br /&gt;
먼저 얼굴 이미지를 고릅니다. 일단 가볍게 테스트할 용도로 StableDiffusion이 생성한 이미지를 한 장 가져옵니다.
&lt;br /&gt;&lt;br /&gt;
&lt;a href=&quot;https://www.ptsearch.info/articles/detail/249ef784-e391-4b6c-8d8c-a36c3f25192b&quot; target=&quot;_blank&quot;&gt;https://www.ptsearch.info/articles/detail/249ef784-e391-4b6c-8d8c-a36c3f25192b&lt;/a&gt;
&lt;br /&gt;&lt;br /&gt;
전형적인 요즘 흔히 보이는 생성 이미지인데 얼굴이 잘 보여서 작업이 잘 될 것 같아 이걸로 골랐습니다.
&lt;br /&gt;&lt;br /&gt;
그 다음에는 이미지를 3D 메시로 변환해야 하는데, 이 작업을 위해 얼굴 이미지에서 5군데의 점(양쪽 눈, 코, 입의 양쪽 끝)을 찾아야 합니다. 저는 다음 라이브러리를 이용했습니다.
&lt;br /&gt;&lt;br /&gt;
&lt;a href=&quot;https://github.com/ipazc/mtcnn&quot; target=&quot;_blank&quot;&gt;https://github.com/ipazc/mtcnn&lt;/a&gt;
&lt;br /&gt;&lt;br /&gt;
파이썬을 설치하고 처음에 선택한 이미지에서 이 라이브러리를 돌려주면 5군데의 점이 나옵니다. 점들을 txt 파일로 저장하고 다음 라이브러리를 세팅해서 이미지와 점 배열을 넣고 돌려주면 3D 메시(OBJ 포맷)가 나옵니다.
&lt;br /&gt;&lt;br /&gt;
&lt;a href=&quot;https://github.com/sicxu/Deep3DFaceRecon_pytorch&quot; target=&quot;_blank&quot;&gt;https://github.com/sicxu/Deep3DFaceRecon_pytorch&lt;/a&gt;
&lt;br /&gt;&lt;br /&gt;
메타휴먼으로 넘기기 전에 블렌더에서 UV를 만들어 줍니다. 이 과정은 처음 나온 동영상에 잘 나와있습니다. 매번 동영상을 보기가 번거로워서 블렌더에서의 작업 단계를 정리합니다.
&lt;br /&gt;&lt;br /&gt;
&lt;li&gt;씬을 비우고 OBJ 파일 임포트&lt;/li&gt;
&lt;li&gt;UV Editing으로 이동해서 빈 UV 이미지 생성&lt;/li&gt;&lt;li&gt;빈 UV 이미지에 이름 지정&lt;/li&gt;
&lt;li&gt;메시를 선택하고 UV 메뉴에서 Smart UV Project&lt;/li&gt;
&lt;li&gt;Shading에서 Color Attribute 입력을 추가하고 Color 속성을 Color로 변경하여 Principled BSDF의 Base Color에 연결&lt;/li&gt;
&lt;li&gt;Render 속성에서 렌더러를 Cycles로 변경하고 Device를 GPU Compute로 변경&lt;/li&gt;
&lt;li&gt;Image Texture 추가하고 앞서 생성한 UV 이미지로 지정&lt;/li&gt;
&lt;li&gt;Target Image를 앞서 생성한 UV 이미지로 지정&lt;/li&gt;
&lt;li&gt;Bake 메뉴에서 다음과 같이 지정하고 Bake&lt;/li&gt;&lt;blockquote style=&quot;border: none; margin: 0px 0px 0px 40px; padding: 0px;&quot;&gt;&lt;li style=&quot;text-align: left;&quot;&gt;Bake Type을 Diffuse로 지정&amp;nbsp;&lt;/li&gt;&lt;/blockquote&gt;&lt;blockquote style=&quot;border: none; margin: 0px 0px 0px 40px; padding: 0px;&quot;&gt;&lt;li style=&quot;text-align: left;&quot;&gt;Contributions를 Color만 남기고 모두 지움&amp;nbsp;&lt;/li&gt;&lt;/blockquote&gt;
&lt;li&gt;Bake가 완료되면 Target Image의 Color를 Principled BSDF의 Base Color에 연결하여 결과 확인&lt;/li&gt;
&lt;li&gt;작업이 완료된 이미지를 저장&lt;/li&gt;
&lt;li&gt;다음과 같이 옵션을 지정하여 FBX로 익스포트&lt;/li&gt;&lt;blockquote style=&quot;border: none; margin: 0px 0px 0px 40px; padding: 0px;&quot;&gt;&lt;li style=&quot;text-align: left;&quot;&gt;Path Mode는 Copy&lt;/li&gt;&lt;/blockquote&gt;&lt;blockquote style=&quot;border: none; margin: 0px 0px 0px 40px; padding: 0px;&quot;&gt;&lt;li style=&quot;text-align: left;&quot;&gt;Object Types는 Mesh만 선택&amp;nbsp;&lt;/li&gt;&lt;/blockquote&gt;
&lt;br /&gt;
여기까지 작업해서 만든 메시를 블렌더에서 보니 처음에 선택했던 이미지와 크게 다르지는 않은데 살짝 덜 예뻐진 것 같습니다.
&lt;br /&gt;&lt;br /&gt;
이제 메시를 메타휴먼으로 넘겨줍니다. 이 과정은 다음 문서에 잘 나와있습니다.
&lt;br /&gt;&lt;br /&gt;
&lt;a href=&quot;https://dev.epicgames.com/documentation/en-US/metahuman/mesh-to-metahuman-quick-start-in-unreal-engine&quot; target=&quot;_blank&quot;&gt;https://dev.epicgames.com/documentation/en-US/metahuman/mesh-to-metahuman-quick-start-in-unreal-engine&lt;/a&gt;
&lt;br /&gt;&lt;br /&gt;
이 단계를 실제로 해보면 메타휴먼으로 넘기는 과정에서 얼굴 형태에 변형이 생깁니다. 메타휴먼 플러그인이 눈코입 위주로 처리해서 넘기는 방식이라 전체적인 모양이 생각대로 안 나옵니다. 눈이 작아진 것처럼 느껴지는것도 얼굴이 커져서가 아닐까 싶어요. 프로그래머인 저 보다 예술감각이 있는 사람이 메타휴먼 크리에이터에서 세팅을 하면 이것보단 나을 것 같지만 헤어스타일에도 제약이 많아서 비슷한 느낌이 나지 않네요. 전반적으로 얼굴이 평범해집니다.
&lt;br /&gt;&lt;br /&gt;
생성한 메타휴먼을 언리얼 인게임으로 불러오는건 생략하겠습니다. 메타휴먼 단계에서 이 상태면 인게임에서는 더 안 예쁠 공산이 크므로 귀찮네요.
&lt;br /&gt;&lt;br /&gt;
일단 된다는데 의의를 두고 좀 더 다듬어봐야겠네요. 얼굴형이 중요한 타입 보다는 눈코입이 뚜렷한 타입의 얼굴이 결과물이 잘 나올 것 같아요.



</content><link rel='replies' type='application/atom+xml' href='http://szmyoung.blogspot.com/feeds/7759515001525358785/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://szmyoung.blogspot.com/2023/11/blog-post.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23721639/posts/default/7759515001525358785'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23721639/posts/default/7759515001525358785'/><link rel='alternate' type='text/html' href='http://szmyoung.blogspot.com/2023/11/blog-post.html' title='얼굴 이미지로 메타휴먼 생성하기'/><author><name>Sean Myoung</name><uri>http://www.blogger.com/profile/16105280024115881940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23721639.post-7547565069886280990</id><published>2023-08-14T21:45:00.002+09:00</published><updated>2023-08-14T22:03:35.444+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Chrome"/><category scheme="http://www.blogger.com/atom/ns#" term="Search Results"/><category scheme="http://www.blogger.com/atom/ns#" term="Side Panel"/><category scheme="http://www.blogger.com/atom/ns#" term="검색 결과"/><category scheme="http://www.blogger.com/atom/ns#" term="측면 패널"/><category scheme="http://www.blogger.com/atom/ns#" term="크롬"/><title type='text'>크롬에서 마우스 우클릭 검색 결과가 탭에 표시되는 동작 수정하기</title><content type='html'>최근 크롬 업데이트로 마우스 우클릭 검색의 결과가 탭 형태로 창 우측(공식 명칭은 측면 패널이라는 것 같습니다)에 표시되도록 변경되었는데, 이거 너무 불편합니다.
&lt;br/&gt;&lt;br/&gt;
이전처럼 검색결과가 새탭에서 표시되도록 수정하는 방법을 찾아서 기록 목적으로 남겨둡니다.
&lt;br/&gt;&lt;br/&gt;
1. 주소창에서 크롬 설정으로 들어감
&lt;blockquote&gt;chrome://flags/&lt;/blockquote&gt;
2. Search flags 검색창에 csc 입력
&lt;br/&gt;&lt;br/&gt;
3. Disabled로 변경하여 csc 기능을 끔
&lt;br/&gt;&lt;br/&gt;
csc가 무엇의 약자인지 모르겠는데, 왜 이런 불편한 기능을 기본값으로 변경한건지 이해가 안 가네요.

</content><link rel='replies' type='application/atom+xml' href='http://szmyoung.blogspot.com/feeds/7547565069886280990/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://szmyoung.blogspot.com/2023/08/blog-post.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23721639/posts/default/7547565069886280990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23721639/posts/default/7547565069886280990'/><link rel='alternate' type='text/html' href='http://szmyoung.blogspot.com/2023/08/blog-post.html' title='크롬에서 마우스 우클릭 검색 결과가 탭에 표시되는 동작 수정하기'/><author><name>Sean Myoung</name><uri>http://www.blogger.com/profile/16105280024115881940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23721639.post-4275914154259119853</id><published>2023-07-19T21:45:00.003+09:00</published><updated>2023-07-20T14:59:00.500+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Dead Reckoning"/><category scheme="http://www.blogger.com/atom/ns#" term="Mission: Impossible"/><category scheme="http://www.blogger.com/atom/ns#" term="Part 1"/><category scheme="http://www.blogger.com/atom/ns#" term="감상"/><category scheme="http://www.blogger.com/atom/ns#" term="영화"/><category scheme="http://www.blogger.com/atom/ns#" term="잡담"/><title type='text'>Mission: Impossible - Dead Reckoning Part 1 (2023)</title><content type='html'>미션 임파서블 데드 레커닝 파트 1을 봤습니다. 며칠 전에 봤지만 강스포를 담아 이제야 소감을 적어보네요.
&lt;br/&gt;&lt;br/&gt;
이 영화에서 가장 좋았던 점은 관객의 기대를 배신하는 이야기 전개에 있습니다. 특히 예고편을 적극 활용한 게 눈에 띄는데, 예고편에서 이야기에 대한 기대를 특정 방향으로 몰아간 후 정작 본편에서는 모든 부분에서 정반대로 나갔더군요.
여러 종류의 예고편을 골고루 챙겨 보고 기대를 많이 갖고 극장을 찾았던 사람일수록 재미있게 봤을 가능성이 높지 않을까 생각이 들어요. 소위 말하는 예고편 낚시, 혹은 마술에서 말하는 미스디렉션을 적극 활용했다는 느낌이더군요.
&lt;br/&gt;최근 헐리웃 액션 블럭버스터들이 다 그렇지만 영화가 엄청 빠르게 달려요. 군더더기 없이 액션-대화로 스토리 전개-액션-대화로 스토리 전개-액션의 패턴입니다.
꽤 오래된 시리즈라 가능한, 전작의 요소들을 뒤틀거나 재배치한 부분이 많아서 바쁜 액션씬의 와중에도 소소하게 재미있는 장면들이 많았던 점도 좋았어요.
&lt;br/&gt;파트 1이지만 기승전결을 모두 갖추고 있어서 영화가 깔끔하게 끝납니다. 1편의 미션이 성공했고 2편에서 뭘 할지 뚜렷하게 제시했기 때문에 2부작이지만 2편이 나올 때까지 찜찜한 심정으로 기다릴 필요가 없을 것 같습니다.
&lt;br/&gt;&lt;br/&gt;
잘 안된 점은 일사 파우스트(레베카 페르구손)를 다루는 방식, 배우 연기 같은 것들이에요.
전작에서도 그런 면이 있었지만, 이번 작에서 일사는 확연히 죽음을 향해 나아 가는 것 같은 캐릭터가 됐습니다.
주요 인물들이 모이는 클럽에서의 파티 장면에서 소파에 앉아 있는 일사를 비추는 장면이 있는데 저는 이 장면에서 상당한 위화감을 느꼈어요. 나중에 생각해 보니 연기(혹은 연기 지도)가 나빴다는 생각이 듭니다.
다른 인물들이 각자의 방식으로 긴장감을 표현하는데 혼자 자기 집 거실 소파에 앉아 있듯 편안한 미소를 띠고 있더군요. 얼굴에 미소를 띠더라도 다른 방식으로 긴장감을 표현할 수도 있는데 그런 게 하나도 안 느껴져서 되게 이상한 장면이었습니다.
배우가 장면에서 겉돈다고 할까요. 그 장면을 보면서 이번 편에서 죽으려나 싶었는데 정말 금방 죽더군요. 그 후 베니스에서 일사가 가브리엘(에사이 모랄레스)에게 죽음을 맞게 되는데, 이 장면도 어색했어요. 배경의 공간이나 상황이 연극적이라 다른 장면들과의 이질감이 컸습니다.
&lt;br/&gt;영화가 일사의 하차를 다루는 방식도 아쉬웠는데, 이야기상 그레이스(헤일리 앳웰)에게 마음의 짐을 지워 위험한 임무를 수락하게 하는 장치가 되었기 때문에 흐름은 매끄러웠다고 볼 수 있지만, 죽음 이후 이든(톰 크루즈)이 혼자 슬퍼하는 짧은 장면 하나 넣고 지나가는 게 감정선이 살지 않았어요.
이 점은 전작에서 줄리아(미셸 모나한)의 하차를 워낙 정중한 태도로 다뤄서 더 그런 것 같아요. 아내와 동료는 다른 거라고 할 수도 있겠지만요.
&lt;br/&gt;&lt;br/&gt;
그 외에 애매했던 것들도 있습니다. 그레이스의 경우 발암캐인 면이 있긴 하지만 구축된 이야기 안에서는 말이 되는 수준이라 크게 거슬리지는 않았습니다. 배우가 몸매로 유명하지만 내용상 몸매가 부각되는 장면은 전혀 없었네요.
예고편에서 주야장천 보여줬던 스턴트는 실제로 보면 애매했어요. 우린 톰 크루즈가 높은 데서 뛰어내리는 걸 한두 번 본 게 아니잖아요.
제작진도 이 스턴트는 하는게 어렵지 봤을 때 그렇게 엄청나지는 않다는 걸 알았는지 이 스턴트가 얼마나 어려운지를 아예 작중 대사로 설명하는 게 필사적으로 느껴져서 귀엽더군요.
그리고 아무리 톰 크루즈라도 절벽에서 뛰어내려 낙하산을 타고 달리는 열차에 내리는걸 원테이크로 찍는건 불가능했을 거라, 아예 장면을 나누고 열차에 뛰어드는 부분을 떼어내서 코미디로 활용한 건 좋은 아이디어였다는 생각이 들었어요.
&lt;br/&gt;&lt;br/&gt;
전체적으로 재미있게 보긴 했습니다만, 이번 작은 크리스토퍼 맥쿼리가 감독한 3번째 미션 임파서블 영화인데, 본인이 감독한 전작 두 편보다는 좀 못한 감이 있긴 합니다.</content><link rel='replies' type='application/atom+xml' href='http://szmyoung.blogspot.com/feeds/4275914154259119853/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://szmyoung.blogspot.com/2023/07/mission-impossible-dead-reckoning-part.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23721639/posts/default/4275914154259119853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23721639/posts/default/4275914154259119853'/><link rel='alternate' type='text/html' href='http://szmyoung.blogspot.com/2023/07/mission-impossible-dead-reckoning-part.html' title='Mission: Impossible - Dead Reckoning Part 1 (2023)'/><author><name>Sean Myoung</name><uri>http://www.blogger.com/profile/16105280024115881940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23721639.post-8109836944183536756</id><published>2023-06-05T13:30:00.001+09:00</published><updated>2023-06-05T13:35:40.046+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Ghosted"/><category scheme="http://www.blogger.com/atom/ns#" term="감상"/><category scheme="http://www.blogger.com/atom/ns#" term="고스팅"/><category scheme="http://www.blogger.com/atom/ns#" term="영화"/><category scheme="http://www.blogger.com/atom/ns#" term="잡담"/><title type='text'>Ghosted (2023)</title><content type='html'>아나 데 아르마스, 크리스 에반스 주연의 넷플릭스 영화입니다. 프롤로그 부분은 로맨틱 코미디로 시작했다가 본편은 액션으로 바뀌는 구조를 취하고 있어요.
이 영화의 문제는 초반의 로맨틱 코미디 이후의 전개가 납득이 가지 않는다는 점입니다.
아나 데 아르마스와 크리스 에반스가 한 눈에 반해 연애를 한다는건 그림으로 보나 이야기로 보나 전혀 어색할 게 없지만, 이후 전개에서 크리스 에반스가 맡은 배역의 캐릭터는 누가 봐도 집착이 심하고 별로 좋지 않은 남자입니다.
그리고 이 지나친 집착이라는 잘못을 상쇄하기 위해, 혹은 사랑으로 포장하기 위해 이 영화의 각본가들이 사용한 무리수가 굉장히 거슬리거든요.
&lt;br/&gt;&lt;br/&gt;
구체적으로, 중간에 이 문제를 두고 두 사람이 정면으로 의견 충돌을 일으키는 대목이 있는데, 이 대화의 결론이 무려 &#39;너도 잘못했잖아&#39;입니다. 이건 전혀 납득이 가지 않는 이야기에요.
어쨌든 대충 둘 다 잘못한 걸로 퉁치고 액션으로 사태를 해결하는데, 액션은 나름 괜찮습니다. 뭔가 주인공들의 감정선이나 동기 같은게 이상하긴 하지만 액션이 괜찮으니 그럭저럭 볼만한 수준으로 마무리가 되는 모양새를 갖추죠.
전체적으로 주인공들의 대화가 보는 이들에게 내면의 동기를 설득하지 못하는 문제가 있다보니 잘생긴 주인공들이 괜찮은 액션을 선보이고 있음에도 어떤 위화감이 듭니다. 이야기의 맥락을 무시하고 액션만으로 즐길 수 있다면 볼만한 영화일지도 모르겠네요.
</content><link rel='replies' type='application/atom+xml' href='http://szmyoung.blogspot.com/feeds/8109836944183536756/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://szmyoung.blogspot.com/2023/06/ghosted-2023.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23721639/posts/default/8109836944183536756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23721639/posts/default/8109836944183536756'/><link rel='alternate' type='text/html' href='http://szmyoung.blogspot.com/2023/06/ghosted-2023.html' title='Ghosted (2023)'/><author><name>Sean Myoung</name><uri>http://www.blogger.com/profile/16105280024115881940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23721639.post-2395159591743787670</id><published>2023-06-02T14:30:00.000+09:00</published><updated>2023-06-02T14:54:55.607+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Dungeons &amp; Dragons"/><category scheme="http://www.blogger.com/atom/ns#" term="Honor Among Thieves"/><category scheme="http://www.blogger.com/atom/ns#" term="감상"/><category scheme="http://www.blogger.com/atom/ns#" term="영화"/><category scheme="http://www.blogger.com/atom/ns#" term="잡담"/><title type='text'>Dungeons &amp; Dragons: Honor Among Thieves (2023)</title><content type='html'>영화가 재미없지는 않은데 그렇다고 확 재미있지도 않습니다. 등장인물들의 감정선을 보면 처해있는 상황에 이입해 있다기 보다는 한발자국 물러나 메타적인 농담을 하는 인상을 주기도 하고요.
기승전결이 뚜렷한 이야기 전개 끝에 깔끔한 마무리를 보여주기 때문에 다 보고 나면 속편이나 세계관에 대한 기대감이 차오르는 대신 그냥 가볍게 즐기고 끝났다는 느낌을 받게 되는데, 이 정도의 즐거움을 주는 유희꺼리는 다른데서도 얼마든지 찾을 수 있거든요. 거슬리는 곳 없이 매끈하게 잘 만든 영화이긴 한데 기억에 남지도 않습니다.
</content><link rel='replies' type='application/atom+xml' href='http://szmyoung.blogspot.com/feeds/2395159591743787670/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://szmyoung.blogspot.com/2023/06/dungeons-dragons-honor-among-thieves.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23721639/posts/default/2395159591743787670'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23721639/posts/default/2395159591743787670'/><link rel='alternate' type='text/html' href='http://szmyoung.blogspot.com/2023/06/dungeons-dragons-honor-among-thieves.html' title='Dungeons &amp; Dragons: Honor Among Thieves (2023)'/><author><name>Sean Myoung</name><uri>http://www.blogger.com/profile/16105280024115881940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23721639.post-6661911244983472432</id><published>2023-05-30T16:00:00.001+09:00</published><updated>2023-05-30T16:00:00.134+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="John Wick"/><category scheme="http://www.blogger.com/atom/ns#" term="감상"/><category scheme="http://www.blogger.com/atom/ns#" term="영화"/><category scheme="http://www.blogger.com/atom/ns#" term="잡담"/><category scheme="http://www.blogger.com/atom/ns#" term="존윅"/><title type='text'>John Wick 4 (2023)</title><content type='html'>액션 연출은 전작보다 나아졌는데, 주연 배우가 나이가 든다는게 느껴집니다. 전반적으로 액션 동작이 힘에 부친다는 인상을 줘요. 설정과 이야기를 단순화시키고 액션 연출을 개선하는 등 3편의 문제점이 대부분 좋은 방향으로 수정되었습니다.
하지만 전체적으로 영화가 길어요. 전작들도 그랬듯 후반부에 좋은 연출이나 장면들이 몰려있어서 영화가 끝날때는 만족스러운 감상을 갖게 되지만 중반부에는 비슷한 방식의 액션이 계속 이어져서 다소 지루해지는 부분이 있습니다.
이번 편도 1편 만큼의 울림을 주지는 못했다는 면에서 아쉽기는 하지만 존 윅과의 여정이 끝나는걸 보지 않고 지나칠 수는 없지 않나 싶어요.</content><link rel='replies' type='application/atom+xml' href='http://szmyoung.blogspot.com/feeds/6661911244983472432/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://szmyoung.blogspot.com/2023/05/john-wick-4-2023.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23721639/posts/default/6661911244983472432'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23721639/posts/default/6661911244983472432'/><link rel='alternate' type='text/html' href='http://szmyoung.blogspot.com/2023/05/john-wick-4-2023.html' title='John Wick 4 (2023)'/><author><name>Sean Myoung</name><uri>http://www.blogger.com/profile/16105280024115881940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23721639.post-4116021591132278007</id><published>2023-03-29T17:00:00.001+09:00</published><updated>2023-03-29T17:13:09.946+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Tears of the Kingdom"/><category scheme="http://www.blogger.com/atom/ns#" term="The Legend of Zelda"/><category scheme="http://www.blogger.com/atom/ns#" term="게임"/><category scheme="http://www.blogger.com/atom/ns#" term="왕국의 눈물"/><category scheme="http://www.blogger.com/atom/ns#" term="잡담"/><category scheme="http://www.blogger.com/atom/ns#" term="젤다의 전설"/><title type='text'>젤다의 전설 왕국의 눈물 트레일러를 보고 든 잡상</title><content type='html'>이전에 &lt;a href=&quot;https://szmyoung.blogspot.com/2017/10/the-legend-of-zelda-breath-of-wild-ns.html&quot; target=&quot;_blank&quot;&gt;야숨에 대한 포스트&lt;/a&gt;에서도 언급했지만, 개인적으로 야숨은 잘 만든 게임이지만 오픈월드 장르에 어떤 혁신을 가져왔다고는 생각하지 않습니다.
야숨에서 새롭게 도입했던 요소들 중에 현시점에서 평가했을때 가장 혁신적이라고 할만한 요소는 물리 기반의 퍼즐 및 전투 시스템인데, 이걸 기술적으로 가능하게 하기 위해 야숨 제작진은 월드의 개체 밀도를 크게 낮췄죠.
실사 기반인 서구권 오픈월드 게임에서는 월드의 밀도를 물리 시뮬레이션이 돌아갈 정도로 낮출 수는 없었기 때문에 이건 알면서도 따라할 수 없는 요소였고,
결국 야숨이 오픈월드 장르에 혁신을 가져오기 보다는 고립된 하나의 시도로 끝나는 결과를 가져왔다고 생각합니다.
&lt;br/&gt;&lt;br/&gt;

왕국의 눈물 트레일러를 보니 이번 작은 전작보다도 더 고립된 게임이 될 것으로 보입니다.
결국 야숨의 엔진을 그대로 사용해서 장비와 아이템을 조합하는 기능을 추가했다고 보이는데, 이건 기존 오픈월드 게임의 무기 업그레이드에 물리 시뮬레이션을 결합한 아이디어입니다.
분명히 재미는 있겠지만 근본적인 혁신은 아니라고 보여요. 또 야숨류가 대세가 될 수 없었던 동일한 기술적 한계를 그대로 갖고 있기 때문에 이번에도 고립된 하나의 시도로만 남을 것으로 보입니다.
</content><link rel='replies' type='application/atom+xml' href='http://szmyoung.blogspot.com/feeds/4116021591132278007/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://szmyoung.blogspot.com/2023/03/blog-post.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23721639/posts/default/4116021591132278007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23721639/posts/default/4116021591132278007'/><link rel='alternate' type='text/html' href='http://szmyoung.blogspot.com/2023/03/blog-post.html' title='젤다의 전설 왕국의 눈물 트레일러를 보고 든 잡상'/><author><name>Sean Myoung</name><uri>http://www.blogger.com/profile/16105280024115881940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23721639.post-6374314967893186094</id><published>2023-02-16T15:00:00.004+09:00</published><updated>2023-02-24T18:01:31.715+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AMD"/><category scheme="http://www.blogger.com/atom/ns#" term="GPU"/><category scheme="http://www.blogger.com/atom/ns#" term="Stable Diffusion"/><category scheme="http://www.blogger.com/atom/ns#" term="설치"/><category scheme="http://www.blogger.com/atom/ns#" term="잡담"/><title type='text'>AMD GPU에서 Stable Diffusion 설정하기</title><content type='html'>
&lt;a href=&quot;https://szmyoung.blogspot.com/2023/02/stable-diffusion.html&quot; target=&quot;_blank&quot;&gt;지난번 글&lt;/a&gt;에서 Stable Diffusion 설치에 대한 링크를 모아뒀는데, 해당 내용은 연산을 위해 엔비디아 CUDA를 이용하도록 구성된 것이므로 AMD GPU를 사용하는 PC에서는 동작하지 않습니다. 집에서 사용하는 PC가 5600X/RX6600인 라라랜드 조합이라 Stable Diffusion 설치 과정에서 번거로웠던 내용을 약간 정리합니다.
&lt;br/&gt;&lt;br/&gt;
가장 쉬운 방법은 AMD에 최적화된 배포본인 &lt;a href=&quot;https://github.com/nod-ai/SHARK&quot; target=&quot;_blank&quot;&gt;nod-ai의 SHARK&lt;/a&gt;를 쓰는 것인데, 이쪽은 아직 확장 프로그램이 따라오는게 늦은 상태입니다. 그냥 편하게 AMD GPU에서 이미지 생성만 해보고 싶으면 SHARK를 쓰고, 확장을 해보고 싶으면 다음 내용을 참고해서 고난의 여정;;에 참여하면 됩니다.
&lt;br/&gt;&lt;br/&gt;
AMD GPU 환경에서 Stable Diffusion을 이용하려면 CUDA를 대체하는 MS의 기술인 DirectML을 사용해야 합니다. DirectML을 사용하면 CUDA보다 느리다고 알려져있긴 한데, 아예 안 되는 것보다는 나은 상황이므로 AMD GPU를 쓰는 죄(;;)로 느릴 뿐 아니라 설치가 번거롭기까지 하지만 DirectML 기반으로 환경을 구축해 보겠습니다.
&lt;br/&gt;&lt;br/&gt;
큰 흐름은 이전 글에 링크된 CUDA 버전을 다루는 문서와 일치하지만 세부적으로 약간 차이가 있습니다.&lt;br/&gt;
&lt;a href=&quot;https://skyksit.com/useful/install-stable-diffusion-for-windows/&quot; target=&quot;_blank&quot;&gt;https://skyksit.com/useful/install-stable-diffusion-for-windows/&lt;/a&gt;
&lt;br/&gt;&lt;br/&gt;
DirectML 버전의 설치 방법은 다음 문서에 나와 있습니다.&lt;br/&gt;
&lt;a href=&quot;https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Install-and-Run-on-AMD-GPUs&quot; target=&quot;_blank&quot;&gt;https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Install-and-Run-on-AMD-GPUs&lt;/a&gt;
&lt;br/&gt;&lt;br/&gt;
- 필수 설치&lt;br/&gt;
1. Python 설치&lt;br/&gt;
2. Git 설치&lt;br/&gt;
&lt;strike&gt;CUDA 설치(불필요)&lt;/strike&gt;&lt;br/&gt;
3. stable-diffusion-webui 다운로드(DirectML 대응)&lt;br/&gt;
4. repositories의 구성요소 다운로드(DirectML 대응)&lt;br/&gt;
5. stable-diffusion Model 파일 다운로드&lt;br/&gt;
6. stable-diffusion-webui 실행(AMD GPU에만 옵션 추가)&lt;br/&gt;
- 옵션&lt;br/&gt;
7. waifu-diffusion 파일 다운로드&lt;br/&gt;
8. GFPGAN 파일 다운로드&lt;br/&gt;
&lt;br/&gt;
1. Python 설치&lt;br/&gt;
명령 프롬프트를 열고&lt;br/&gt;
&lt;blockquote&gt;winget install python&lt;/blockquote&gt;
&lt;br/&gt;
2. Git 설치&lt;br/&gt;
&lt;blockquote&gt;winget install git&lt;/blockquote&gt;
&lt;br/&gt;
3. stable-diffusion-webui 다운로드(DirectML 대응)
&lt;br/&gt;
명령프롬프트에서 설치할 경로로 이동한 후&lt;br/&gt;
&lt;blockquote&gt;git clone https://github.com/lshqqytiger/stable-diffusion-webui-directml.git&lt;/blockquote&gt;
&lt;br/&gt;
여기서부터 이전 글에 링크한 문서와 차이가 생기는데, CUDA에 대응하는 원본은 &lt;a href=&quot;https://github.com/AUTOMATIC1111/stable-diffusion-webui&quot; target=&quot;_blank&quot;&gt;https://github.com/AUTOMATIC1111/stable-diffusion-webui&lt;/a&gt;에 있지만, 우리는 DirectML에 대응하도록 수정한 버전을 설치해야 합니다. &lt;a href=&quot;https://github.com/lshqqytiger/stable-diffusion-webui-directml&quot; target=&quot;_blank&quot;&gt;https://github.com/lshqqytiger/stable-diffusion-webui-directml&lt;/a&gt;
&lt;br/&gt;&lt;br/&gt;
4. repositories의 구성요소 다운로드(DirectML 대응)&lt;br/&gt;
명령 프롬프트에서 stable-diffusion-webui-directml/repositories 경로로 이동한 후
&lt;br/&gt;
&lt;blockquote&gt;git clone https://github.com/lshqqytiger/k-diffusion-directml k-diffusion&lt;br/&gt;
git clone https://github.com/lshqqytiger/stablediffusion-directml stable-diffusion-stability-ai
&lt;/blockquote&gt;&lt;br/&gt;
5. stable-diffusion Model 파일 다운로드
&lt;br/&gt;&lt;br/&gt;
다음 주소로 이동하여 무료 회원 가입 후 Model을 골라 설치해 봅니다.&lt;br/&gt;
&lt;a href=&quot;https://huggingface.co/models&quot; target=&quot;_blank&quot;&gt;https://huggingface.co/models&lt;/a&gt;&lt;br/&gt;
&lt;br/&gt;다운받을 수 있는 모델 포맷은 .ckpt나 .safetensors 파일인데, .safetensors 파일이 모델 변경 시 속도가 더 빠르다고 알려져 있습니다. 체감적으로는 별 차이를 모르겠네요. 다운 받은 후 models/Stable-diffusion 폴더에 넣어줍니다.&lt;br/&gt;&lt;br/&gt;

6. stable-diffusion-webui 실행(AMD GPU에만 옵션 추가)
&lt;br/&gt;&lt;br/&gt;

webui-user.bat를 열고 다음과 같이 수정합니다.&lt;br/&gt;
&lt;blockquote&gt;set COMMANDLINE_ARGS=--opt-sub-quad-attention --lowvram --no-half-vae&lt;/blockquote&gt;
&lt;br/&gt;저 옵션들은 제 PC에서 몇차례 실행하면서 RX6600에서 필요하다고 확인한 것들인데, 각자의 환경에 따라 더하거나 빠질 수 있습니다. 이제 webui-user.bat를 실행하고 기다리면 오류가 없을 경우 명령 프롬프트에 접속할 수 있는 웹주소가 나타납니다.
</content><link rel='replies' type='application/atom+xml' href='http://szmyoung.blogspot.com/feeds/6374314967893186094/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://szmyoung.blogspot.com/2023/02/amd-gpu-stable-diffusion.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23721639/posts/default/6374314967893186094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23721639/posts/default/6374314967893186094'/><link rel='alternate' type='text/html' href='http://szmyoung.blogspot.com/2023/02/amd-gpu-stable-diffusion.html' title='AMD GPU에서 Stable Diffusion 설정하기'/><author><name>Sean Myoung</name><uri>http://www.blogger.com/profile/16105280024115881940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23721639.post-7423485979727340071</id><published>2023-02-15T15:30:00.002+09:00</published><updated>2023-02-15T16:43:09.618+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Stable Diffusion"/><category scheme="http://www.blogger.com/atom/ns#" term="링크"/><category scheme="http://www.blogger.com/atom/ns#" term="설치"/><category scheme="http://www.blogger.com/atom/ns#" term="잡담"/><title type='text'>Stable Diffusion 관련 링크 정리</title><content type='html'>요즘 개인적으로 갖고 놀고 있는 머신러닝 기반의 이미지 생성 도구인 Stable Diffusion을 깔아서 사용하는 방법에 대하여 간략히 링크를 정리합니다.
&lt;br/&gt;&lt;br/&gt;
1. 로컬 PC에 &lt;a href=&quot;https://skyksit.com/useful/install-stable-diffusion-for-windows/&quot; target=&quot;_blank&quot;&gt;Stable Diffusion을 설치&lt;/a&gt;해 봅니다.
&lt;br/&gt;&lt;br/&gt;

2. 여기에 학습이 된 상태인 Model을 넣어줘야 다양한 화풍의 이미지를 생성할 수 있습니다. &lt;a href=&quot;https://huggingface.co/models&quot; target=&quot;_blank&quot;&gt;Model을 설치&lt;/a&gt;해 봅니다. (무료 가입이 필요함)

&lt;br/&gt;&lt;br/&gt;

3. 이렇게 해서 프롬프트에 키워드 몇 개를 넣어 처음으로 이미지를 생성해보면 품질이나 디테일이 매우 떨어짐을 느낄 수 있습니다. 프롬프트를 잘 넣어줘야 이미지 품질을 올릴 수 있는데, 남들이 어떤 프롬프트를 사용하는지 확인해서 필요한걸 가져다 쓰며 품질을 올려봅니다.&lt;br/&gt;&lt;br/&gt;
&lt;a href=&quot;https://www.ptsearch.info/home/&quot; target=&quot;_blank&quot;&gt;https://www.ptsearch.info/home/&lt;/a&gt;&lt;br/&gt;
&lt;a href=&quot;https://lexica.art/&quot; target=&quot;_blank&quot;&gt;https://lexica.art/&lt;/a&gt;&lt;br/&gt;
&lt;a href=&quot;https://prompthero.com/&quot; target=&quot;_blank&quot;&gt;https://prompthero.com/&lt;/a&gt;&lt;br/&gt;
</content><link rel='replies' type='application/atom+xml' href='http://szmyoung.blogspot.com/feeds/7423485979727340071/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://szmyoung.blogspot.com/2023/02/stable-diffusion.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23721639/posts/default/7423485979727340071'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23721639/posts/default/7423485979727340071'/><link rel='alternate' type='text/html' href='http://szmyoung.blogspot.com/2023/02/stable-diffusion.html' title='Stable Diffusion 관련 링크 정리'/><author><name>Sean Myoung</name><uri>http://www.blogger.com/profile/16105280024115881940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23721639.post-914649725357912877</id><published>2023-01-30T16:15:00.003+09:00</published><updated>2023-07-19T21:45:25.856+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Horizon Forbidden West"/><category scheme="http://www.blogger.com/atom/ns#" term="PS5"/><category scheme="http://www.blogger.com/atom/ns#" term="감상"/><category scheme="http://www.blogger.com/atom/ns#" term="게임"/><category scheme="http://www.blogger.com/atom/ns#" term="잡담"/><category scheme="http://www.blogger.com/atom/ns#" term="호라이즌 포비든 웨스트"/><title type='text'>Horizon Forbidden West (PS5)</title><content type='html'>전작인 &lt;a href=&quot;https://szmyoung.blogspot.com/2019/04/horizon-zero-dawn-ps4.html&quot; target=&quot;_blank&quot;&gt;호라이즌 제로 던&lt;/a&gt;의 리뷰에서 언급했듯이, 개인적으로 그 후속작인 호라이즌 포비든 웨스트에 스토리 면으로는 큰 기대가 없었습니다. 일단 전작의 엔딩에서 남긴 떡밥이 흥미롭지 않았던게 컸고, 전작에서 사건이 워낙 깔끔하게 일단락 지어졌기 때문에 후속작이 새롭게 탐구할만한 여지가 별로 없어 보였죠. 그런 면에서 보자면 이번 작인 호라이즌 포비든 웨스트도 전작과 마찬가지 측면에서 의외의 장점을 갖습니다. 플레이 전에 기대했던 것보다 스토리가 엄청 좋아요. 스포일러를 피해 이야기하자면, 작은 이야기에서 가지를 쳐서 예상치 못한 큰 이야기로 자연스럽게 넘어갈 수 있는 전개가 감탄스러워요. 주인공의 성장 서사라는 면에서도 더 다룰게 별로 없어 보였던 것에 비해 확실히 진전된 면을 보이고요. 전작의 스토리로부터 출발해야 하는 제약을 갖는 후속작의 한계를 감안하면 최고로 잘 나온 속편 시나리오라고 생각합니다.

&lt;br /&gt;
&lt;br /&gt;


&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUSk_QOcWB3rK3SExAUPSsGZFCnMtMcmnPgYYkzS4dIHFXfy8EgoOUUGE1VloNUVSGcf6JXHvDgydg5TYcJ5PcOb5yOVtxEaFDiDe3ZiFygz60ce2pa8KE5e6H2eel-HRhmtbVnxw9J7ebcwekcMZkY6iwv32Adwk7QMH4ggZ609sTMsTLJfc/s3840/%ED%98%B8%EB%9D%BC%EC%9D%B4%EC%A6%8C%20%ED%8F%AC%EB%B9%84%EB%93%A0%20%EC%9B%A8%EC%8A%A4%ED%8A%B8_20230106221515.jpg&quot; style=&quot;display: block; padding: 1em 0px; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;2160&quot; data-original-width=&quot;3840&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUSk_QOcWB3rK3SExAUPSsGZFCnMtMcmnPgYYkzS4dIHFXfy8EgoOUUGE1VloNUVSGcf6JXHvDgydg5TYcJ5PcOb5yOVtxEaFDiDe3ZiFygz60ce2pa8KE5e6H2eel-HRhmtbVnxw9J7ebcwekcMZkY6iwv32Adwk7QMH4ggZ609sTMsTLJfc/w640-h358/%ED%98%B8%EB%9D%BC%EC%9D%B4%EC%A6%8C%20%ED%8F%AC%EB%B9%84%EB%93%A0%20%EC%9B%A8%EC%8A%A4%ED%8A%B8_20230106221515.jpg&quot; width=&quot;440&quot; /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;br /&gt;
&lt;br /&gt;

그래픽 면에서도 PS5로 나온 AAA 게임 중에 최고가 아닐까 싶어요. 4K 화면 전체에 디테일이 꽉 차 있습니다. 전작과 마찬가지로 이펙트가 아쉬운 부분이 아주 간혹 눈에 띠기는 하지만 그 외에는 흠잡을 데가 없어 보입니다. 모든 면에서 전작으로부터 업그레이드 된 느낌을 받을 수 있어요.

&lt;br /&gt;&lt;br /&gt;

&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgX4VzBhdewN6kHaVU-O1hoRyUAmT1MSXWibNKMQy9LXMjx1Ib4igUYkb_PBi3MUXg7Azja5lE0l_te7F-IIpK4HsamSkMvoqUpGgzKYOB6ZiCe2tWLpvfPYxCuCRhaAEMTgXGiJQSqto2oP8NvsvMCCeb36Y8GsUmVJH8EiaaSHJvTNWemMdQ/s3840/%ED%98%B8%EB%9D%BC%EC%9D%B4%EC%A6%8C%20%ED%8F%AC%EB%B9%84%EB%93%A0%20%EC%9B%A8%EC%8A%A4%ED%8A%B8_20230107185959.jpg&quot; style=&quot;display: block; padding: 1em 0px; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;2160&quot; data-original-width=&quot;3840&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgX4VzBhdewN6kHaVU-O1hoRyUAmT1MSXWibNKMQy9LXMjx1Ib4igUYkb_PBi3MUXg7Azja5lE0l_te7F-IIpK4HsamSkMvoqUpGgzKYOB6ZiCe2tWLpvfPYxCuCRhaAEMTgXGiJQSqto2oP8NvsvMCCeb36Y8GsUmVJH8EiaaSHJvTNWemMdQ/w640-h358/%ED%98%B8%EB%9D%BC%EC%9D%B4%EC%A6%8C%20%ED%8F%AC%EB%B9%84%EB%93%A0%20%EC%9B%A8%EC%8A%A4%ED%8A%B8_20230107185959.jpg&quot; width=&quot;440&quot; /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;br /&gt;&lt;br /&gt;

다른 오픈월드 게임에도 흔히 있는 단조로운 미니게임 요소들이 거의 비슷하게 들어간 부분들이 있는데, 저는 그냥 플레이 안 하고 스킵했습니다. 이런 유사 컨텐츠는 단점이라면 단점일 수도 있는 부분이긴 한데, 이런 것들을 스킵해도 게임 진행에 지장이 없게 만들어 둔 배려가 같이 들어가 있어서 큰 단점은 아니지 않았나 싶어요.

&lt;br /&gt;&lt;br /&gt;

&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgujflA4d1kgw2fdxpCbI1nZHsj8L2HUTdwENt_EF-3Kn3NJnFXme8-Y53w8ueOGSJgfKMJ-9ourPBtCUTeJ89qmUzIouwO90z0g8YDVv1yni_8YVnYvn3HJR4bu6A0Iq7oKv5NboIjvA8gd9gS0-YiQecftNbB37-Zimlj3f97qPpejMsGP8k/s3840/%ED%98%B8%EB%9D%BC%EC%9D%B4%EC%A6%8C%20%ED%8F%AC%EB%B9%84%EB%93%A0%20%EC%9B%A8%EC%8A%A4%ED%8A%B8_20230109222817.jpg&quot; style=&quot;display: block; padding: 1em 0px; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;2160&quot; data-original-width=&quot;3840&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgujflA4d1kgw2fdxpCbI1nZHsj8L2HUTdwENt_EF-3Kn3NJnFXme8-Y53w8ueOGSJgfKMJ-9ourPBtCUTeJ89qmUzIouwO90z0g8YDVv1yni_8YVnYvn3HJR4bu6A0Iq7oKv5NboIjvA8gd9gS0-YiQecftNbB37-Zimlj3f97qPpejMsGP8k/w640-h358/%ED%98%B8%EB%9D%BC%EC%9D%B4%EC%A6%8C%20%ED%8F%AC%EB%B9%84%EB%93%A0%20%EC%9B%A8%EC%8A%A4%ED%8A%B8_20230109222817.jpg&quot; width=&quot;440&quot; /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;br /&gt;&lt;br /&gt;


트로피 달성률은 84%에서 마무리했는데 남은 요소들은 그다지 플레이하고 싶은 생각이 안 들어서 플래티넘은 노리지 않으려고 해요. 그래도 게임 자체는 정말 잘 나왔다고 말하고 싶네요.


&lt;br /&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLMmW5N0SvYhAcpY0KZYWRpyUMxC7ilYG8KURUpftYpt-kWrjPV3aVtjAmXXH4ysHSjfK6Gv8eQWNXJ_4yS8-GTZvshUuah68ojCeLT256Qvsq4mHqX9LSDxYuXq8pc8eZLpsC0fGJhmhBc8Vka-rMVuKq-mYEoZVgeTDCQG4QAwXIt1qkGog/s3840/%ED%98%B8%EB%9D%BC%EC%9D%B4%EC%A6%8C%20%ED%8F%AC%EB%B9%84%EB%93%A0%20%EC%9B%A8%EC%8A%A4%ED%8A%B8_20230125225910.jpg&quot; style=&quot;display: block; padding: 1em 0px; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;2160&quot; data-original-width=&quot;3840&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLMmW5N0SvYhAcpY0KZYWRpyUMxC7ilYG8KURUpftYpt-kWrjPV3aVtjAmXXH4ysHSjfK6Gv8eQWNXJ_4yS8-GTZvshUuah68ojCeLT256Qvsq4mHqX9LSDxYuXq8pc8eZLpsC0fGJhmhBc8Vka-rMVuKq-mYEoZVgeTDCQG4QAwXIt1qkGog/w640-h358/%ED%98%B8%EB%9D%BC%EC%9D%B4%EC%A6%8C%20%ED%8F%AC%EB%B9%84%EB%93%A0%20%EC%9B%A8%EC%8A%A4%ED%8A%B8_20230125225910.jpg&quot; width=&quot;440&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://szmyoung.blogspot.com/feeds/914649725357912877/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://szmyoung.blogspot.com/2023/01/horizon-forbidden-west-ps5.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23721639/posts/default/914649725357912877'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23721639/posts/default/914649725357912877'/><link rel='alternate' type='text/html' href='http://szmyoung.blogspot.com/2023/01/horizon-forbidden-west-ps5.html' title='Horizon Forbidden West (PS5)'/><author><name>Sean Myoung</name><uri>http://www.blogger.com/profile/16105280024115881940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUSk_QOcWB3rK3SExAUPSsGZFCnMtMcmnPgYYkzS4dIHFXfy8EgoOUUGE1VloNUVSGcf6JXHvDgydg5TYcJ5PcOb5yOVtxEaFDiDe3ZiFygz60ce2pa8KE5e6H2eel-HRhmtbVnxw9J7ebcwekcMZkY6iwv32Adwk7QMH4ggZ609sTMsTLJfc/s72-w640-h358-c/%ED%98%B8%EB%9D%BC%EC%9D%B4%EC%A6%8C%20%ED%8F%AC%EB%B9%84%EB%93%A0%20%EC%9B%A8%EC%8A%A4%ED%8A%B8_20230106221515.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23721639.post-6375171384269504923</id><published>2022-12-14T19:00:00.002+09:00</published><updated>2022-12-14T19:00:00.219+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Addams Family"/><category scheme="http://www.blogger.com/atom/ns#" term="Wednesday"/><category scheme="http://www.blogger.com/atom/ns#" term="감상"/><category scheme="http://www.blogger.com/atom/ns#" term="미드"/><category scheme="http://www.blogger.com/atom/ns#" term="잡담"/><title type='text'>Wednesday Season 1 (2022)</title><content type='html'>아담스 패밀리 시리즈의 스핀오프로, 아담스가의 장녀인 웬즈데이를 주인공으로 하는 학원 미스터리물입니다. 인물 조형이 잘 되었고 중간에 지루한 부분이 없어요. 강추합니다.</content><link rel='replies' type='application/atom+xml' href='http://szmyoung.blogspot.com/feeds/6375171384269504923/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://szmyoung.blogspot.com/2022/12/wednesday-season-1-2022.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23721639/posts/default/6375171384269504923'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23721639/posts/default/6375171384269504923'/><link rel='alternate' type='text/html' href='http://szmyoung.blogspot.com/2022/12/wednesday-season-1-2022.html' title='Wednesday Season 1 (2022)'/><author><name>Sean Myoung</name><uri>http://www.blogger.com/profile/16105280024115881940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23721639.post-3319660803293410914</id><published>2022-12-06T17:32:00.002+09:00</published><updated>2022-12-10T23:37:20.134+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="archive"/><category scheme="http://www.blogger.com/atom/ns#" term="batch"/><category scheme="http://www.blogger.com/atom/ns#" term="folder"/><category scheme="http://www.blogger.com/atom/ns#" term="timestamp"/><category scheme="http://www.blogger.com/atom/ns#" term="잡동사니"/><title type='text'>타임스탬프 넣고 폴더를 압축하는 배치 스크립트</title><content type='html'>집에서 간단한 작업을 하는데 버전 컨트롤 시스템을 쓰기는 싫고 작업 중간에 백업은 해야 할 상황. 타임스탬프를 넣고 폴더를 압축하는 스크립트를 찾아봤는데, 타임스탬프 양식이 맘에 안들어 약간 고쳤다.

&lt;blockquote&gt;&lt;p&gt;@echo off&lt;br/&gt;
for /f &quot;tokens=1,2,3 delims=/- &quot; %%x in (&quot;%date%&quot;) do set d=%%x_%%y_%%z&lt;br/&gt;
for /f &quot;tokens=1,2 delims=:. &quot; %%x in (&quot;%time%&quot;) do set t=%%x_%%y&lt;br/&gt;
&quot;C:\Program Files\Bandizip\bz.exe&quot; a Test_%d%_%t%.zip &quot;C:\Temp&quot;&lt;br/&gt;
if errorlevel 1 goto ERROR_ZIPPING&lt;br/&gt;
goto DONE&lt;br/&gt;
:ERROR_ZIPPING&lt;br/&gt;
pause&lt;br/&gt;
:DONE&lt;/p&gt;&lt;/blockquote&gt;

이렇게 하면 Test_2022_12_06_17_15.zip 형식으로 떨어짐. 원래는 Powershell로 Windows의 내장 압축 기능을 쓰려고 했는데, 이렇게 하면 압축 속도가 너무 느려서 그냥 깔려있는 반디집을 씀.
</content><link rel='replies' type='application/atom+xml' href='http://szmyoung.blogspot.com/feeds/3319660803293410914/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://szmyoung.blogspot.com/2022/12/blog-post.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23721639/posts/default/3319660803293410914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23721639/posts/default/3319660803293410914'/><link rel='alternate' type='text/html' href='http://szmyoung.blogspot.com/2022/12/blog-post.html' title='타임스탬프 넣고 폴더를 압축하는 배치 스크립트'/><author><name>Sean Myoung</name><uri>http://www.blogger.com/profile/16105280024115881940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23721639.post-7240077993418036203</id><published>2022-11-11T19:30:00.001+09:00</published><updated>2022-11-11T19:52:34.626+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Castle Falls"/><category scheme="http://www.blogger.com/atom/ns#" term="감상"/><category scheme="http://www.blogger.com/atom/ns#" term="돌프 룬드그렌"/><category scheme="http://www.blogger.com/atom/ns#" term="영화"/><category scheme="http://www.blogger.com/atom/ns#" term="잡담"/><category scheme="http://www.blogger.com/atom/ns#" term="캐슬 폴즈"/><title type='text'>Castle Falls (2021)</title><content type='html'>평범한 저예산 액션 영화입니다. 특이한 점이 있다면 왕년의 액션 스타인 돌프 룬드그렌이 감독을 맡았다는 점이죠. 돌프 룬드그렌은 거칠어 보이는 외모와 달리 지적인 사람으로 알려져 있어서(화학공학 석사이고, 박사까지 하려다 영화배우로 데뷔했다고 하죠), 그가 처음으로 감독한 영화가 다른 B급 액션 영화들과 구별되는 점이 있을지 궁금해서 보게 되었습니다.
&lt;br/&gt;&lt;br/&gt;
런닝 타임은 1시간 30분 정도이고 시나리오가 앞뒤는 잘 맞는 편인데 예산 부족이 여실히 드러납니다. 런닝타임을 채우기에도 급급한 모습이 보여요. 액션 장면은 잘 구성된 편이지만 짧아요. 대규모 군중을 동원해야 하는 장면을 얼렁뚱땅 넘긴다거나 하는 모습도 드러나고, 전체적으로 예산이 부족한게 눈에 띕니다. 회상 장면을 길게 보여줄 필요가 없는데 런닝타임을 채우기 위해 늘린 듯한 부분이 나오고, 예산 한계 내에서 힘들어하는게 영화의 흐름에 드러나요. 좀 더 액션 장면을 길게 찍어야 했는데, 그러려면 사전에 설계를 잘 했어야 했으니 액션 연출에 대한 준비가 부족하지 않았나 싶기도 해요. 현실적으로 싸우기는 하는데 그러다보니 액션이 짧아요.
&lt;br/&gt;&lt;br/&gt;
전체적으로 B급 액션 영화로도 추천할만한 작품이 되지 못했다고 봅니다. 초반 빌드업부터 이야기의 앞뒤를 잘 맞추고 액션을 현실적으로 찍은건 좋았지만, 그러다보니 액션 장면이 짧고 뭔가 뽕맛?이 부족해요. 돌프 룬드그렌의 다음 감독 작품을 기대해 봅니다.</content><link rel='replies' type='application/atom+xml' href='http://szmyoung.blogspot.com/feeds/7240077993418036203/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://szmyoung.blogspot.com/2022/11/castle-falls-2021.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23721639/posts/default/7240077993418036203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23721639/posts/default/7240077993418036203'/><link rel='alternate' type='text/html' href='http://szmyoung.blogspot.com/2022/11/castle-falls-2021.html' title='Castle Falls (2021)'/><author><name>Sean Myoung</name><uri>http://www.blogger.com/profile/16105280024115881940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23721639.post-153903151304605397</id><published>2022-11-10T23:45:00.004+09:00</published><updated>2022-11-10T23:50:27.562+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="PC"/><category scheme="http://www.blogger.com/atom/ns#" term="Remastered"/><category scheme="http://www.blogger.com/atom/ns#" term="Saints Row"/><category scheme="http://www.blogger.com/atom/ns#" term="감상"/><category scheme="http://www.blogger.com/atom/ns#" term="게임"/><category scheme="http://www.blogger.com/atom/ns#" term="잡담"/><title type='text'>Saints Row 3 Remastered (PC)</title><content type='html'>에이전트 오브 메이헴을 끝내고 나서 제 에픽 스토어 계정에 세인츠로우 3 리마스터가 있는게 기억나서 해보게 됐습니다. 플레이 한 데스크탑 환경은 Ryzen 5 5600X, RX6600 조합에 높음 옵션으로 4K 해상도에서 45 프레임 정도 나오더군요. 개인적으로 콘솔 게임에 익숙해서 30프레임만 넘으면 게임하는데 큰 지장을 못 느끼는 편이라 이 정도 프레임으로도 옵션 안 낮추고 플레이할 만 하더군요.
&lt;br/&gt;&lt;br/&gt;

&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiovDRjxzjJ9PuOqRv0P60Uk__7Ssu765r9PUsIoUPFfSaPO-efV6US9pQqalBJrl8QOy7o-Hn07rYOzkByO6YAIPP4lqRPvuD3T1WBNLzGKXEYpf53i2gEH3PUGYJyrGj--AxuxnZues2-WsGZ8PYas7779Ahnj4ukh7vCD4WG4oroPLe_C9U/s3840/unknown_2022.10.10-14.28.png&quot; style=&quot;display: block; padding: 1em 0; text-align: center; &quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;440&quot; data-original-height=&quot;2160&quot; data-original-width=&quot;3840&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiovDRjxzjJ9PuOqRv0P60Uk__7Ssu765r9PUsIoUPFfSaPO-efV6US9pQqalBJrl8QOy7o-Hn07rYOzkByO6YAIPP4lqRPvuD3T1WBNLzGKXEYpf53i2gEH3PUGYJyrGj--AxuxnZues2-WsGZ8PYas7779Ahnj4ukh7vCD4WG4oroPLe_C9U/s440/unknown_2022.10.10-14.28.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;


&lt;br/&gt;&lt;br/&gt;
세인츠로우는 4편만 했기 때문에 몰랐는데, 4편이 평가가 안 좋은 이유를 알겠더군요. 게임플레이 측면에서 3편과 4편이 달라진게 없어요. 리마스터링 되면서 그래픽은 다소 좋아졌지만 게임은 4편과 거의 다른게 없습니다. 4편이 좀 더 약을 빤 전개가 나오고 스토리 면에서 완결성이 좀 더 나아지긴 했는데, 출시 순서대로 플레이한 유저라면 3편과의 차이가 너무 적다는데 아쉬움을 느끼지 않을 수 없었을 것 같아요.
&lt;br/&gt;&lt;br/&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0zmxCQ1owlNmfxpm-irgM847xuUh31luf-frPsI_XBJBadihtP5rnvr9nx-jgbCbjOC4dHlvP6jbo7nW_8vY9eL5f14gxcPbtHulvU1_meZgerHH82Mx0H18DpfTxJervG9XZbb_7iQUy881hmqDUmN2FOMeDG9NsVg9xzB06fjW94eHsCjA/s3840/unknown_2022.10.10-15.39.png&quot; style=&quot;display: block; padding: 1em 0; text-align: center; &quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;440&quot; data-original-height=&quot;2160&quot; data-original-width=&quot;3840&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0zmxCQ1owlNmfxpm-irgM847xuUh31luf-frPsI_XBJBadihtP5rnvr9nx-jgbCbjOC4dHlvP6jbo7nW_8vY9eL5f14gxcPbtHulvU1_meZgerHH82Mx0H18DpfTxJervG9XZbb_7iQUy881hmqDUmN2FOMeDG9NsVg9xzB06fjW94eHsCjA/s440/unknown_2022.10.10-15.39.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;


&lt;br/&gt;&lt;br/&gt;









리마스터링이 나쁘지는 않은데, 그렇다고 최신 기술로 제대로 무장한 게임처럼 된건 아니고, 기존 엔진에 고해상도 텍스쳐를 넣고 광원을 좀 개선한 정도인 것 같은 인상입니다. 그래도 확연히 나아진건 사실이라, 이제와서 3편을 원 버전으로 즐기는 것 보다는 나은 선택일 거에요.
&lt;br/&gt;&lt;br/&gt;

&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqsIUZ1pvuXnFQFxEaAMFICM8VxAvpbFt3YT0Yolp0-Li6hqSEv2xbtnKskE1lrggNOXXRAG9aQnhy36RZGwc1vFSVAZpfgQudpYdXBDqI0s75fZHYTv4pBB5ydFWaLWJ83XArBwLqHJ_mv0cto0PAMzAp_xPTR8E11kwOgsDm72JWwKZ5IqY/s3840/unknown_2022.10.13-22.42.png&quot; style=&quot;display: block; padding: 1em 0; text-align: center; &quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;440&quot; data-original-height=&quot;2160&quot; data-original-width=&quot;3840&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqsIUZ1pvuXnFQFxEaAMFICM8VxAvpbFt3YT0Yolp0-Li6hqSEv2xbtnKskE1lrggNOXXRAG9aQnhy36RZGwc1vFSVAZpfgQudpYdXBDqI0s75fZHYTv4pBB5ydFWaLWJ83XArBwLqHJ_mv0cto0PAMzAp_xPTR8E11kwOgsDm72JWwKZ5IqY/s440/unknown_2022.10.13-22.42.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://szmyoung.blogspot.com/feeds/153903151304605397/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://szmyoung.blogspot.com/2022/11/saints-row-3-remastered-pc.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23721639/posts/default/153903151304605397'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23721639/posts/default/153903151304605397'/><link rel='alternate' type='text/html' href='http://szmyoung.blogspot.com/2022/11/saints-row-3-remastered-pc.html' title='Saints Row 3 Remastered (PC)'/><author><name>Sean Myoung</name><uri>http://www.blogger.com/profile/16105280024115881940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiovDRjxzjJ9PuOqRv0P60Uk__7Ssu765r9PUsIoUPFfSaPO-efV6US9pQqalBJrl8QOy7o-Hn07rYOzkByO6YAIPP4lqRPvuD3T1WBNLzGKXEYpf53i2gEH3PUGYJyrGj--AxuxnZues2-WsGZ8PYas7779Ahnj4ukh7vCD4WG4oroPLe_C9U/s72-c/unknown_2022.10.10-14.28.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23721639.post-4198955058483771020</id><published>2022-09-07T19:00:00.002+09:00</published><updated>2022-09-08T14:58:05.273+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Agents of Mayhem"/><category scheme="http://www.blogger.com/atom/ns#" term="PS5"/><category scheme="http://www.blogger.com/atom/ns#" term="감상"/><category scheme="http://www.blogger.com/atom/ns#" term="게임"/><category scheme="http://www.blogger.com/atom/ns#" term="에이전트 오브 메이헴"/><category scheme="http://www.blogger.com/atom/ns#" term="잡담"/><title type='text'>Agents of Mayhem (PS4)</title><content type='html'>세인츠로우 시리즈의 정점은 3편이었다는게 일반적인 평가지만, 사실 저는 4편도 꽤 재미있게 했습니다. &lt;a href=&quot;https://szmyoung.blogspot.com/2016/07/saints-row-iv-re-elected-ps4.html&quot; target=&quot;_blank&quot;&gt;세인츠로우 4편&lt;/a&gt;은 외계인과 가상현실 속에서 싸운다는 황당한 설정을 갖고 있었기 때문에 어떠한 말도 안되는 이야기나 벼라별 예상치 못한 상황이 펼쳐져도 무방한 게임이었고 나름의 고유한 재미가 분명했거든요. 그래서 세인츠로우 4편의 미적지근한 상업적인 결과를 뒤로 하고 새로운 시리즈를 만든다고 했을때는 좀 더 본격적인 황당한 게임으로 가지 않을까 하는 면에서 꽤 기대가 있었습니다. 그렇게 마주한 에이전트 오브 메이헴은.. 다른 플레이어들의 평가와 마찬가지로 초반을 견디기 힘든 게임이었고 그냥 접어두게 된거죠. 그리고 몇년이 지나 PS5로 기계가 바뀌고, 제작사인 볼리션은 세인츠로우 리부트를 내놓고, 저는 쳐박아뒀던 이 게임이 불현듯 생각나 다시 플레이해보게 되었습니다.
&lt;br/&gt;&lt;br/&gt;
초반의 고비를 넘기니 이 게임이 가진 약간의 재미가 보이기 시작해서 어찌어찌 끝까지는 플레이하고 리뷰를 남겨볼까 합니다.
&lt;br/&gt;
&lt;br/&gt;

&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDFPvYjcsVFSbPorMd-swmVJ6Lg17vr1SMy-U1suxf42RW2Wh_arjDwPo9CUs1t6ZFyyjfJQFOeAgZZpYxrxTmoR6AQeUbiycFBhQiYxhuKthYt4REdGjVaFD6yruTO9006jKpSGQOP5RVHKZg2Oe2EjPpcmQo41cDM911Ja_aVvjJFivGaw4/s3840/Agents%20of%20Mayhem_20220824223102.jpg&quot; style=&quot;display: block; padding: 1em 0; text-align: center; &quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;440&quot; data-original-height=&quot;2160&quot; data-original-width=&quot;3840&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDFPvYjcsVFSbPorMd-swmVJ6Lg17vr1SMy-U1suxf42RW2Wh_arjDwPo9CUs1t6ZFyyjfJQFOeAgZZpYxrxTmoR6AQeUbiycFBhQiYxhuKthYt4REdGjVaFD6yruTO9006jKpSGQOP5RVHKZg2Oe2EjPpcmQo41cDM911Ja_aVvjJFivGaw4/s320/Agents%20of%20Mayhem_20220824223102.jpg&quot;/&gt;&lt;/a&gt;&lt;/div&gt;

&lt;br/&gt;

&lt;br/&gt;
이 게임이 가장 실패한 부분은 이 게임이 내세우는 서울이라는 공간입니다. 게임의 배경이 무려 서울인데, 막상 플레이 해보면 이게 서울일 이유는 별로 없고, 그닥 서울 같이 보이지도 않아요. 약간 우리나라 건축물 양식과 일본 건축물 양식이 섞여있는 오래된 건물이 나오고, 거리는 상가의 한글 간판에서 살짝 서울 느낌이 나기는 하는데 간판의 한글을 읽을 수 있는 한국인의 입장에서 보면 가게 배치 같은게 영 어색하고, 서울이라는 도시의 특색이 보이지 않아요. 오픈월드 게임을 하다보면 구역마다 특색이 있어서 도시를 돌아다니며 이 장소를 알아가는 느낌이 들어야 하는데, 에이전트 오브 메이헴은 그 지점에서 실패합니다. 게임의 시스템이 공간보다는 미션에 치중해 있는데다 구역이 갖는 특색이 없다보니 그냥 천편일률적인 공간을 네비를 따라 차를 몰아 목표지점까지 이동한 다음에 지하 혹은 건물 옥상에서 펼쳐지는 미션을 플레이하고, 또 네비를 따라 다음 미션으로 이동해 가는 식이 됩니다.
&lt;br/&gt;&lt;br/&gt;
사실 전작인 세인츠로우4도 공간에 특색이 별로 없는 편이긴 했는데, 그래도 대충 도심지역, 공장지역, 교외지역 뭐 이런 식으로 약간의 구분을 느낄 수는 있었거든요. 근데 이번에는 그런 것도 없어요. 어딜 가도 그냥 도심이거나 약간 덜 도심인 지역에서 미션을 하게 됩니다.
&lt;br/&gt;&lt;br/&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbBV1ELYuDWCNK3r6rsqlor7tnbHcpTChk8IMD0WfygdqEJNAkOHt7zReZiAoMw9Sp9X4v8qJ1bZP2lUzXtQh1gDo6ClgjczpBSVsLwQMRLSK58SC1LR6z5Z_3SZ3YT8EIijQ8PE8ErOagF_7zfk8O1WlIkWjGu2LFZjTZX06NwaMM4-9g77Y/s3840/Agents%20of%20Mayhem_20220904221937.jpg&quot; style=&quot;display: block; padding: 1em 0; text-align: center; &quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;440&quot; data-original-height=&quot;2160&quot; data-original-width=&quot;3840&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbBV1ELYuDWCNK3r6rsqlor7tnbHcpTChk8IMD0WfygdqEJNAkOHt7zReZiAoMw9Sp9X4v8qJ1bZP2lUzXtQh1gDo6ClgjczpBSVsLwQMRLSK58SC1LR6z5Z_3SZ3YT8EIijQ8PE8ErOagF_7zfk8O1WlIkWjGu2LFZjTZX06NwaMM4-9g77Y/s320/Agents%20of%20Mayhem_20220904221937.jpg&quot;/&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br/&gt;&lt;br/&gt;


에이전트 오브 메이헴의 줄거리를 짧게 요약하면 LEGION이라는 악의 조직이 지구상의 각 국가를 궤멸시키려 하고, MAYHEM의 에이전트들이 이에 맞선다는 이야기가 되는데, MAYHEM의 에이전트들의 이야기가 한 축, 이들이 LEGION과 싸우는 이야기가 한 축을 이루게 됩니다. 문제는 이 이야기들이 다 평범하고 진부해요. 게임을 시작하면 아크라고 부르는 MAYHEM의 본거지에서 미션을 선택하게 되는데, 이런 식으로 종종 아크로 돌아가서 미션을 받거나 각종 업그레이드를 하게 됩니다. 그러니까 게임의 주된 흐름이 아크에 있다가 미션을 받아 서울의 워프포인트에서 차를 몰아 미션 지점으로 이동하는 식이 되는데, 이렇게 되니 맵 상에 펼쳐진 사이드 미션을 다 지나치게 됩니다. 플레이어가 계속 서울에 있는게 아니라 아크에서 왔다갔다하게 되니 중요 미션 사이사이에 사이드 미션으로 빠지는게 자연스러운 흐름으로 이루어지지 않는거죠. 오픈월드인데 배경이 중요하지 않은 신개념 게임이 된겁니다.
&lt;br/&gt;&lt;br/&gt;
오래 묵은 세인츠로우 엔진을 개선하여 사용해서 건슈팅 감각은 잘 전달됩니다. 다만 건슈팅 이외의 시스템이 자연스럽지 않고 재미도 떨어지는게 문제죠. 사이드 퀘스트도 전작에서 별로 발전하지 않았구요. 에이전트들의 이야기와 메인 시나리오 이외의 컨텐츠는 그냥 다 버려지는 수준이에요. 저도 거의 메인 컨텐츠 부분만 진행했는데, 남은 부가 퀘스트들은 전혀 할 생각이 들지 않습니다.
&lt;br/&gt;&lt;br/&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2lK0zLlRliv-2lba_aObthrsKXrqzKWwM9-1HBXd-MqaeUmMkm0mmiQSWwg9g5QDg_UqasPLzjOmJIJVb55K8Q2VspduBmoHZ1cZq5iz2DWEODjPz7YlBhrhYqM8QqUgojbNPxgGFktL1U6A9p1e9YaI1lFcjm6Cla_o_wqGchd16uFyVWL4/s3840/Agents%20of%20Mayhem_20220906210312.jpg&quot; style=&quot;display: block; padding: 1em 0; text-align: center; &quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;440&quot; data-original-height=&quot;2160&quot; data-original-width=&quot;3840&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2lK0zLlRliv-2lba_aObthrsKXrqzKWwM9-1HBXd-MqaeUmMkm0mmiQSWwg9g5QDg_UqasPLzjOmJIJVb55K8Q2VspduBmoHZ1cZq5iz2DWEODjPz7YlBhrhYqM8QqUgojbNPxgGFktL1U6A9p1e9YaI1lFcjm6Cla_o_wqGchd16uFyVWL4/s320/Agents%20of%20Mayhem_20220906210312.jpg&quot;/&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br/&gt;&lt;br/&gt;

그래서 이 게임이 완전 엉망이냐 하면 그 정도는 아니고, 기본적으로 슈팅의 재미와 보스전의 구성은 괜찮은 편이라, 사이드 퀘스트 다 생략하고 가볍게 즐기는 액션 슈터 정도의 재미는 있습니다. 다만 오픈월드로서의 활용도는 떨어지는 편이에요.



</content><link rel='replies' type='application/atom+xml' href='http://szmyoung.blogspot.com/feeds/4198955058483771020/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://szmyoung.blogspot.com/2022/09/agents-of-mayhem-ps4.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23721639/posts/default/4198955058483771020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23721639/posts/default/4198955058483771020'/><link rel='alternate' type='text/html' href='http://szmyoung.blogspot.com/2022/09/agents-of-mayhem-ps4.html' title='Agents of Mayhem (PS4)'/><author><name>Sean Myoung</name><uri>http://www.blogger.com/profile/16105280024115881940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDFPvYjcsVFSbPorMd-swmVJ6Lg17vr1SMy-U1suxf42RW2Wh_arjDwPo9CUs1t6ZFyyjfJQFOeAgZZpYxrxTmoR6AQeUbiycFBhQiYxhuKthYt4REdGjVaFD6yruTO9006jKpSGQOP5RVHKZg2Oe2EjPpcmQo41cDM911Ja_aVvjJFivGaw4/s72-c/Agents%20of%20Mayhem_20220824223102.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23721639.post-7636693300180319924</id><published>2022-07-27T19:00:00.002+09:00</published><updated>2022-07-27T19:10:35.379+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Fallen Order"/><category scheme="http://www.blogger.com/atom/ns#" term="Jedi"/><category scheme="http://www.blogger.com/atom/ns#" term="PS5"/><category scheme="http://www.blogger.com/atom/ns#" term="Star Wars"/><category scheme="http://www.blogger.com/atom/ns#" term="감상"/><category scheme="http://www.blogger.com/atom/ns#" term="게임"/><category scheme="http://www.blogger.com/atom/ns#" term="스타워즈"/><category scheme="http://www.blogger.com/atom/ns#" term="잡담"/><category scheme="http://www.blogger.com/atom/ns#" term="제다이"/><title type='text'>Star Wars Jedi: Fallen Order (PS5)</title><content type='html'>할만한 게임이 없던 차에 PSN에서 할인하길레 사봤네요. 사전 정보 없이 그저 평이 좋다는 얘길 들은 기억이 나서 하게 됐는데, 게임이 전반적으로 큰 야심은 없지만 정석대로 잘 만들었습니다. 툼레이더류의 시스템 및 퍼즐 기반에 제다이 스타일의 광선검 전투를 입히고, 잠입 요소를 배제해서 스토리 기반으로 게임을 구성했네요.
&lt;br/&gt;&lt;br/&gt;
이 게임은 스타워즈 세계관에 몰입하기 좋은 장치를 잘 갖춘 점이 좋았어요. 전반적으로 툼레이더류의 길찾기 퍼즐이지만 적절한 흐름으로 스타워즈 세계관에 걸맞는 요소들을 배치했고, 전투 시스템이 어느 정도 제다이 느낌을 받을 수 있도록 구성이 되어 있습니다. 캐릭터 조형도 좋아요. 주인공 칼 케스티스는 배경 이야기나 외모, 목소리 모두 스타워즈 주인공으로 적절했다는 느낌이 들어요.
&lt;br/&gt;&lt;br/&gt;
자동 스샷 기능만 켜놓고 게임을 했더니 모션블러를 잔뜩 먹어서 쓸만한 스샷이 하나도 안 나왔네요. 그래픽도 큰 야심은 없지만 분위기에 잘 맞게 구현되었고, 전반적으로 재미있는 게임입니다.
</content><link rel='replies' type='application/atom+xml' href='http://szmyoung.blogspot.com/feeds/7636693300180319924/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://szmyoung.blogspot.com/2022/07/star-wars-jedi-fallen-order-ps5.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23721639/posts/default/7636693300180319924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23721639/posts/default/7636693300180319924'/><link rel='alternate' type='text/html' href='http://szmyoung.blogspot.com/2022/07/star-wars-jedi-fallen-order-ps5.html' title='Star Wars Jedi: Fallen Order (PS5)'/><author><name>Sean Myoung</name><uri>http://www.blogger.com/profile/16105280024115881940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23721639.post-106180051453654377</id><published>2022-06-29T18:00:00.008+09:00</published><updated>2023-07-19T21:46:13.032+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Operation Mincemeat"/><category scheme="http://www.blogger.com/atom/ns#" term="The Man Who Never Was"/><category scheme="http://www.blogger.com/atom/ns#" term="감상"/><category scheme="http://www.blogger.com/atom/ns#" term="영화"/><category scheme="http://www.blogger.com/atom/ns#" term="잡담"/><title type='text'>민스미트 작전을 다룬 영화들, The Man Who Never Was (1956), Operation Mincemeat (2021)</title><content type='html'>민스미트 작전은 2차대전 당시 독일군이 주둔중이던 시칠리아에 침공하기 위해 연합군의 공격 목표가 그리스인 것으로 독일군을 속여 병력을 시칠리아에서 이동시키려고 영국군 정보 당국이 벌였던 기만 작전입니다.
이 작전에 대한 영화가 지금까지 두 편이 나왔는데, &lt;a href=&quot;https://www.imdb.com/title/tt0049471&quot; target=&quot;_blank&quot;&gt;The Man Who Never Was (1956)&lt;/a&gt;와 &lt;a href=&quot;https://www.imdb.com/title/tt1879016&quot; target=&quot;_blank&quot;&gt;Operation Mincemeat (2021)&lt;/a&gt; 입니다. 이 이야기에 관심이 생겨 최근에 두 편을 연달아 보게 되었는데, 간단하게 실화와 두 영화를 비교하는 글을 적어볼까 합니다. 실제 작전 및 영화 전체를 언급하므로 당연히 스포일러가 포함됩니다.
&lt;br/&gt;&lt;br/&gt;
이 내용을 어떻게 정리해야 깔끔하게 떨어질까 생각해 봤는데, 먼저 영화와 관련된 등장인물과 실제 사실을 간략히 적고 실화와 각 영화와의 차이점을 정리한 후에 마지막으로 영화에 대한 감상을 적는 식으로 하는게 좋을 것 같아요.
&lt;br/&gt;&lt;br/&gt;
그래서 알려진 실제 사실을 적어볼게요.
&lt;br/&gt;&lt;br/&gt;
민스미트 작전의 필요성은 앞서 말했듯 독일군이 시칠리아에 주둔하고 있고, 누가 봐도 시칠리아를 점령하는게 지중해를 장악하는데 가장 유리하고, 당연히 연합군도 시칠리아에 침공하고 싶어했다는데 있습니다. 이렇다보니 시칠리아를 침공하고 싶던 연합군은 독일군으로 하여금 연합군의 목표가 다른 곳에 있다고 믿게 해서 병력을 이동시키게 만들고 싶었고, 이를 위해 연합군의 공격 목표가 시칠리아 만큼은 아니어도 어느 정도 전략적으로 괜찮은 위치인 그리스인 것으로 속이기로 합니다.
&lt;br/&gt;&lt;br/&gt;
당시 해군정보국의 수장 존 고드프리(Admiral John Godfrey) 제독실에서 작성된 &#39;송어&#39;라는 메모에는 여러 개의 기만술에 대한 간단한 아이디어들이 담겨 있었는데, 이 중 하나를 구체화한게 민스미트 작전입니다. 이 메모를 실제로 작성한 사람은 이언 플레밍(Ian Fleming)으로, 전후 007 시리즈의 작가로 유명해지게 됩니다.
&lt;br/&gt;&lt;br/&gt;
민스미트 작전은 간단히 말하면 독일군의 정보기관으로 하여금 우연히 나포한 영국군인의 사체에 포함된 소지품의 형식으로 가짜 문서를 얻게 하여 거짓 정보를 넘겨준다는 것입니다. 송어 메모의 간단한 아이디어를 여기까지 구체화한게 찰스 첨리(Charles Cholmondeley) 대위이고, 이 작전을 실제로 구현한게 유언 몬태규(Ewen Montagu) 소령입니다. 구체적으로, 노숙자의 시신을 구해서 윌리엄 마틴(William Martin) 소령이라는 가상의 인물의 사체로 위장하고 여기에 연합군 수뇌부들의 사적인 편지를 전달하는 과정이었던 것 처럼 소지품에 넣어서 연합군의 공격목표가 시칠리아가 아닌 그리스임을 암시하는 내용을 독일군 정보부에 넘기는 겁니다. 이 과정에서 윌리엄 마틴의 여자친구 사진으로 사용하기 위해 유언 몬태규 팀의 사무직 여성 진 레슬리(Jean Leslie)가 본인의 사진을 제공합니다.
&lt;br/&gt;&lt;br/&gt;
사체는 조작된 소지품들과 함께 조류의 움직임을 감안하여 스페인 연안에 방출되었고, 영국군 정보부의 예상대로 스페인에 있던 독일 정보부 요원에 의해 독일군 수뇌부에게 전달됩니다. 독일 정보부는 이 정보가 신뢰성이 높다고 판단하여 시칠리아 주둔군의 규모를 대폭 줄여 그리스로 이동시켰고, 이후 연합군이 시칠리아에 침공하여 점령에 성공하기에 이르게 됩니다. 유언 몬태규 팀의 입장에서야 윌리엄 마틴 소령이 실제 존재하는 인물인 것으로 속이기 위해 한 사람의 개인사 전체를 구현하는 과정이 험난했겠지만, 실제로는 이걸로 끝입니다. 여기에 어떤 극적인 과정은 없어요.
&lt;br/&gt;&lt;br/&gt;
어찌됐든 정보전 역사상 최대의 대성공 중 하나였기 때문에 전후 알음알음 입소문이 돌다가 결국 유언 몬태규 본인이 이 작전에 대한 회고록을 집필하게 됩니다. 1956년판 영화 The Man Who Never Was는 이 회고록에 기반을 두고 있습니다. 이후 작가인 벤 맥킨타이어(Ben Macintyre)가 이 작전에 대한 책을 쓰는데, 2021년판 영화 Operation Mincemeat는 이 책에 기반을 두고 있습니다.
&lt;br/&gt;&lt;br/&gt;
이제 실화와 영화의 차이점을 볼까요.
&lt;br/&gt;&lt;br/&gt;
1956년판 영화 The Man Who Never Was는 유언 몬태규의 회고록을 가지고 만들었기 때문에 당시에 소설가로 유명해지기 전인 이언 플레밍은 나오지 않습니다. 본인의 회고록이기 때문에 아무래도 본인이 아는 범위 내에서 적었을테고, 송어 메모와 같은 초기 구상은 언급되지 않는 편입니다. 찰스 첨리도 몬태규의 실행팀에 같이 있었던건 아니었는지 아예 빠져 있어요. 앞에서 언급했듯 이야기 자체는 극적인 부분이 없으므로 영화화 과정에서 극적인 부분을 첨가할 수 밖에 없었을텐데, 당시의 명감독인 로널드 님(Ronald Neame)은 영화를 전반적으로 영웅 전기 스타일로 만들었습니다. 유언 몬태규를 영웅적인 선지자에 가까운 인물로 묘사하는 편이고, 진 레슬리의 역할을 둘로 나눴습니다. 유언 몬태규 팀의 여직원으로 팸이라는 여성이 나오고, 팸의 룸메이트로 루시 셔우드라는 여성이 나오게 한 후 팸에게는 작전에 참여하는 전문가의 면모를 주고 루시에게는 극적인 순간을 주도록 만들었어요. 윌리엄 마틴 소령이 실존인물인지 확인하기 위해 독일측이 스파이를 보낸다는 설정을 넣고, 윌리엄 마틴의 여자친구 사진을 루시 셔우드의 것으로 이용한 것으로 만들어서 스파이가 루시를 쫓게 합니다. 여기에 루시 개인에게 남자친구가 전사한 상황을 제공해 한바탕 연극적인 장면이 나와요. 이 연극을 통해 스파이는 윌리엄 마틴이 실존 인물인 것으로 생각하게 됩니다.
&lt;br/&gt;&lt;br/&gt;
2021년판 영화 Operation Mincemeat는 이미 유명해진 이언 플레밍을 적극 활용합니다. 영화의 나레이션을 맡기고 아예 유언 몬태규의 팀에 같이 협력한 것으로 각색하죠. 그리고 유언 몬태규의 팀에 찰스 첨리도 함께 한 것으로 나와요. 2021년판의 가장 큰 차이점은 진 레슬리의 활용인데, 실제로는 20대였던 연령대를 40대로 올려버리고 유언 몬태규와 썸을 타게 합니다. 찰스 첨리가 둘의 관계에 질투하면서 삼각관계까지 만들어 버려요. 작전의 결과도 다른데, 결국 독일 내 반정부 조직에게 작전의 전말이 노출되지만 반정부 조직이 독일군의 실패를 위해 이 작전에 눈감으면서 성공할 수 있었다는 식으로 만듭니다.
&lt;br/&gt;&lt;br/&gt;
이제 총평을 해볼까요.
&lt;br/&gt;&lt;br/&gt;
1956년판은 전반적으로 유언 몬태규를 영웅적으로 묘사하는 전문가물의 경향을 띠고, 마지막에 독일 스파이를 등장시키면서 클라이맥스를 마련하는 등 정석적인 상업영화 문법에 잘 따르도록 각색합니다. 1950년대 영화라 갖는 한계도 좀 보이는데, 영화가 느린 템포로 차근차근 설명하는 경향이 있어서 빠른 전개에 익숙한 현대 관객에게는 좀 늘어지는 느낌이 들 수 있고, 마지막에 유언 몬태규의 선지자 적인 면모를 부각하기 위해 주변 인물들을 바보로 만드는 장면이 걸립니다. 그래도 전반적으로 잘 만든 상업영화입니다.
&lt;br/&gt;&lt;br/&gt;
2021년판은 무슨 얘길 하고 싶은건지 모르겠어요. 유언 몬태규의 팀은 뭔가 모든 일들이 엉망진창으로 굴러가면서도 끝끝내 작전을 해내긴 하는데, 그것마저 상대가 봐줘서 성공했다는 이야기가 되니까 맥이 빠지는 느낌이 듭니다. 진 레슬리의 연령대를 바꾸면서까지 넣은 삼각관계도 덜커덕거려요. 굳이 왜 넣은건지 모르겠는 플롯입니다. 이언 플레밍도 딱히 나올 이유가 없구요. 그냥 유명하니까 활용한다는 느낌으로, 작중에서 별로 역할이 없습니다.
&lt;br/&gt;&lt;br/&gt;
그래서 개인적으로는 1956년판이 훨씬 나은 영화였다고 봅니다.</content><link rel='replies' type='application/atom+xml' href='http://szmyoung.blogspot.com/feeds/106180051453654377/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://szmyoung.blogspot.com/2022/06/man-who-never-was-1956-operation.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23721639/posts/default/106180051453654377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23721639/posts/default/106180051453654377'/><link rel='alternate' type='text/html' href='http://szmyoung.blogspot.com/2022/06/man-who-never-was-1956-operation.html' title='민스미트 작전을 다룬 영화들, The Man Who Never Was (1956), Operation Mincemeat (2021)'/><author><name>Sean Myoung</name><uri>http://www.blogger.com/profile/16105280024115881940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23721639.post-5427160248984308368</id><published>2022-05-02T00:00:00.002+09:00</published><updated>2022-05-02T10:47:22.914+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Uncharted"/><category scheme="http://www.blogger.com/atom/ns#" term="감상"/><category scheme="http://www.blogger.com/atom/ns#" term="언차티드"/><category scheme="http://www.blogger.com/atom/ns#" term="영화"/><category scheme="http://www.blogger.com/atom/ns#" term="잡담"/><title type='text'>Uncharted (2022)</title><content type='html'>개인적으로 언차티드 게임 시리즈를 그닥 좋아하지 않습니다. 막상 플레이하면 나름 괜찮아서 싫어할 정도는 아니지만 이야기가 영 재미없기 때문에 끝내고 기억에 남거나 진정 빠져들어서 플레이할 정도까진 아니에요. 좋은 각본은 등장인물의 심리에 이입할 수 있고 앞으로의 진행이 뻔하지 않아야 한다고 보는데, 언차티드는 그 점에서는 그닥 높이 쳐줄 만한 요소가 없거든요. 게임플레이 면에서 재미있긴 하지만 이야기 자체는 별게 없고, 앞으로의 진행이 뻔하지 않긴 하지만 이건 하이스트 영화의 공식에 따라 등장인물들이 돈을 노리고 끊임없이 서로의 뒷통수를 치기 때문이지 논리적으로든 감정적으로든 시나리오 상의 이유가 존재하는게 아니니까요. 그러니까 등장인물에게 이입할 여지는 거의 없지만 게임 플레이는 괜찮고 앞으로의 전개를 예측하기 어렵다는 면은 갖춘 겁니다.
&lt;br&gt;&lt;br&gt;
영화 언차티드는 게임의 성공 공식을 잘 따르고 있습니다. 주인공 네이선 드레이크 역으로 게임 원작보다 젊은 톰 홀랜드를 캐스팅한 덕분에 조력자인 설리의 연령대도 같이 낮아져서 마크 월버그가 맡게 되었는데, 둘 다 좋은 연기자들이고 초기의 우려에 비해 제 역할을 충분히 해줍니다. 이외에 뒷통수를 치기 위해 존재하는 인물들이 몇 나오죠. 여기서 게임의 방식을 따라서 서로 끊임없이 배신을 하는 가운데 액션이 펼쳐집니다. 영화화 과정에서 군더더기를 모두 제거했기 때문에 괜찮은 액션이 펼쳐지고 끊임없이 서로를 노리게 되니 바로 한치 앞의 전개도 예측하기 힘들죠. 덕분에 게임판과 같은 문제점을 갖는데, 인물이 깊이가 없고 행동이나 고뇌에 대해 관객이 이입할 여지는 전혀 없습니다. 그래도 재미는 있어요. 게임과 달리 상영시간이 짧은 영화는 오히려 이런 방식이 잘 어울리기 때문에 영화로서의 완성도는 괜찮았다고 느껴집니다. 영화는 즐겁게 액션을 감상하고 끝내면 그만이지만 플레이타임이 수십시간씩 되는 게임에서 인물의 깊이가 없는게 더 지루하거든요. 그런 점에서 개인적으로는 이번 영화판이 게임판보다 더 나았다고 생각합니다.</content><link rel='replies' type='application/atom+xml' href='http://szmyoung.blogspot.com/feeds/5427160248984308368/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://szmyoung.blogspot.com/2022/05/uncharted-2022.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23721639/posts/default/5427160248984308368'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23721639/posts/default/5427160248984308368'/><link rel='alternate' type='text/html' href='http://szmyoung.blogspot.com/2022/05/uncharted-2022.html' title='Uncharted (2022)'/><author><name>Sean Myoung</name><uri>http://www.blogger.com/profile/16105280024115881940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23721639.post-519003314375777716</id><published>2022-04-12T20:00:00.001+09:00</published><updated>2022-04-12T20:22:53.883+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Cyberpunk 2077"/><category scheme="http://www.blogger.com/atom/ns#" term="PS5"/><category scheme="http://www.blogger.com/atom/ns#" term="감상"/><category scheme="http://www.blogger.com/atom/ns#" term="게임"/><category scheme="http://www.blogger.com/atom/ns#" term="잡담"/><title type='text'>Cyberpunk 2077 (PS5)</title><content type='html'>늘 그렇듯 출시 직후에 바로 구매하지 않았기 때문에 버그가 심각했던 초기 버전은 플레이하지 않았습니다. PS5를 제대로 지원하는 버전을 기다리다 보니 2년이나 지나서 나온 1.5 버전에서 플레이했습니다. 딱히 할 말이 많은 게임은 아니에요. 게임 자체로 재미있기는 한데 전작인 위쳐3와 비슷한 수준입니다. CDPR의 장기인 스토리 중심의 가벼운 액션 RPG인데, 무기가 다양해지고 액션성이 증가해서 전투 감각은 확실히 더 나아졌어요.
&lt;br/&gt;&lt;br/&gt;
사이버펑크 분위기는 잘 묘사하지만 메인 시나리오나 서브 시나리오나 모두 분량이 짧습니다. 커스터마이징은 잘 구현되어 있지만 게임에 미치는 영향은 없다시피 한 수준이고 일인칭이니까 더더욱 별 영향을 느낄 수 없어요.
&lt;br/&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjl4n_OkmK-fBcVmlkC7gVvqtrO61P6_h8VgA_CvGA-0s44sVsZdfkYUWQnSWZQf5szeOgIUX4i-bsq1bVc4RUfScHZxQer5VkiitKKrvuERHkgGuiH4t0S-x1OZ9dIKE5IGQ2Rmxg83pXbZAVfL83XKkYlQ2shQWPDLrFGAYh_83hIZ54-93o/s3840/%EC%82%AC%EC%9D%B4%EB%B2%84%ED%8E%91%ED%81%AC%202077_20220219000520.jpg&quot; style=&quot;display: block; padding: 1em 0; text-align: center; &quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;400&quot; data-original-height=&quot;2160&quot; data-original-width=&quot;3840&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjl4n_OkmK-fBcVmlkC7gVvqtrO61P6_h8VgA_CvGA-0s44sVsZdfkYUWQnSWZQf5szeOgIUX4i-bsq1bVc4RUfScHZxQer5VkiitKKrvuERHkgGuiH4t0S-x1OZ9dIKE5IGQ2Rmxg83pXbZAVfL83XKkYlQ2shQWPDLrFGAYh_83hIZ54-93o/s320/%EC%82%AC%EC%9D%B4%EB%B2%84%ED%8E%91%ED%81%AC%202077_20220219000520.jpg&quot;/&gt;&lt;/a&gt;&lt;/div&gt;

&lt;br/&gt;
이 게임의 개발진이 일인칭 시점을 선택한 이유는 납득이 가는게, 플레이어가 상황에 몰입하도록 하는 장치가 잘 되어 있습니다. 전작인 위처3에서는 3인칭이 잘 어울렸지만, 이 게임에서 플레이어는 V라는 인물을 플레이 하다가 중간에 죠니 실버핸드라는 인물을 플레이하게 되는데, 이 두 인물이 외형적으로는 차이가 없거든요. 그래서 3인칭이었으면 플레이어 입장에서 상당히 몰입이 깨졌을 것 같습니다. 일인칭이 되어 내 모습을 보지 못하게 되면서 V가 아닌 죠니로 플레이한다는 감각을 정확하게 전달 할 수 있죠.
&lt;br/&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgK6ktQ4wIjMYIX4gsiPHWHaZSmgb5dj-Ny7DV8N3PxI6Ewe6Oj8FKYaZ-xeKpENTTHEg72OSvkq3bLTbYgwee76a-m1dJ-T3LpXUYyKttgObOqNw7N4Snk2y4lFR6uGL8whC1vpXwidpIdI85Esos_FtyQ8ko_EKU_45eZzsKe-5S6NYWU7J4/s3840/%EC%82%AC%EC%9D%B4%EB%B2%84%ED%8E%91%ED%81%AC%202077_20220227175925.jpg&quot; style=&quot;display: block; padding: 1em 0; text-align: center; &quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;400&quot; data-original-height=&quot;2160&quot; data-original-width=&quot;3840&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgK6ktQ4wIjMYIX4gsiPHWHaZSmgb5dj-Ny7DV8N3PxI6Ewe6Oj8FKYaZ-xeKpENTTHEg72OSvkq3bLTbYgwee76a-m1dJ-T3LpXUYyKttgObOqNw7N4Snk2y4lFR6uGL8whC1vpXwidpIdI85Esos_FtyQ8ko_EKU_45eZzsKe-5S6NYWU7J4/s320/%EC%82%AC%EC%9D%B4%EB%B2%84%ED%8E%91%ED%81%AC%202077_20220227175925.jpg&quot;/&gt;&lt;/a&gt;&lt;/div&gt;

&lt;br/&gt;
또한 현실적인 성능 이슈도 있는 것으로 보이는게, 게임 내에서 자연스럽게 내 모습을 볼 수 있는 장치가 아예 없습니다. 이건 일부러 다 뺀 거라고 봐야해요. 거울을 볼 수 있지만 기능을 동작시켜야 보이는 방식이고 월드 내에서는 플레이어의 그림자만 그려주는 식으로 플레이 중에 마주치는 물체 중에 내 모습을 정확히 확인할 수 있도록 반사되는 물체가 아예 없습니다. 세밀한 커스터마이징이 가능한 플레이어를 게임 중에 화면에 정확히 그리기 위해서는 실시간으로 커스터마이징 된 요소에 대한 연산이 필요한데, 이걸 하지 않기 위한 기술적인 조치로 보여요. 레이트레이싱도 그림자에서만 사용하는 식으로 월드에 제대로 반사가 되는 물체가 없습니다. 전세대 콘솔에서 동작하게 만들기 위해 여러가지로 렌더링 품질을 희생시켰다고 보여요.
&lt;br/&gt;

&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhid1CkHYoT9ZyJz5mMcEnqZheLmE16MBDZannEvkrjcfEgsHmHeEWYri7l73ZDw-r9VtGEhUU1LTfQbph0Le-c0cyKHEsIo7LT_CfDcE_5lS2mpaCSwondykBSrt3yaL57CzYBa6VLzNlB961LTjQGRtBsfwoZEYOwrZPARZJDMvA5MEfu5ts/s3840/%EC%82%AC%EC%9D%B4%EB%B2%84%ED%8E%91%ED%81%AC%202077_20220303215836.jpg&quot; style=&quot;display: block; padding: 1em 0; text-align: center; &quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;400&quot; data-original-height=&quot;2160&quot; data-original-width=&quot;3840&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhid1CkHYoT9ZyJz5mMcEnqZheLmE16MBDZannEvkrjcfEgsHmHeEWYri7l73ZDw-r9VtGEhUU1LTfQbph0Le-c0cyKHEsIo7LT_CfDcE_5lS2mpaCSwondykBSrt3yaL57CzYBa6VLzNlB961LTjQGRtBsfwoZEYOwrZPARZJDMvA5MEfu5ts/s320/%EC%82%AC%EC%9D%B4%EB%B2%84%ED%8E%91%ED%81%AC%202077_20220303215836.jpg&quot;/&gt;&lt;/a&gt;&lt;/div&gt;


&lt;br/&gt;
시나리오 면에서는 게임 중간중간에 선택한 내용이 반영되는 부분이 거의 없습니다. 복수의 엔딩을 갖기는 하지만 엔딩 분기도 마지막 미션에서 다 이루어지고 엔딩 내용도 모두 암울해서 전부 보기 위해 노력하고 싶은 의지를 꺾습니다. 게임을 끝내고 나면 분량이 짧아서 아쉬움이 느껴져요. 월드 빌딩은 잘 되어 있어서 여기서 더 놀고 싶은 기분은 드는데 남은 자잘한 노가다는 재미가 없어서 의욕을 잃게 만듭니다. 한마디로 제대로 만든 컨텐츠의 분량이 모자라다고 할 수 있어요.
&lt;br/&gt;&lt;br/&gt;
총평하면 바탕은 잘 갖추어져 있지만 뭔가 덜 만들어진 느낌이 강하게 들고 아쉬움이 많이 남는 게임입니다. 분명 더 재미있어질 여지가 많지만 게임의 출시 후 상황을 보면 추가된 무언가가 나오기는 어려워 보이죠. 뉴게임+나 만들어주면 좀 더 갖고 놀까 싶은데 그것조차 아직 미구현이라니 안타까울 뿐이에요.



</content><link rel='replies' type='application/atom+xml' href='http://szmyoung.blogspot.com/feeds/519003314375777716/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://szmyoung.blogspot.com/2022/04/cyberpunk-2077-ps5.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23721639/posts/default/519003314375777716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23721639/posts/default/519003314375777716'/><link rel='alternate' type='text/html' href='http://szmyoung.blogspot.com/2022/04/cyberpunk-2077-ps5.html' title='Cyberpunk 2077 (PS5)'/><author><name>Sean Myoung</name><uri>http://www.blogger.com/profile/16105280024115881940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjl4n_OkmK-fBcVmlkC7gVvqtrO61P6_h8VgA_CvGA-0s44sVsZdfkYUWQnSWZQf5szeOgIUX4i-bsq1bVc4RUfScHZxQer5VkiitKKrvuERHkgGuiH4t0S-x1OZ9dIKE5IGQ2Rmxg83pXbZAVfL83XKkYlQ2shQWPDLrFGAYh_83hIZ54-93o/s72-c/%EC%82%AC%EC%9D%B4%EB%B2%84%ED%8E%91%ED%81%AC%202077_20220219000520.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23721639.post-1098775012051711530</id><published>2022-03-16T22:00:00.004+09:00</published><updated>2023-07-19T21:46:25.517+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="부고"/><category scheme="http://www.blogger.com/atom/ns#" term="영화"/><category scheme="http://www.blogger.com/atom/ns#" term="윌리엄 허트"/><category scheme="http://www.blogger.com/atom/ns#" term="잡담"/><title type='text'>윌리엄 허트(1950-2022)의 부고에 부쳐</title><content type='html'>배우 윌리엄 허트의 부고를 듣게 되었습니다. 개인적으로 좋아하던 배우라, 뭔가 한 시대의 종막을 보는 것 같아서 몇 자 적게 되네요. 최근 관객들에게는 마블 시네마틱 유니버스의 로스 장군으로 주로 알려져 있지만, 윌리엄 허트는 1980년대 최고의 배우 중 한 명이었습니다. 윌리엄 허트의 1980년대 필모그래피는 양과 질 모두에서 거의 미친 수준이라서, 뭐랄까, 당시 느낌으로는 헐리웃 역사에 남을 연기파 배우들의 계보를 이을 것만 같았어요. 헐리웃 영화의 주류 장르가 드라마이던 시절이었고, 배우의 이미지나 연기가 불안정한 지식인 역에 너무나 잘 어울렸기 때문에, 1980년대 그의 출연작들은 죄다 방황하는 지식인을 섬세하게 다루는 뛰어난 영화들이었어요. 그러다 헐리웃 영화의 주류가 액션으로 옮겨가는 1990년대가 오면서 무언가에 홀린듯 순식간에 인기가 가라앉습니다. 헐리웃이 더이상 지식인을 주인공으로 원하지 않게 된거죠. 윌리엄 허트의 뒤를 이어 비슷한 듯 다른, 다소 변태적인 꽃미남 지식인 느낌으로 주류 배우로 부상했던 제임스 스페이더도 액션 영화로 트렌드가 바뀐 나머지 짧은 전성기 이후 같이 가라앉았던 기억도 나네요. 이후 제임스 스페이더는 장기를 살려 변태적인 수다쟁이 변호사 역으로 TV에서 부활하게 되고 계속해서 그런 역을 맡아가고 있지만요.
&lt;br/&gt;&lt;br/&gt;
이후 윌리엄 허트의 필모는 그다지 눈에 띠지 않습니다. 헐리웃 영화의 트랜드가 액션을 거쳐 다시 SF로 옮겨간 후에 마블 시네마틱 유니버스에 캐스팅 되어 간간히 조연으로 등장했을 뿐 다시는 80년대의 영광을 찾을 수 없었죠. 마블은 자기들의 SF 영화에 설득력을 더하기 위해 아카데미 상을 받은 현재나 과거의 명배우/명감독들을 자주 기용하고 있는데, 아카데미 주연상 수상자(&lt;a href=&quot;https://www.imdb.com/title/tt0089424&quot; target=&quot;_blank&quot;&gt;거미 여인의 키스 Kiss of the Spider Woman, 1985&lt;/a&gt;)이자 80년대 남우주연상 단골 후보였던 윌리엄 허트도 그 중 한 명이었던 것 같습니다.
&lt;br/&gt;&lt;br/&gt;
개인적으로 좋아하는 영화는 &lt;a href=&quot;https://www.imdb.com/title/tt0094606&quot; target=&quot;_blank&quot;&gt;우연한 여행자(The Accidental Tourist, 1988)&lt;/a&gt;와 &lt;a href=&quot;https://www.imdb.com/title/tt0090830&quot; target=&quot;_blank&quot;&gt;작은 신의 아이들(Children of a Lesser God, 1986)&lt;/a&gt;입니다. 이 1985~1988의 4년동안 윌리엄 허트가 출연한 영화들이 다 말도 안되게 훌륭한 작품들이에요. 우연한 여행자는 두어해 전에 다시 봤는데, 요즘 기준으로 봐도 재미있는 영화입니다. 이 영화로 지나 데이비스가 아카데미 여우조연상을 받게 되는데, 이후 지나 데이비스 마저 90년대의 액션 영화 트렌드를 거스르지 못하고 도전했다 폭망하고 말죠. 80년대에 드라마 장르에서 명연기를 보여줬던 배우들이 죄다 액션 영화에 도전했다 나가 떨어지는 과정을 보면 이러한 트렌드의 강력함과 개인의 무력함이 느껴지기도 하구요.
&lt;br/&gt;&lt;br/&gt;
최근에는 그의 사생활 문제나 미투도 드러나게 되면서 왠지 추모 분위기는 별로 없는 것 같지만, 80년대 그가 찍었던 미친듯이 좋은 영화들을 돌이켜 보면 그의 부고에 아쉬운 마음이 드는 건 어쩔 수 없네요. 명복을 빕니다.</content><link rel='replies' type='application/atom+xml' href='http://szmyoung.blogspot.com/feeds/1098775012051711530/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://szmyoung.blogspot.com/2022/03/1950-2022.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23721639/posts/default/1098775012051711530'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23721639/posts/default/1098775012051711530'/><link rel='alternate' type='text/html' href='http://szmyoung.blogspot.com/2022/03/1950-2022.html' title='윌리엄 허트(1950-2022)의 부고에 부쳐'/><author><name>Sean Myoung</name><uri>http://www.blogger.com/profile/16105280024115881940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23721639.post-7312059458093711819</id><published>2021-12-31T17:00:00.001+09:00</published><updated>2021-12-31T17:24:11.601+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Resurrections"/><category scheme="http://www.blogger.com/atom/ns#" term="The Matrix"/><category scheme="http://www.blogger.com/atom/ns#" term="감상"/><category scheme="http://www.blogger.com/atom/ns#" term="리저렉션"/><category scheme="http://www.blogger.com/atom/ns#" term="매트릭스"/><category scheme="http://www.blogger.com/atom/ns#" term="영화"/><category scheme="http://www.blogger.com/atom/ns#" term="잡담"/><title type='text'>The Matrix Resurrections (2021)</title><content type='html'>이 영화의 가장 큰 미덕은 이야기를 매끄럽게 이어간 점이에요. 어설프게 뒤틀지 않고 3편에서 내용이 이어지면서 앞뒤가 맞도록 만들었다는 점은 좋았습니다. 영화의 초중반까지 대사로 설명하는 부분이 많긴 하지만 최소한 이야기가 큰 무리 없이 전편으로부터 흘러서 자연스럽게 전개가 됩니다. 몇 가지 선택에서 관객의 의표를 찌르는 부분들이 있어서 이야기가 대사 중심으로 전개됨에도 흥미를 유지할 수 있었어요. 사실 주된 이야기가 대사 위주로 전개되는건 매트릭스 1편부터의 전통이고, 한참 지루해질만 하다가 한번씩 멋지게 액션을 펼치는게 이 시리즈의 스토리텔링 방식이기는 했죠. 매트릭스 1편의 경우에도 이 시리즈의 시그니쳐가 된 불릿타임 액션이 영화 최후반부에 나오기 전까지는 대사로만 이야기가 진행되어서 영화관에 조는 관객이 넘쳐나기도 했어요.
&lt;br/&gt;&lt;br/&gt;
후반부의 액션 장면이나 이야기 전개는 좀 미묘한데, 그렇게 나쁘지는 않지만 그렇게 좋지도 않습니다. 불릿타임 같은 혁신적인 액션 시퀀스는 없어요. 액션 장면에 독창적인 아이디어가 들어가 있기는 한데 이게 불릿타임처럼 멋지기는 커녕 공포감을 주는 것이라 뒷맛이 개운치 않죠. 마지막에 감정적으로 폭발을 일으켜야 하는 장면에서 한번 비틀린 결과를 보여주는데, 이게 전작 팬들에게 어색하게 받아들여지기도 하구요. 지나치게 PC가 개입한게 아니냐는 의구심까지 불러일으키는 장면인데, 이 장면은 다음편이 만들어진다면 또 다른 방식으로 설명이 되기는 할것 같아요. 성모 마리아도 신성이 있다는 식이니까 말이 전혀 안 되는건 아니기도 하고. 그렇지만 이 모든게 잘 전달이 되지 않는다는게 이 영화의 문제점이에요. 전반적으로 등장하는 모든 배우들의 연기가 나빠요. 감정적으로 관객을 움직여야 하는 부분에서도 제 기능을 발휘하지 못하고 겉돌게 됩니다.
&lt;br/&gt;&lt;br/&gt;
전체적으로 보면 영화의 속도감에도 문제가 있습니다. 앞에서 언급했듯 매트릭스 1편이 나오던 시점에서도 대사가 많고 속도가 느린 영화였는데, 평균적인 영화의 속도가 더 빨라진 20년 후에도 그때의 속도감으로 이야기가 진행되고 있으니 현대 관객의 입장에서는 영화가 많이 느려요. 20년전 이야기를 이어서 하는데 속도마져 느리니 영화가 더욱 지루할 수 밖에 없죠.
&lt;br/&gt;&lt;br/&gt;
총평하면, 분명 전편을 잇는다는 부분에서는 잘 정리된 이야기이긴 한데, 느린 속도감과 느슨한 연기 지도로 실제 만듦새에 많은 문제가 있습니다. 그래서 아쉬운 영화가 되었다고 느껴지네요.</content><link rel='replies' type='application/atom+xml' href='http://szmyoung.blogspot.com/feeds/7312059458093711819/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://szmyoung.blogspot.com/2021/12/the-matrix-resurrections-2021.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23721639/posts/default/7312059458093711819'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23721639/posts/default/7312059458093711819'/><link rel='alternate' type='text/html' href='http://szmyoung.blogspot.com/2021/12/the-matrix-resurrections-2021.html' title='The Matrix Resurrections (2021)'/><author><name>Sean Myoung</name><uri>http://www.blogger.com/profile/16105280024115881940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>