diff options
Diffstat (limited to '2022-09-24-190300_Nuki1Retrospective.html')
-rw-r--r-- | 2022-09-24-190300_Nuki1Retrospective.html | 117 |
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> |