Very rough draft of write-up (not proof-read).
This commit is contained in:
@@ -1,11 +1,13 @@
|
||||
\relax
|
||||
\citation{zimmerman}
|
||||
\citation{bartle}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Adaptive Mario in action}}{1}}
|
||||
\newlabel{img:mario-ex}{{1}{1}}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces Flow State: Game Difficulty vs. Player Skill}}{2}}
|
||||
\newlabel{img:flow-state}{{2}{2}}
|
||||
\bibstyle{unsrt}
|
||||
\bibdata{p3refs}
|
||||
\bibcite{bartle}{1}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces A Simple Overland Level Grammar}}{3}}
|
||||
\newlabel{img:stochastic-grammar}{{3}{3}}
|
||||
\bibstyle{unsrt}
|
||||
\bibdata{p3refs}
|
||||
\bibcite{zimmerman}{1}
|
||||
\bibcite{bartle}{2}
|
||||
|
||||
@@ -1,8 +1,13 @@
|
||||
\begin{thebibliography}{1}
|
||||
|
||||
\bibitem{zimmerman}
|
||||
K.~Salen and E.~Zimmerman.
|
||||
\newblock {\em Rules of Play}.
|
||||
\newblock The MIT Press, 2004.
|
||||
|
||||
\bibitem{bartle}
|
||||
Richard Bartle.
|
||||
\newblock Hearts, {Clubs}, {Diamonds}, {Spades}: {Players Who} suit {MUDs}.
|
||||
\newblock Hearts, clubs, diamonds, spades: Players who suit {MUDs}.
|
||||
\newblock http://aigamedev.com/open/interviews/mario-ai/, 1996.
|
||||
\newblock [Online; accessed 18-March-2012].
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
This is pdfTeX, Version 3.1415926-2.3-1.40.12 (MiKTeX 2.9) (preloaded format=pdflatex 2012.1.11) 18 MAR 2012 15:01
|
||||
This is pdfTeX, Version 3.1415926-2.3-1.40.12 (MiKTeX 2.9) (preloaded format=pdflatex 2012.1.11) 18 MAR 2012 18:45
|
||||
entering extended mode
|
||||
**D:/workspace/cs8803p3/writeup/CS8803_P3.tex
|
||||
(D:/workspace/cs8803p3/writeup/CS8803_P3.tex
|
||||
@@ -175,10 +175,11 @@ File: mario_example.png Graphic file (type png)
|
||||
<use mario_example.png>
|
||||
Package pdftex.def Info: mario_example.png used on input line 23.
|
||||
(pdftex.def) Requested size: 216.80669pt x 162.60416pt.
|
||||
File: mario_example.png Graphic file (type png)
|
||||
|
||||
<use mario_example.png>
|
||||
Package pdftex.def Info: mario_example.png used on input line 24.
|
||||
<mario_underground.png, id=2, 642.4pt x 481.8pt>
|
||||
File: mario_underground.png Graphic file (type png)
|
||||
<use mario_underground.png>
|
||||
Package pdftex.def Info: mario_underground.png used on input line 24.
|
||||
(pdftex.def) Requested size: 216.80669pt x 162.60416pt.
|
||||
Missing character: There is no à in font cmr10!
|
||||
Missing character: There is no ¡ in font cmr10!
|
||||
@@ -186,12 +187,12 @@ Missing character: There is no
|
||||
Missing character: There is no in font cmr10!
|
||||
Missing character: There is no à in font cmr10!
|
||||
Missing character: There is no ¡ in font cmr10!
|
||||
<flow-state.png, id=2, 305.34074pt x 223.43475pt>
|
||||
File: flow-state.png Graphic file (type png)
|
||||
|
||||
<use flow-state.png>
|
||||
<flow-state.png, id=3, 305.34074pt x 223.43475pt>
|
||||
File: flow-state.png Graphic file (type png)
|
||||
<use flow-state.png>
|
||||
Package pdftex.def Info: flow-state.png used on input line 36.
|
||||
(pdftex.def) Requested size: 216.80669pt x 158.65341pt.
|
||||
(pdftex.def) Requested size: 271.0125pt x 198.33125pt.
|
||||
|
||||
|
||||
LaTeX Warning: `!h' float specifier changed to `!ht'.
|
||||
@@ -199,32 +200,28 @@ LaTeX Warning: `!h' float specifier changed to `!ht'.
|
||||
[1
|
||||
|
||||
{C:/ProgramData/MiKTeX/2.9/pdftex/config/pdftex.map} <D:/workspace/cs8803p3/wri
|
||||
teup/mario_example.png>]
|
||||
teup/mario_example.png> <D:/workspace/cs8803p3/writeup/mario_underground.png (P
|
||||
NG copy)>]
|
||||
LaTeX Font Info: External font `cmex10' loaded for size
|
||||
(Font) <7> on input line 61.
|
||||
LaTeX Font Info: External font `cmex10' loaded for size
|
||||
(Font) <5> on input line 61.
|
||||
[2 <D:/workspace/cs8803p3/writeup/flow-state.png>]
|
||||
<StochasticGrammar.png, id=15, 438.438pt x 222.8325pt>
|
||||
<StochasticGrammar.png, id=16, 438.438pt x 222.8325pt>
|
||||
File: StochasticGrammar.png Graphic file (type png)
|
||||
|
||||
<use StochasticGrammar.png>
|
||||
Package pdftex.def Info: StochasticGrammar.png used on input line 83.
|
||||
Package pdftex.def Info: StochasticGrammar.png used on input line 84.
|
||||
(pdftex.def) Requested size: 406.51875pt x 206.62346pt.
|
||||
(D:\workspace\cs8803p3\writeup\CS8803_P3.bbl
|
||||
Underfull \hbox (badness 10000) in paragraph at lines 4--8
|
||||
[]\OT1/cmr/m/n/10 Richard Bar-tle. Hearts, Clubs, Di-a-monds, Spades: Play-ers
|
||||
Who suit MUDs.
|
||||
[]
|
||||
|
||||
[3 <D:/workspace/cs8803p3/writeup/StochasticGrammar.png>]) [4]
|
||||
[3 <D:/workspace/cs8803p3/writeup/StochasticGrammar.png>] (D:\workspace\cs8803
|
||||
p3\writeup\CS8803_P3.bbl) [4]
|
||||
(D:\workspace\cs8803p3\writeup\CS8803_P3.aux) )
|
||||
Here is how much of TeX's memory you used:
|
||||
1905 strings out of 494045
|
||||
26059 string characters out of 3145969
|
||||
87712 words of memory out of 3000000
|
||||
5212 multiletter control sequences out of 15000+200000
|
||||
7458 words of font info for 27 fonts, out of 3000000 for 9000
|
||||
1913 strings out of 494045
|
||||
26215 string characters out of 3145969
|
||||
87715 words of memory out of 3000000
|
||||
5218 multiletter control sequences out of 15000+200000
|
||||
7804 words of font info for 28 fonts, out of 3000000 for 9000
|
||||
715 hyphenation exceptions out of 8191
|
||||
27i,7n,32p,875b,220s stack positions out of 5000i,500n,10000p,200000b,50000s
|
||||
<C:/Program Files (x86)/MiKTeX 2
|
||||
@@ -233,10 +230,11 @@ Here is how much of TeX's memory you used:
|
||||
onts/type1/public/amsfonts/cm/cmr10.pfb><C:/Program Files (x86)/MiKTeX 2.9/font
|
||||
s/type1/public/amsfonts/cm/cmr12.pfb><C:/Program Files (x86)/MiKTeX 2.9/fonts/t
|
||||
ype1/public/amsfonts/cm/cmr17.pfb><C:/Program Files (x86)/MiKTeX 2.9/fonts/type
|
||||
1/public/amsfonts/cm/cmtt10.pfb>
|
||||
Output written on CS8803_P3.pdf (4 pages, 130421 bytes).
|
||||
1/public/amsfonts/cm/cmti10.pfb><C:/Program Files (x86)/MiKTeX 2.9/fonts/type1/
|
||||
public/amsfonts/cm/cmtt10.pfb>
|
||||
Output written on CS8803_P3.pdf (4 pages, 153381 bytes).
|
||||
PDF statistics:
|
||||
42 PDF objects out of 1000 (max. 8388607)
|
||||
47 PDF objects out of 1000 (max. 8388607)
|
||||
0 named destinations out of 1000 (max. 500000)
|
||||
16 words of extra memory for PDF output out of 10000 (max. 10000000)
|
||||
21 words of extra memory for PDF output out of 10000 (max. 10000000)
|
||||
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -21,7 +21,7 @@ The authors of Adaptive Mario use several PCG techniques to develop a simple pla
|
||||
\begin{figure}[h!]
|
||||
\centering
|
||||
\includegraphics[width=0.4 \textwidth]{mario_example.png}
|
||||
\includegraphics[width=0.4 \textwidth]{mario_example.png}
|
||||
\includegraphics[width=0.4 \textwidth]{mario_underground.png}
|
||||
\caption{Adaptive Mario in action}
|
||||
\label{img:mario-ex}
|
||||
\end{figure}
|
||||
@@ -29,11 +29,11 @@ The authors of Adaptive Mario use several PCG techniques to develop a simple pla
|
||||
As shown in Figure \ref{img:mario-ex}, the conceptual goal is that players with different play styles and skill levels should have a very different gameplay experience from the moment the level begins. Of course, the very first time Adaptive Mario is run in a new environment, a specific level is presented based on an a priori model of an 'average' player.
|
||||
|
||||
\section*{Related Works}
|
||||
The essential goal of Adaptive Mario is to facilitate flow state by giving the player sufficient challenge and variety without rapidly becoming too difficult. As defined by Mihály Csíkszentmihályi, ``flow'' is the state of total immersion and cocentration in which the player believes he or she is overcoming obstacles by the narrowest of margins. As shown in Figure \ref{img:flow-state}, achieving this state involves a delicate balance between the difficulty of the game and the player's degree of skill. If the game is too hard, the player will become frustrated. On the other hand, most players will become bored if the game is too easy.
|
||||
The essential goal of Adaptive Mario is to facilitate flow state by giving the player sufficient challenge and variety without rapidly becoming too difficult. As defined by Mihály Csíkszentmihályi, according to Salen and Zimmerman \cite{zimmerman}, ``flow'' is the state of total immersion and cocentration in which the player believes he or she is overcoming obstacles by the narrowest of margins. As shown in Figure \ref{img:flow-state}, achieving this state involves a delicate balance between the difficulty of the game and the player's degree of skill. If the game is too hard, the player will become frustrated. On the other hand, most players will become bored if the game is too easy.
|
||||
|
||||
\begin{figure}[h!]
|
||||
\centering
|
||||
\includegraphics[width=0.4 \textwidth]{flow-state.png}
|
||||
\includegraphics[width=0.5 \textwidth]{flow-state.png}
|
||||
\caption{Flow State: Game Difficulty vs. Player Skill}
|
||||
\label{img:flow-state}
|
||||
\end{figure}
|
||||
@@ -61,13 +61,14 @@ In addition to assigning a player profile, the ProfileMatcher assesses the playe
|
||||
\begin{tabular}{ | l | l | l | }
|
||||
\hline
|
||||
Score & Skill Level & Attributes\\ \hline
|
||||
20\% & Novice & low situational awareness, reflexive responses\\ \hline
|
||||
40\% & Beginner & uses judgement to react to challenges, limited awareness \\ \hline
|
||||
60\% & Competent & copies with multiple challenges, uses sound strategy \\ \hline
|
||||
80\% & Proficient & makes rapid decisions, prioritzes goals \\ \hline
|
||||
100\% & Expert & intuitively solves challenges, pushes boundaries \\ \hline
|
||||
20\% & Novice & Low situational awareness, Reflexive responses\\ \hline
|
||||
40\% & Beginner & Uses judgement to react to challenges, Limited awareness \\ \hline
|
||||
60\% & Competent & Copes with multiple challenges, Uses sound strategy \\ \hline
|
||||
80\% & Proficient & Makes rapid decisions, Prioritzes goals \\ \hline
|
||||
100\% & Expert & Intuitively solves challenges, Pushes limits \\ \hline
|
||||
\end{tabular}
|
||||
\end{table}
|
||||
|
||||
\subsection*{Level Archetype Selection}
|
||||
The Level Archetype selector picks an overall macro-form for the level based on the player's profile and skill level. As there are five categories and only three distinct environments in the Inifinite Mario engine (Overland, Underground and Castle), different profiles cause similar Level Archetypes to be generated. However, this does provide the opportunity to indicate to the player what types of challenges lie ahead and may serve to enhance immersion.
|
||||
|
||||
@@ -88,8 +89,38 @@ Given a suitable array of predefined LevelComponent types, each of which corresp
|
||||
One potential pitfall of using a CFG for this purpose is that the generated level may be over-specified (containing too many elements) and hence too crowded, or under-specified and nearly empty. To mitigate this problem, a fitness evaluation function iteratively invokes the LevelGrammar, rejecting proposed levels with too many or too few LevelComponents.
|
||||
|
||||
\subsection*{Challenge Components: Micro-structure}
|
||||
Challenge components are small puzzles that lend variety to the randomized levels and serve a dual purpose in allowing Adaptive Mario to fit the player's preferred style.
|
||||
|
||||
First, by providing ever more difficulty scenarios, challenge is mainted. This trend also prevents a feedback loop wherein a player jumps frequently because a level contains many platforms, which causes the next level to contain many jumping puzzles and so on.
|
||||
|
||||
Second, specific can could be chosen to allow Adaptive Mario to discriminate between playstyles when a player's metrics are borderline between two typical profiles. Thus a player who is both a Runner and a Jumper could be given a very difficult jumping challenge to cause the metrics to trend one way or the other. However, this advanced adaptation was not implemented during this iteration of the project.
|
||||
|
||||
\begin{table}[ht]
|
||||
\centering
|
||||
\begin{tabular}{ | l | l | l | }
|
||||
\hline
|
||||
Difficulty & Challenge Component & Description \\ \hline
|
||||
1 & Coin Dive & Some empty blocks, coins line the path to the ground.\\ \hline
|
||||
2 & Free power-up & Sets the player up to get a power-up with little or no challenge.\\ \hline
|
||||
3 & Straight & A straight stretch of land with maybe one enemy and maybe some coins or blocks\\ \hline
|
||||
4 & Single Pit & A pit that the user must jump over; rocks on either side.\\ \hline
|
||||
5 & Bowling Alley & A red koopa right before a long line of enemies. Kill them all!\\ \hline
|
||||
6 & Cannon Line & A stack of 2 or 3 cannons.\\ \hline
|
||||
7 & Maze & A maze of indestructible blocks, with enemies.\\ \hline
|
||||
8 & Lemming Trap & A little pit with a few enemies that jump down into it.\\ \hline
|
||||
9 & Platform Jump & A bunch of platforms to jump between.\\ \hline
|
||||
10 & Pipe Jump & A bunch of thin pipes to jump between.\\ \hline
|
||||
\end{tabular}
|
||||
\end{table}
|
||||
|
||||
\section*{Evaluation}
|
||||
Several challenges were overcome during the implementation of Adaptive Mario.
|
||||
|
||||
From a technical standpoint, finding a Java-compatible rule engine (Drools) was a time-consuming effort, mainly due to the large number of third-party JAR dependencies. Sufficient time was invested in this endeavor before integration was ultimately successful that the role of the rules engine was minimized during the design process. Consequently, only basic alterations are made to the random level structure based on the player profile.
|
||||
|
||||
Randomized level generation using a stochastic CFG was largely successful, however. Not only can this very simple grammar generate a variety of levels, implementation of a parser for the rule set allows a designer to make meaningful content changes without the need to recompile source code. Such grammars are limited of course - integration between the top-down macro generation code and bottom-up Challenge Component code was a challenge, as the LevelGrammar module lacks the capability to plan ahead and avoid akward juxtapositions of LevelComponents.
|
||||
|
||||
While the arbitrary scoring and single-iteration feedback loop of the PlayerProfile module functions as designed, the core PlayerProfile model reperesents the most likely area of improvement in the next version of Adaptive Mario. Because small changes to the scoring weights can make a great difference in determining which level-building rules are ultimately invoked, better tuning of these parameters is vital. Consequently, this package would benefit greatly from use of Artificial Neural Networks or Bayesian Inference to discover more accurate scoring values.
|
||||
|
||||
\section*{Conclusion}
|
||||
It seems clear from the results that the framework of Adaptive Mario has the potential to guide the player toward his or her own idealized version of a platform game, while still presenting a reasonable level of challenge. Not only does difficulty scale in proportion to the player's performance (preventing frustration), but care is taken in the design of the level grammar to avoid repeatedly giving the player 'more of the same' (leading to boredom). One potential issue exists, however - it is possible that some players simply are not fans of the platform jumper genre!
|
||||
|
||||
@@ -30,8 +30,15 @@
|
||||
|
||||
@MISC{bartle,
|
||||
AUTHOR = "Richard Bartle",
|
||||
TITLE = "Hearts, {Clubs}, {Diamonds}, {Spades}: {Players Who} suit {MUDs}",
|
||||
TITLE = "Hearts, Clubs, Diamonds, Spades: Players Who suit {MUDs}",
|
||||
HOWPUBLISHED = "http://aigamedev.com/open/interviews/mario-ai/",
|
||||
YEAR = 1996,
|
||||
NOTE = "[Online; accessed 18-March-2012]"
|
||||
}
|
||||
|
||||
@BOOK{zimmerman,
|
||||
title = {Rules of Play},
|
||||
author = {Salen, K. and Zimmerman, E.},
|
||||
publisher = {The MIT Press},
|
||||
year = 2004
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
This is pdfTeX, Version 3.1415926-2.3-1.40.12 (MiKTeX 2.9) (preloaded format=pdftex 2012.1.30) 18 MAR 2012 14:06
|
||||
entering extended mode
|
||||
**D:/workspace/cs8803p3/writeup/p3refs.bib
|
||||
(D:/workspace/cs8803p3/writeup/p3refs.bib)
|
||||
*
|
||||
! Emergency stop.
|
||||
<*> D:/workspace/cs8803p3/writeup/p3refs.bib
|
||||
|
||||
End of file on the terminal!
|
||||
|
||||
! ==> Fatal error occurred, no output PDF file produced!
|
||||
Reference in New Issue
Block a user