Metal Man Reloaded
Metal Man Reloaded: Creation History
Oleg Origin
This is an Action game with some
quest elements and individual suburos─
attention in the Arcade and Puzzle genres.
The game is based on my game Metal
Man 1997. In the original game there was a sd─
LAN only one level; more was planned
some amount, but the second one I never
completed. The game had a very primitive
gameplay and a bunch of small glitches. At that time
I didn’t use assembler, I wrote directly─
I think in machine code that, in combination with not─
sufficient experience, served as the reason for the ax─
Gameplay details of all my old games.
At the time of starting work for Metal Man
Reloaded I had several dozen
game projects in various genres, and the idea
make a remake of a naive old game completely
was not a priority for me. Initially
I didn't plan to do anything big
- just repeat the game with high quality but─
level, using graphics and plot ori─
ginala.
I started working on the game in the summer of 2011─
yes, and for the new year I made the first engine
the level is about what I probably wanted
I wish I could have seen this back in 97. Despite the fact
that externally the game turned out to be quite similar─
chew on the original, the volume and quality of the code of these
two games (Metal Man and Metal Man Reloaded)
incomparable. All the graphics were also significant─
flax reworked, and into an expanded map
level wascolor added.
Interestingly, the only piece of code
from the old game the "creeping─" effect has become
Xia" screen upon death.
By the way, about the map: in the original Metal Man
it was stored extremely irrationally: byte
for every familiar place. In Metal Man Reloaded
the map is stored in blocks of size 1*8
characters. And since the height of the floors is 9
familiarity, then the floors are described as separate one─
bit identifier (most significant bit inde─
ks block).At each level there are 128 blocks
cards (the first few are special tees─
py), which consist of 128 characters. Semi─
there is a kilobyte for each of these masses─
sivov (plus another color for the symbols), but they
saved in "two kilobyte" format with
direct access by index, that's why I mixed
them indented by 128 bytes, closing the "holes" in
data. The game has its own editor written─
level ctor.
At the beginning of 2012, I temporarily abandoned
working on a game in which I was completely
the first level is ready. Of course, it was possible
just draw a few more level maps─
without reworking the engine, but, according to
ideas born to me at that time,
each level was supposed to become in many ways
unique.
Only in the summer of 2013 I wrote two more levels─
Nya games (4th, then 2nd). Each level in
the game is unique, so their spelling is factual─
literally became comparable to writing another one─
noah little game. Although the second level
games - the most intense and varied, Imade it pretty quickly thanks to good─
sho elaborated initial concept─
that one After that I got distracted by working on
Rikki-Tikki-Tavi, which I almost made
completely. Finally, at the end of 2013 I finished
levels 3 and 5. The splash screen was already drawn
at the beginning of 2014.
It turns out that the project lasted for three years─
yes. It's probably better not to do that =). Proe─
I always have a lot of people, and this is far from
only games for Spectrum. In order to
stop at just one and then─
build it “in one go” from start to finish─
tsa - ardor and interest are not always enough.Cha─
I really want to move on to something else
- it turns out that at the same time I always lead
several projects. Return after before─
a long break is not easy - it takes a long time
understand your own code. In a certain
degree not to lose interest and bring
The project was also helped to completion by a competition, in which
which I fit in. Although by that time two
jock and 3 out of 5 levels were already complete
ready, and in any case I just have to
was to finish the game.
My friend Stella of Aragon means─
really helped me complete the project,
I also included additional
soundtrack one of her compositions as
bonus.
By the way, the title beeper composition
I wrote the games in the ModPlug tracker, converted─
Vav it with your own converter to your own─
new beeper engine. For additional
soundtrack I'm in the same placethe very melody of the post─
pitchfork "normal human" tools
and then added guitars, percussion and effects─
you. Then I wrote two guitar compositions
(one of them is based on the main topic).
I made Russian and English versions
games (after release, foreign spektrumists
helped make versions for four more
languages), as well as cassette and disk
(TR-DOS). Cassette and disk versions from─
are identified only by the bootloader: in the disk
version levels are loaded from BASIC, in
cassette - the program is launched from another─
address, and all further loading takes place─
walks without exit toBASIC. On ZX Spectrum
48K levels are loaded from the cassette separately─
mi blocks, but for extended memory realities─
A one-time download of the entire game is called.
In the version forTR-DOS, regardless of the quantity─
Two memory levels are loaded from disk by
as you progress through the game.
* * *
Since I studied programming in the 90s─
Based on the book "How to write a game for ZX
in assembler", then the familiar format
sprites and the procedure for displaying them in the game
Metal Man used from this book. Moreover
at that time I had no idea how to do
mirror output, so stored inmemory─
These are mirrored sprites. For Metal Man
Reloaded I took as a basis the same procedure,
but based on it I made it much more pro─
advanced and universal sprite subsy─
theme. Of course, I added a DSLR, maybe─
ity of output to both virtual and
physical screen, preliminary rough
screen hit check, possibility
using both colored sprites and
sprites without color. But the most interesting thing is
I modified the format to allow creating
sprites, where one part of the familiarity is colored
and is printed directly, and the other is not printed─
colored during output and displayed on top
existing background graphics via any account─
given bitwise operation. Thus,
for those acquaintances who have
just a couple of pixels, it became possible
leave the background color and color overlay
sprites on a colored background happens "bezbo─
painful." Moreover, when outputting colors (as
sprites and maps) are used to define
linear algorithms for mixing with existing
attribute. Finally, there is an opportunity
use the new attribute for everything
sprite, which made it possible to use one─
Basic parts of sprites for different types of games─
gov and color the sprites red
when hit. In addition, for sprites gla─
of the hero, bold partials are used
masks that further hide the clashing. True,
these algorithms are designed to use
dark background, andin the fifth level, where all
the playing area is inverted, not all of them
work well. By the way, about inversion -
I thought it would be interesting to do this
reception, because most often in games in all
levels, one scheme is used - either
light on dark, or dark on light.
I "highlighted" the fifth level by solving the problem in
forehead: new sets of sprites are used, in
including for the main character and for the adults─
WWII
Parallax scrolling is most used─
used at the third level when driving
motorcycle. There are 6 layers,
moving at different speeds: buildings on
in the background - by 1 pixel, green by 2,
industrial facilities at 4, then the fence -
for a whole familiar place (it does not scroll, but
quickly rendered viaPUSH ), road
(judging by the dividing strip, and
also by the mines lying on it) - on the floor─
tora is familiar (although jumps and barriers
fall out of this speed, and that’s why
remove the dividing strip at this time─
yes) and, finally, the lower curb and pillars -
by two. There are also small graphic elements,
which move at a different speed, only
so that they do not seem frozen, but they are not in
account. Of course, the intersections of layers are reduced
to a minimum. Active action takes place
only in one third of the screen, the upper third
scrolls on the real screen, and the pair
the bottom lines on itare redrawn.
A small part "protruding" from one
a third of the graphics are completed directly
to the screen. The pillars, of course, are made by Atri─
quarry filling. Although this episode of the game is not
too long, I was wondering
spend a lot of time on it
for the sake of implementing multi-layer scrolling.
By the way, at the first level, although the number
layers and not so striking, but they
there is also: the city in the background is motionless─
wives, the clouds are moving per pixel (you can turn it off─
read in settings to increase speed─
tee), red barrels in the middle ground - by 4
pixels, the entire main map is in familiar place,
and the floor on the lower floor is made separate
element using perspective.
Regarding scripting, the issue has been resolved
like this: each level uses its own
own main loop, and therefore that's it
gameplay features on each
a specific level can be set strictly.
For example, each level has its own organization─
background leveled, tasks set
missions and their implementation is being verified, op─
modes of using various
vehicles... So blackout
background in the first level at the entrance to the tunnel -
this is just a tough check of specific
coordinates in flying motorcycle mode.
And the destroyable terminals are on the 4th level
for simplicity, are described as enemies, with their
bounding box, and a simple condition is set─vie: destruction of three such “enemies”. In this
plan had to work hard on the second level─
vnem: it really took more─
Lots of code to describe the job
loader, press, crane, switches,
entrance to the bus and much more. Mind─
available, many universal ones are used
for all levels of the procedure. The same elevators
for example. It took once here
describe the principle of their operation, and then in
map it was possible to place them between any
floors. But, for example, prohibit enemies
use a specific elevator
- these are again harsh conditions for ka─
each specific level...
Of course, you always want to have it on hand
a more universal engine where possible
would ask a variety of interactive di─
namical objects, and in which characters
could correct their actions
based on current conditions. But I'm not at all
planned to use the MMR engine for
next projects, so in this case
development of scripting capabilities was
It would just be extra work. I hope in some
then I will be able to implement future projects─
create a more universal description system
levels, although genuine versatility,
based on Spectrum resources - still uto─
piya.
I always tried to control
the amount of remaining memory, compare it with
that which still had to be realized for─
thought Also, of course, Imaximum uni─
identified similar aspects of enemy behavior
- they access common subroutines. A
some procedures are used as a therapy
gami, and the player - for example, using─
operation of elevators. Cutting sprites also helped
into separate pieces and use them for
different types of enemies - with color changes.
Some ideas happened along the way─
refuse work when memory approaches─
dila to the end, or simply exclude
from the level certain types of enemies. If
look at the pencil sketch of the second
level, you can see two large four─
horned robots. Lack of memory is one of the
reasons why they weren't on this
level - but in the end I found this monster
best use by using it in the following─
next level not only as an enemy,
but also as a vehicle - so
"everything is for the better", even lack of memory =)
Initially I didn't plan to use
expanded memory for one-time
loading all levels of the game. But after
completion of the project it turned out that the whole game
takes up just a little less128 kilobytes,
and I added this feature. I had to
a little tinkering, since the blocks are entirely
do not fit on the page.
* * *
Hippiman> How the very first idea was born
games from the Metal Man series? The game world is similar to
those who were often inaction films of the 80-90s:
Robocop, Judge Dredd. What inspired you?
To the point! Which, in fact, is not surprising -
Who didn't watch action movies in the early 90s? =) And
As for games: Robocop is one of my favorites─
our games on the Spectrum. We really liked this─
the same Judge Dredd and Demolition Man, though
I didn’t have shogi - I just watched how
friends are playing. I drew sprites for the first game
Based on graphics from Robocop. Redrawn
from the TV screen, repeated in Art Studio,
then increased it by one familiar place in height
(the results of the increase curve are good for─
marked), changed and blossomed. Of course these
I corrected the graphics shortcomings in MMReloaded and
even more - in MMRemixed. Today, of course,
I try - on the contrary - not to borrow
no elements of graphics, code or plot. But
at that time just "repeat RoboCop", yes
also in color - the back seemed interesting─
whose. In addition, the topic"what if you do,
as on SEGA (or PC, Dendy)" was among
my friends is very popular. Among mine
the first unfinished projects, besides neu─
countryside attempt to "port" Aladdin to
Spectrum, there was, say, a game similar to from─
known in those days Cyberia - I tried
in a primitive way (the set is pre-rendered─
ny frames) beautifully realize flight over
by sea, but as a secret laboratory
the building protruded fromImpossible screensavers
Mission II. In terms of implementation it was similar
on my game Aggressor, but no material─
no catches have been preserved.
Hippiman> How is a new level born? You
you think about its concept for a while,
you draw a plan, and then you sit down and implement it─
Are you forgiving, or the level is born by itself, you
you sit down at the editor, and the level turns out
easy right in the creative process?
Differently. Of course, if initially Nari─
poke a detailed plan like I did it with
the second level of MMR, then development will proceed
much faster. Sometimes in the level editor
I first make a general outline of the plan, and then
I figure it out in Photoshop or on a printout,
what and where else can fit, like an organ─
call the labyrinth. Sometimes right in the editor.
In this case, the level often looks like
in the end it's not at all how I imagined it
=). In the same MMR, all levels are created differently─
in our own ways. But the general concept, of course─
xia, there is always: you need to imagine, according to
at least what location we are doing - and
This leads to a possible approximation─
ny layout, and filling with any
objects.
Hippiman> What is reda─
level designer for this game? This is self-sufficient─
exact utility that gives bi─
a custom object, ready to be inserted into the game─
ru, or a set of small utilities?
I write all the necessary utilities myself.
Everything is cross-platform - on real Spe─
kroomaI wrote utilities only in the 90s. Almost in
each game (including several
currently being developed) uses its own─
specific card format, so for each
I'm writing my level editor at the very beginning
development. The editors are quite simple:
cards from blocks (tiles), blocks from symbols─
fishing, plus a set of rigidly described objects and
any additional parameters. Work─
whose level files are arrays without any
optimization, and the output is already
a ready-made set of binaries or text
file with marks for further reference
nim from the program - it all depends on the specifics─
new game and its card format. In addition,
graphics converter from.BMP I also have my own
own - it supports all my formats─
mats of sprites, which have already accumulated since de─
100, simple screen conversion, once─
personal options for saving fonts, including
number of variable width and increased you─
cells, recording line-by-line images and maps─
Teen with the simplest packaging and everything else,
whatever I need. To speed up
The graphics converter is called in
including from under the level editor, and in order to
to see in the level editor only
that the block graphics were updated in Photoshop,
just press one button. I am a lot
I do it to automate my work. On─
example, my notepad shows me everything
possibleassembly mnemonics allows
switch between all connected files─
lami, himself turns to SjASM byF9, shows─
throws compilation errors and launches the emulator─
torus And it only took a few minutes to create it.
hours. And about music format converters
I also mentioned. Release anything from
of this cross-platform zoo I'm still
I don’t plan to - after all, all these utilities are finished─
narrowly focused, focused on
my own principles of work have only
rudiments of the interface and do not represent
finished products.
Hippiman> How do you test your games? I
I don’t mean code errors, they are like great
vilo, are easy to find, and the gameplay and design
levels. You, as a developer, have all levels
should seem easy, and all decisions, to─
which the player must accept are obvious.
You attract someone when the game is already
finished, or consulting with someone else in
development process, or just trying
put yourself in the player's shoes?
Today we often see examples of collections─
active work on games, when everyone is motivated─
can give advice - including regarding
game balance. In these cases it is good
It’s easier to make well-balanced gameplay. But the point is
is that it’s more interesting for me not to show
development process, and immediately present
finished game, if possible in the final form─
new version. I expect that in this caseig─
rock will experience the same impression,
what could you get 30 years ago from
just bought a cassette and the first one for─
loads of an as yet unfamiliar game. For her sake─
I have no effect on anyone yet─
called MMR right up to the moment of release, and then
I did everything myself. Indeed,
It’s easy to complete your game because it’s accurate
you know all the nuances of enemy behavior and how to
fight this, you know the map perfectly and
location of all objects. At the same time,
I had this somewhat strange idea
- make the game really extremely difficult─
noah, what hundreds of games were like in the 80s.
That's why I just sought this balance,
when I myself passed it “almost without looking”,
and took this state for passable, but
very difficult game. In the end, to be honest
Few passed, as I expected. There were
requests to reduce the difficulty and I did
this is in the first level of Metal Man Remixed. B
in the next games I will try to apply
a similar solution is to make the first levels
easily passable, with further increase
complexity. Today there are people who want to test─
te the next games - I think not
I will refuse this. Because it's excessive
the complexity of classic games is often as
since it was a consequence of what he wrote─
The game was modeled by the same person. By the way,
about code errors - despite the fact that
There are no glitches in the final release
met me atlater I got it anyway
a few gross mistakes that only serve─
definitely did not lead to “sad consequences─
Viyam". It's not surprising that something like this can happen
found in almost any existing
game - therefore the question of "final release"
always very difficult.
Share your thoughts about the article