Compare commits

..

2 Commits

Author SHA1 Message Date
f9eb278c33 Minor improvements 2025-01-14 00:32:55 +01:00
87bcd39cf1 memory management and minor improvements 2025-01-13 23:57:23 +01:00

View File

@ -13,6 +13,9 @@
%\usepackage{xcolor} %\usepackage{xcolor}
%\definecolor{codecolor}{HTML}{FFC300} %\definecolor{codecolor}{HTML}{FFC300}
\usepackage[super]{nth}
\usepackage{csquotes}
\title{VEGO-Engine} \title{VEGO-Engine}
\subtitle{A student project} \subtitle{A student project}
\author{Benedikt, Nicole} \author{Benedikt, Nicole}
@ -39,7 +42,7 @@
\subsection{The project} \subsection{The project}
\begin{frame}{The assigment} \begin{frame}{The assigment}
\begin{itemize} \begin{itemize}
\item "Development of a fantasy game console" (similar to Pico8) \item \enquote{Development of a fantasy game console} (similar to Pico8)
\item For simple Arcade like games (think Pong/Space Invaders) \item For simple Arcade like games (think Pong/Space Invaders)
\item Goal was to teach how to manage and program within a larger project \item Goal was to teach how to manage and program within a larger project
\end{itemize} \end{itemize}
@ -47,22 +50,22 @@
\begin{frame}{Our interpretation and goals} \begin{frame}{Our interpretation and goals}
\begin{itemize} \begin{itemize}
\item Started out with a Minigame \item Started out with a Minigame
\item Realized we can split it into "Engine" and "Game Specific" Content \item Realized we can split it into \enquote{Engine} and \enquote{Game Specific} Content
\end{itemize} \end{itemize}
\Rightarrow We could then build on what we have while simultaneously having an implementation using the engine \Rightarrow We could then build on what we have while simultaneously having an implementation using the engine
Smart right :D ?... Smart right :D ?\dots
\end{frame} \end{frame}
\begin{frame} \begin{frame}
What awaited us was about the equivalent of trying to neatly sort single spaghetti strands next to each other after What awaited us was about the equivalent of trying to neatly sort single spaghetti strands next to each other after
it has previously been generously mixed with some *juicy* pasta sauce. it has previously been generously mixed with some *juicy* pasta sauce.
In other words, quite a messy endeavor... In other words, quite a messy endeavor\dots
\end{frame} \end{frame}
\begin{frame}{Roadmap} \begin{frame}{Roadmap}
3st Semester - learning SDL \nth{3} Semester - learning SDL
4th/5th Semester - making the engine \nth{4} and \nth{5} Semester - making the engine
\end{frame} \end{frame}
\section{Learnings} \section{Learnings}
@ -86,6 +89,8 @@ Hate
\item git-modules - do not bloat contributions \item git-modules - do not bloat contributions
} }
\subsection{ECS}
% ECS slides, split into 3 sections
\begin{frame}[allowframebreaks, fragile]{We made an ECS} \begin{frame}[allowframebreaks, fragile]{We made an ECS}
Why an ECS - Entity Component System? Why an ECS - Entity Component System?
\begin{itemize} \begin{itemize}
@ -98,7 +103,7 @@ Why an ECS - Entity Component System?
\note[itemize]{ \note[itemize]{
\item Reusable code mainly on engine side, but also applies to game dev components \item Reusable code mainly on engine side, but also applies to game dev components
\item plug and play mostly an advantage for game dev - i.e. "I want physics, here are physics" \item plug and play mostly an advantage for game dev - i.e. "I want physics, here are physics"
\item \say{video series} - tease issue of abruptly ending \item \enquote{video series} - tease issue of abruptly ending
\item Components usually only have data, and are querried by the system (hence ecS) \item Components usually only have data, and are querried by the system (hence ecS)
\item System part used for rendering \item System part used for rendering
} }
@ -149,6 +154,8 @@ projectile.addComponent<ColliderComponent>(0.6f);
\end{minted} \end{minted}
\end{frame} \end{frame}
\note{mention: this ease of use is our goal} \note{mention: this ease of use is our goal}
\subsection{Memory Management}
\begin{frame}[allowframebreaks, fragile]{Memory Management} \begin{frame}[allowframebreaks, fragile]{Memory Management}
\begin{minted}[linenos,autogobble]{c++} \begin{minted}[linenos,autogobble]{c++}
class Manager class Manager
@ -167,12 +174,20 @@ private:
\end{minted} \end{minted}
\framebreak \framebreak
Does that solve memory management? Not quite: Does that solve memory management? Not quite:
\begin{itemize} \begin{itemize}
\item Missing separation of concern - manager also propagates update call \item Missing separation of concern - manager also propagates update call
\item What if I want to "save" existing entities \item Does not allow "saving" existing entities
\item Everything is an entity
\end{itemize} \end{itemize}
Architectural issues like this are hard to solve this late in development
However it does solve memory management\footnote{For \texttt{Entity} classes only, there are some leaks due to bad usage of the \texttt{SDL\_mixer} library}
\end{frame}
\note[itemize]{
\item \enquote{Perfect example of why our ECS is not ideal}
\item scene management - would replace manager - however manager is too widely used - break API consistency
\item classic example of good on surface level only for a beginner; transition to more such examples
}
\end{frame} \end{frame}
%code example %code example