summaryrefslogtreecommitdiff
path: root/2022-09-24-190300_Nuki1Retrospective.html
diff options
context:
space:
mode:
authorpux <pux@raumdock.pux.dom>2022-09-24 21:03:20 +0200
committerpux <pux@raumdock.pux.dom>2022-09-24 21:03:20 +0200
commit4110d0041862acc9e8158b2d0a14ecbfc73e5074 (patch)
tree0815e78df44b303e7bdccc4fe2029431a2409a41 /2022-09-24-190300_Nuki1Retrospective.html
parent62d225966d2557aba42c4024a4fdf7d1241f804b (diff)
downloadpub-docs-4110d0041862acc9e8158b2d0a14ecbfc73e5074.tar.gz
pub-docs-4110d0041862acc9e8158b2d0a14ecbfc73e5074.tar.bz2
pub-docs-4110d0041862acc9e8158b2d0a14ecbfc73e5074.zip
nuki1
Diffstat (limited to '2022-09-24-190300_Nuki1Retrospective.html')
-rw-r--r--2022-09-24-190300_Nuki1Retrospective.html117
1 files changed, 117 insertions, 0 deletions
diff --git a/2022-09-24-190300_Nuki1Retrospective.html b/2022-09-24-190300_Nuki1Retrospective.html
new file mode 100644
index 0000000..e50f201
--- /dev/null
+++ b/2022-09-24-190300_Nuki1Retrospective.html
@@ -0,0 +1,117 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" lang xml:lang>
+<head>
+ <meta charset="utf-8" />
+ <meta name="generator" content="pandoc" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
+ <title>2022-09-24-190300_Nuki1Retrospective</title>
+ <style>
+ code{white-space: pre-wrap;}
+ span.smallcaps{font-variant: small-caps;}
+ span.underline{text-decoration: underline;}
+ div.column{display: inline-block; vertical-align: top; width: 50%;}
+ div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
+ ul.task-list{list-style: none;}
+ .display.math{display: block; text-align: center; margin: 0.5rem auto;}
+ </style>
+ <style type="text/css">* {
+color: white;
+
+font-family: Arial;
+background-color: transparent;
+}
+html { background-color: #16161d; }
+a:link {color: dodgerblue}
+a:visited {color: dodgerblue}
+a:hover {color: dodgerblue}
+a:active {color: dodgerblue}
+img {padding: 20px}
+code {background-color: #555555; font-family: Courier New; font-size: smaller; background-clip: padding-box; border: 0px solid; display: inline-block; margin: 0px;}
+</style>
+ <!--[if lt IE 9]>
+ <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
+ <![endif]-->
+</head>
+<body>
+<h1 id="nuki1retrospective">2022-09-24-190300_Nuki1Retrospective</h1>
+<h2 id="nuki1-in-retrospective-dev-log">NUKI1 in Retrospective /
+dev-log</h2>
+<p>See here <a href="https://baden.dev/p/nuki1">NUKI1 - Nuki and I
+explore the Galaxy - on baden.dev</a></p>
+<h3 id="quick-introduction">Quick introduction</h3>
+<p><code>NUKI1</code> or <code>Nuki and I explore the Galaxy</code> is a
+puzzle-platformer mix, and my first commercially released game.</p>
+<p>I tried to create a new unique genre-mix (in the somehow worn out
+platformer genre) implementing ideas that lingered in my mind for years,
+a lot of those inspired by some good old DOS games I played.</p>
+<h3 id="concept">Concept</h3>
+<p>At first I wanted to make a top-down puzzler game, but felt that I
+needed more “action” and “physics” like advanced and precise platformer
+movement and artillery-game and rocket movement.</p>
+<p>Also, an inventory system with object interaction like in a RPG and
+puzzles that you need to solve in real life (on paper/via web
+lookup/etc.) were on my list.</p>
+<p>At the end I decided to make the game in 10 unique levels and
+integrate all of my crazy genre-mix-ideas.</p>
+<h3 id="implementation">Implementation</h3>
+<p>I started the game in Python only using tkinter as a “side-project”,
+when I hit performance problems and coincidentally bought an ODROID GO
+SUPER device for cheap.</p>
+<p>I thought it would be nice to support the ODROID, and from then on I
+rewrote the game in C++ with ODROID support in mind (wasn’t far
+anyways).</p>
+<p>I only wanted to use minimal dependencies, so it was SDL and
+tinyxml2, the rest of the game I wanted to write completely on my own,
+since that’s where the fun lies! Writing physics/vector/math/… classes
+and basically the entire engine on my own!</p>
+<h3 id="programming">Programming</h3>
+<h4 id="not-so-fun">Not so fun</h4>
+<ul>
+<li>Collision detection and handling
+<ul>
+<li>Wanted to have “pixel-perfect” collisions using AABB (Axis-Aligned
+Bounding Box) collisions with some second check of “penetration”, which
+meant looking at how deep until the first row has a pixel that overlaps
+with other entity.
+<ul>
+<li>Getting this “okay” and also fast enough on the ODROID was quite
+challenging</li>
+</ul></li>
+</ul></li>
+<li>Music: I LOVE music and someday I hope I’ll make something, for now
+I didn’t want to use third party music, so…</li>
+</ul>
+<h4 id="the-most-fun">The most fun</h4>
+<ul>
+<li><p>Physics</p>
+<ul>
+<li>Movement
+<ul>
+<li>Jump/Double-jump</li>
+<li>Jetpacking</li>
+</ul></li>
+<li>Trajectory (Bow, Projectiles)
+<ul>
+<li>Recoil gun</li>
+</ul></li>
+<li>Spaceship movement</li>
+</ul></li>
+<li><p>Implementing the “ProNav” algorithm (see Wikipedia:
+https://en.wikipedia.org/wiki/Proportional_navigation) for homing
+missiles, especially after having the math/vector/linear algebra classes
+done</p></li>
+<li><p>Item usage / inventory usage</p>
+<ul>
+<li>equipping items and have them change stuff in the game world</li>
+</ul></li>
+</ul>
+<h3 id="stats">Stats</h3>
+<p>All in all, with rewriting a huge part of the game (while getting
+better at C++), a lot of pixel painting and planning, I estimate around
+1500 - 2500 hrs of work for everything.</p>
+<p>A lof of time was lost in the first Py version, me getting better in
+C++ and rewriting a lot of stuff.</p>
+<h3 id="download">Download</h3>
+<p><a href="https://baden.dev/p/nuki1">https://baden.dev/p/nuki1</a></p>
+</body>
+</html>
in each repos: see "about"-tab (if existing) for more details / README.
mailto contact at omeckman dot net
all timestamps in UTC (German winter time: UTC+01:00, summer time: UTC+02:00)
dark theme is a modded version of: https://gist.github.com/Yoplitein/f4b671a2ec70c9e743fa