<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">\subtitle{\textbf{Lab} - Game Design Hack}
\date{Monday (PM), 14 May 2018}

\begin{document}
	
	\begin{frame}
	\titlepage
	\end{frame}

	\section{Intro}
	
	\begin{frame}{CE810 game engine}
		\begin{itemize}
			\item Remember we mentioned that we built you a game engine...
			\item well, here it is.
		\end{itemize}
	\end{frame}
	
	\begin{frame}{Limitations}
		\begin{itemize}
			\item Games take place on a hex grid
			\item Games are turn-based
			\item No randomness
		\end{itemize}

		We originally designed it for Civilization style games, but it's much more general than that.
	\end{frame}
	
	\section{Game Engine}
	
	\begin{frame}{Key Parts}
		\begin{itemize}
			\item A game has Entity Types, Resources and Terrain
			\item Entity types have actions, costs and properties
			\item Resources and Terrain make up the maps
			\item Victory conditions tell you how to win (or lose)
		\end{itemize}
	\end{frame}
	
	\begin{frame}{Entity Types}
		\begin{itemize}
			\item Entity Types can extend other types
			\item Used to build entities
			\item Every entity has a type
		\end{itemize}
	\end{frame}

	\begin{frame}{Entities}
		\begin{itemize}
			\item Have an entity type
			\item Has properties
		\end{itemize}
	\end{frame}
	
	\section{Example - Hexxagon}

	\begin{frame}{Hexxagon}
		\begin{center}
			\includegraphics[width=0.8\linewidth]{images/gd_hexxagon}
		\end{center}
	\end{frame}
	
	\begin{frame}{Hexxagon}
		\begin{itemize}
			\item Entity types: piece, piece-p1, piece-p2
			\item Terrain types: board
			\item Actions: jump and clone
			\item Resources: ticks (used to permit moving only one piece)
			\item Victory conditions: LastManStanding, MostPiecesLock
		\end{itemize}
	\end{frame}

\begin{frame}[fragile]{Entity Definition}
	
\begin{Verbatim}
{
  "name": "piece", - it's called 'piece'
  "properties": {
    "ter-playzone": 1, - it can 'walk' on playzone tiles
    "health": 1 - it has 1 health (things with no health die)
  },
  "_actions":[
    "Jump[tick]", - Jump Action (defined in Java)
    "Clone[tick]" - Clone action (defined in Java)
  ]
},
\end{Verbatim}
	
\end{frame}

	\section{Patterns}
	
	\begin{frame}{Movement Lock}
		Allow the player to only move one piece on their go
	
		\begin{itemize}
			\item Resource: time
			\item Only allow a move if the resource &lt; current tick
			\item After a move is made, update the resource to tick + 1
		\end{itemize}
	\end{frame}

	\begin{frame}{Timers}
		You can define a timer by doing the following:
		
		\begin{itemize}
			\item Create an automatic action that performs the effect that you'd like to achieve.
			\item Set the requirements of this action to be timeProperty &gt;= timeRequired
			\item Create an automatic action that generates 1 timeProperty
			\item Define the automatic actions as [generateAction, doneAction]
		\end{itemize}
	\end{frame}
	
	
\end{document}
</pre></body></html>