121 lines
2.5 KiB
TeX
121 lines
2.5 KiB
TeX
\documentclass[aspectratio=169]{beamer}
|
|
|
|
% pdfpc slides.pdf --notes=right
|
|
% comment out to disable notes
|
|
%\setbeameroption{show notes on second screen=right}
|
|
|
|
\usetheme{metropolis}
|
|
|
|
\usepackage{minted}
|
|
\setminted{fontsize=\footnotesize,samepage=true}
|
|
%\usepackage{xcolor}
|
|
%\definecolor{codecolor}{HTML}{FFC300}
|
|
|
|
\title{VEGO-Engine}
|
|
\subtitle{A student project}
|
|
\author{Benedikt, Nicole}
|
|
|
|
\begin{document}
|
|
|
|
\maketitle
|
|
\note{Tone: light hearted "What did we learn"}
|
|
|
|
\begin{frame}{Outline}
|
|
\tableofcontents
|
|
\end{frame}
|
|
|
|
\section{Context}
|
|
|
|
\subsection{The team}
|
|
\begin{frame}{Who are we?}
|
|
Hello, this us
|
|
|
|
We had help - 3 other students with similar experience
|
|
\end{frame}
|
|
\subsection{The project}
|
|
\begin{frame}{The assigment}
|
|
UAS Technikum Project
|
|
\end{frame}
|
|
\begin{frame}{Our interpretation and goals}
|
|
A cool engine
|
|
\end{frame}
|
|
\begin{frame}{Roadmap}
|
|
3st Semester - learning SDL
|
|
|
|
4th/5th Semester - making the engine
|
|
\end{frame}
|
|
|
|
\section{Learnings}
|
|
\subsection{Project environment}
|
|
|
|
\begin{frame}{Baby's first \texttt{CMakeLists.txt}}
|
|
\begin{itemize}
|
|
\item On UAS: Only ever Make or no project setup
|
|
\end{itemize}
|
|
\end{frame}
|
|
\begin{frame}{Visual Studio}
|
|
Hate
|
|
\end{frame}
|
|
\begin{frame}{How the \_ do I import a library?}
|
|
\begin{itemize}
|
|
\item git-modules
|
|
\end{itemize}
|
|
\end{frame}
|
|
\note[itemize]{
|
|
\item SDL is a library, static compile
|
|
\item git-modules - do not bloat contributions
|
|
}
|
|
|
|
\begin{frame}[allowframebreaks, fragile]{We made an ECS - almost?}
|
|
Why an ECS - Entity Component System?
|
|
\begin{itemize}
|
|
\item Encourages reusable code
|
|
\end{itemize}
|
|
\end{frame}
|
|
\begin{frame}[allowframebreaks, fragile]{Memory Management}
|
|
\begin{minted}[linenos,autogobble]{c++}
|
|
class Manager
|
|
{
|
|
public:
|
|
Entity& addEntity()
|
|
{
|
|
Entity* e = new Entity(*this);
|
|
std::unique_ptr<Entity> uPtr{ e };
|
|
this->entities.emplace_back(std::move(uPtr));
|
|
return *e;
|
|
}
|
|
private:
|
|
std::vector<std::unique_ptr<Entity>> entities;
|
|
}
|
|
\end{minted}
|
|
\framebreak
|
|
Does that solve memory management? Not quite:
|
|
|
|
\begin{itemize}
|
|
\item Missing separation of concern - manager also propagates update call
|
|
\item What if I want to "save" existing entities
|
|
\item Everything is an entity
|
|
\end{itemize}
|
|
\end{frame}
|
|
|
|
%code example
|
|
\begin{frame}[fragile]
|
|
\begin{minted}[linenos,autogobble]{c}
|
|
#include <stdio.h>
|
|
|
|
int main()
|
|
{
|
|
printf("Hello, World!");
|
|
return 0;
|
|
}
|
|
\end{minted}
|
|
\end{frame}
|
|
\begin{frame}
|
|
\begin{enumerate}
|
|
\item Eins
|
|
\item Zwei
|
|
\item Drei
|
|
\end{enumerate}
|
|
\end{frame}
|
|
|
|
\end{document} |