1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
---
Author: pux
Tags: nuki1 nuki gamedev
Language: english
---
# 2022-09-24-190300_Nuki1Retrospective
## NUKI1 in Retrospective / dev-log
See here [NUKI1 - Nuki and I explore the Galaxy - on baden.dev](https://baden.dev/p/nuki1)
### Quick introduction
```NUKI1``` or ```Nuki and I explore the Galaxy``` is a puzzle-platformer mix, and my first commercially released game.
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.
### Concept
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.
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.
At the end I decided to make the game in 10 unique levels and integrate all of my crazy genre-mix-ideas.
### Implementation
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.
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).
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!
### Programming
#### Not so fun
- Collision detection and handling
- 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.
- Getting this "okay" and also fast enough on the ODROID was quite challenging
- Music: I LOVE music and someday I hope I'll make something, for now I didn't want to use third party music, so...
#### The most fun
- Physics
- Movement
- Jump/Double-jump
- Jetpacking
- Trajectory (Bow, Projectiles)
- Recoil gun
- Spaceship movement
- 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
- Item usage / inventory usage
- equipping items and have them change stuff in the game world
### Stats
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.
A lof of time was lost in the first Py version, me getting better in C++ and rewriting a lot of stuff.
### Download
[https://baden.dev/p/nuki1](https://baden.dev/p/nuki1)
|