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}
%\definecolor{codecolor}{HTML}{FFC300}
\usepackage[super]{nth}
\usepackage{csquotes}
\title{VEGO-Engine}
\subtitle{A student project}
\author{Benedikt, Nicole}
@ -39,7 +42,7 @@
\subsection{The project}
\begin{frame}{The assigment}
\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 Goal was to teach how to manage and program within a larger project
\end{itemize}
@ -47,22 +50,22 @@
\begin{frame}{Our interpretation and goals}
\begin{itemize}
\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}
\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}
\begin{frame}
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.
In other words, quite a messy endeavor...
In other words, quite a messy endeavor\dots
\end{frame}
\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}
\section{Learnings}
@ -86,6 +89,8 @@ Hate
\item git-modules - do not bloat contributions
}
\subsection{ECS}
% ECS slides, split into 3 sections
\begin{frame}[allowframebreaks, fragile]{We made an ECS}
Why an ECS - Entity Component System?
\begin{itemize}
@ -98,7 +103,7 @@ Why an ECS - Entity Component System?
\note[itemize]{
\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 \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 System part used for rendering
}
@ -149,6 +154,8 @@ projectile.addComponent<ColliderComponent>(0.6f);
\end{minted}
\end{frame}
\note{mention: this ease of use is our goal}
\subsection{Memory Management}
\begin{frame}[allowframebreaks, fragile]{Memory Management}
\begin{minted}[linenos,autogobble]{c++}
class Manager
@ -167,12 +174,20 @@ private:
\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
\item Does not allow "saving" existing entities
\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}
%code example