Compare commits
No commits in common. "1b54fc41697ee96ce4a27882c3dade1e02b06e67" and "c42c26d30eca608e74a1783f2ca5dc4ab0fa7b4b" have entirely different histories.
1b54fc4169
...
c42c26d30e
Before Width: | Height: | Size: 175 KiB |
Before Width: | Height: | Size: 829 KiB |
Before Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 4.9 KiB |
Before Width: | Height: | Size: 8.6 KiB |
Before Width: | Height: | Size: 44 KiB |
Before Width: | Height: | Size: 7.6 KiB |
Before Width: | Height: | Size: 7.6 KiB |
@ -33,7 +33,6 @@ These are in no particular order, just links to sites I highly recommend:
|
||||
* <https://www.stevestreeting.com/> - Unreal and general gamedev tips from Steve Streeting, creator of [Ogre](https://www.ogre3d.org/), [Sourcetree](https://sourcetreeapp.com/) and others.
|
||||
* <https://grumpygamer.com/> - Ron Gilbert (Monkey Island, etc).
|
||||
* <https://nivrig.com/> - Games by John Girvin.
|
||||
* <https://runevision.com/> - Really interesting discussions of procgen tech, game design, and more.
|
||||
* <https://www.ascorbius.com/> - Elite Dangerous story videos and general muppetry from an awesome chap.
|
||||
* <https://glassbottomgames.com/> - SkateBIRD and more.
|
||||
* <https://www.stevehammond.org/> - Formerly of DMA design, writing and UFOs.
|
||||
|
@ -1,189 +0,0 @@
|
||||
|
||||
# Project Shinar: A Bit of History
|
||||
|
||||
## The original inspiration
|
||||
|
||||
Cast your mind back if you will, dear reader, to the heady days of 1991[^1].
|
||||
The Soviet Union collapsed, the first Gulf War ended, the World Wide Web
|
||||
was released outside CERN to other research institutions, and the first website
|
||||
ever was published. Amidst all of these and many other huge events, one
|
||||
event in particular had an impact on my young self that may be responsible
|
||||
for where I am today: this was the year my brothers and I got an [Amiga 500](https://en.wikipedia.org/wiki/Amiga_500)
|
||||
for Christmas.
|
||||
|
||||
We were pretty late to the Amiga really, but my family weren't exactly well
|
||||
off and the Amiga wasn't cheap. It took some saving to buy the system. As a
|
||||
family we'd gone to a small shop called Stewart Electronics on Penny Meadow
|
||||
in Ashton-under-Lyne[^2], and we brought the new computer home on a rattly
|
||||
old bus while we poured over the box. The set we got came with a bundle of
|
||||
games[^3], and one of those games was Tower of Babel.
|
||||
|
||||
Tower of Babel had been released the year before for the Amiga, programmed by
|
||||
Pete Cooke and published by Rainbird Software, a label of [MicroProse](https://en.wikipedia.org/wiki/MicroProse).
|
||||
It was effectively a port of an Atari ST game, so it didn't really take
|
||||
full advantage of the Amiga's capabilities - with the perspective provided
|
||||
by many years of distance, it is pretty obvious that the sound effects are
|
||||
basic and crude, the graphics are at best functional, and the framerate
|
||||
on a stock A500 was... not great.
|
||||
|
||||
That said, coming from a [ZX Spectrum 128](https://en.wikipedia.org/wiki/ZX_Spectrum#ZX_Spectrum_128)
|
||||
it blew us away: the graphics, sound, and speed _were_ way ahead of anything
|
||||
we were used to. ToB was played a lot to begin with, in part because it was a fun puzzle
|
||||
game, but perhaps more so because it included a level editor! We could build
|
||||
our own levels and challenge each other to finish them - always a good source of
|
||||
fun between brothers (or arguments anyway). Inevitably it fell by the wayside
|
||||
as more games were acquired, but even now I still have a copy of ToB in my
|
||||
WinUAE install.
|
||||
|
||||
## So, what was it then?
|
||||
|
||||
The name of comes from a somewhat strained attempt at providing the
|
||||
background for the game: the construction of the Tower of Babel attracts the
|
||||
attention of passing aliens who leave three robots to help the Shinarians
|
||||
with their work on the Tower. Human nature being what it is, things go
|
||||
pear-shaped, and the humans turn on the robots. The player controls the three
|
||||
robots as they attempt to traverse levels (called 'towers') full of traps,
|
||||
puzzles, and creatures so they can collect their power supplies and escape.
|
||||
|
||||
{ width=320 }
|
||||
{ width=320 }
|
||||
|
||||
Leaving dubious biblical references to one side, the game itself has you controlling
|
||||
the imaginatively named "Zapper", "Pusher", and "Grabber" robots: Zapper has
|
||||
a laser beam you use to blow things up, Pusher has a repeller beam to push
|
||||
things away from it, while Grabber has a tractor beam to collect the
|
||||
all-important power supplies and turn on a few different devices around the
|
||||
towers.
|
||||
|
||||
Tower Of Babel's supplied 'towers' are split into 13 groups of 9 towers, each of
|
||||
which puts you in control of one, two, or three robots. Each level has varying
|
||||
objectives - you might need to collect a given number of the power supplies
|
||||
and/or destroy a given number of objects, and there may be a time limit in
|
||||
which you need to complete the objectives (for some reason that is never
|
||||
explained.)
|
||||
|
||||
The levels themselves are formed from coloured squares in a chequerboard
|
||||
pattern, up to 8x8 floor squares in horizontal size, and with up to four
|
||||
floors. Travel between different floors is via grey 'lift' squares that
|
||||
can go up or down at most one floor. When objects, including the robots,
|
||||
move around the level they may only do so along the cardinal directions
|
||||
- they can not move diagonally - and only one object may occupy a given
|
||||
square at a time.
|
||||
|
||||
{ width=320 }
|
||||
{ width=320 }
|
||||
{ width=320 }
|
||||
{ width=320 }
|
||||
|
||||
|
||||
## And so to Project Shinar
|
||||
|
||||
I've done game dev, on and off, for almost as long as I have had access to a
|
||||
computer[^4], but almost none of the things I've done have really come close
|
||||
to a state where I'd release them[^5]. I'd always either end up losing
|
||||
interest or, more likely, end up going down rabbit holes trying to write my
|
||||
own engine and end up never actually _making a game_. During 2017 I got it
|
||||
into my head that I wanted to learn Unity and hopefully make something I'd
|
||||
_actually release_. I started casting around for ideas for what to make, but
|
||||
inspiration eluded me.
|
||||
|
||||
Then one day I was clearing out boxes in the attic[^6] and came across [the manual](https://archive.org/details/AstraPack_Tower_Of_Babel_Amiga/_Manual01_1200/) for
|
||||
Tower of Babel in a box of old manuals and papers. This set me wondering, could
|
||||
I use ToB as inspiration for a game to build while learning Unity? I didn't
|
||||
want to straight up _clone_ the game, but it did start a chain of design ideas
|
||||
for ways to take the core ideas of the game - the three robots, having them
|
||||
coordinate to solve puzzles in a 3D world - and see what could be done without
|
||||
the restrictions of late 1980s/early 1990s technology.
|
||||
|
||||
It was late 2019 before I'd actually worked out what I wanted to do, and
|
||||
really started learning Unity to make it work. A key piece of the puzzle came
|
||||
when playing with possible designs for turrets in Lightwave when Winamp[^7]
|
||||
randomly chose the [Overture](https://youtu.be/iOCKc917XdA?si=pjdvRslTB2wWsgGr)
|
||||
track from the [TRON: Legacy soundtrack](https://www.youtube.com/playlist?list=OLAK5uy_ncZEqIkjEY-qvlzl_5FVk3JUwGNGFxjwU)[^8]
|
||||
and I suddenly realised: what if I took the core mechanics from Tower of Babel
|
||||
and set it inside a TRON-like world inside a computer? Lots of ideas suddenly
|
||||
started to slot into place
|
||||
|
||||
- The three robots are robotic agents being controlled by the player trying
|
||||
to infiltrate a big computer system and extract data from it.
|
||||
- The TRON-inspired setting allows for manageable assets: fairly low poly
|
||||
objects with relatively simple textures that add glowing edges, and no
|
||||
need for organic-like objects (making those has always been my nemesis.)
|
||||
- The TRON-inspired setting also gives scope for naming things in a TRON-like
|
||||
way: referencing computer parts, systems, or programs for areas the game
|
||||
happens in, naming the robots after CPU assembler mnemonics (even M68k ones!),
|
||||
and naming entities found in levels in a similar fashion.
|
||||
- Time limits for levels can be explained as runtime limits on the
|
||||
program the robots were working in.
|
||||
- With the scope of more memory, CPU power, and graphics power, I can
|
||||
allow larger levels, and more programming steps per robot.
|
||||
|
||||
I threw away the turret design I had been working on, and started building
|
||||
something that looked like it could exist in the TRON world, and quickly came
|
||||
to the conclusion that this _would work_
|
||||
|
||||
{ width=320 }
|
||||
/// caption
|
||||
The first turret object from 2019-12-17
|
||||
///
|
||||
|
||||
Before long I had a list of features, NPCs, and level mechanics that took
|
||||
ideas from Tower of Babel and enhanced them or added entirely new systems,
|
||||
like wall-mounted signal emitters that beams could activate to send signals,
|
||||
and those signals could turn things on or off, open barriers, or even move
|
||||
lifts.
|
||||
|
||||
Progress was still really slow, though - I had a lot of trouble focusing in
|
||||
the latter part of 2019 and early 2020 _for some reason_. During the first
|
||||
lockdown, [Ascorbius](https://www.ascorbius.com/) started doing gamedev
|
||||
livestreams and I regularly joined the chat for those. Those livestreams
|
||||
and conversations really helped my enthusiasm, and I really got into the
|
||||
development properly.
|
||||
|
||||
I'm going to fast-forward a bit here, because this is long and rambly enough
|
||||
as it is.
|
||||
|
||||
By mid 2023 I had released several alpha versions of Project Shinar,
|
||||
and by that point a fair bit of the game was working: levels could be
|
||||
completed, a lot of entities had been made and worked, the built-in level
|
||||
editor was functional, and I was starting work on the interface the player
|
||||
would use to move between different zones in the computer.
|
||||
|
||||
[And then The Unity Debacle of Sept 2023 happened](https://jeremiahfieldhaven.itch.io/project-shinar/devlog/588210/halting-development-in-unity).
|
||||
|
||||
To say I was put out would be something of an understatement. I could have
|
||||
carried on with Unity, realistically I wasn't affected by their change, but
|
||||
I'd be forever worried about them doing something else that would cause me
|
||||
trouble, and continuing to support them in any way just felt wrong.
|
||||
|
||||
So I needed a new engine. And while I wasn't starting from scratch again -
|
||||
I knew many of the assets could be used in any other engine - I knew I was
|
||||
going to end up redoing several years of work.
|
||||
|
||||
By mid-October 2023, I'd settled on Unreal as the replacement. Another
|
||||
page will probably be in the works about my experience moving from Unity
|
||||
to Unreal...
|
||||
|
||||
{ width=320 }
|
||||
/// caption
|
||||
The first screenshot I have from Unreal of work on the rebuild.
|
||||
///
|
||||
|
||||
[^1]: If we had more budget, there'd be a wobbly effect around the screen
|
||||
now, but wobbly effects? In this economy?
|
||||
[^2]: I do really miss these small, local, family-run shops. Stewart Electronics
|
||||
seems to have made it into the early 2010s by pivoting to AV equipment, but has
|
||||
gone the way of so many shops like it.
|
||||
[^3]: I am _fairly_ sure it was the [Astra Pack](https://amiga.abime.net/games/view/astra-pack).
|
||||
DataStorm (another game in that pack, a Defender clone) was another source of endless
|
||||
familiar competition as we battled for increasingly ludicrous high scores.
|
||||
[^4]: Modifying type-in programs in where it started, and it just went down-hill from there.
|
||||
[^5]: One Amiga game had come close... i was almost ready to get some friends to
|
||||
test it when the 40MB hard drive that all the game sources were on shat itself.
|
||||
I had no backups. Now I make backups.
|
||||
[^6]: I swear they bloody multiply. Leave a few boxes in the attic, and next time
|
||||
you look there's a dozen of them...
|
||||
[^7]: Yes, I still use Winamp 5.666, with the [Drone](https://www.wincustomize.com/explore/winamp/1263/) skin.
|
||||
[^8]: If you've never listened to it, stop what you're doing and go listen to it now.
|
||||
Seriously. Especially [Flynn Lives](https://www.youtube.com/watch?v=9D-jnfz9L3c). It
|
||||
is an _awesome_ soundtrack, and some of Daft Punk's finest work.
|
@ -2,8 +2,6 @@ site_name: Starforge
|
||||
site_url: https://www.starforge.co.uk/site
|
||||
nav:
|
||||
- Home: index.md
|
||||
- Project Shinar:
|
||||
- History: projectshinar/history.md
|
||||
- About: about.md
|
||||
- Links: links.md
|
||||
theme:
|
||||
@ -18,13 +16,9 @@ theme:
|
||||
- navigation.tabs
|
||||
plugins:
|
||||
- privacy
|
||||
- glightbox
|
||||
- open-in-new-tab
|
||||
markdown_extensions:
|
||||
- attr_list
|
||||
- footnotes
|
||||
- md_in_html
|
||||
- pymdownx.blocks.caption
|
||||
- pymdownx.emoji:
|
||||
emoji_index: !!python/name:material.extensions.emoji.twemoji
|
||||
emoji_generator: !!python/name:material.extensions.emoji.to_svg
|
||||
|