[7DRL release] "Seven Weeks"

2 views
Skip to first unread message

tqne...@sneakemail.com

unread,
Jul 24, 2007, 9:58:09 PM7/24/07
to
Hello r.g.r.d!

I'm a long-time-lurker, first-time-poster who has made a 7DRL, or at
least
a roguelike in seven days.

I started Friday the 13th and finished on Thursday the 19th. I didn't
find
time to actually release until now, but I haven't touched the code
after
the deadline ended. This post was typed up outside the limit, so this
is
half release notes, half "missing manual". (As such, it's a bit
lengthy:
just scroll down to the download links if you get bored and want to
try
the game. It might be a bit unfamiliar in a number of ways, but
there's a tutorial.)

I didn't announce this beforehand because I frankly wasn't sure if I
would
finish the challenge; this is my first roguelike and I'd decided to
work
in an unfamiliar language with an unfamiliar IDE(as a "learning
experience"-
famous last words for a roguelike project, I'm well aware).

After having spent seven days coding, though, I find myself reluctant
to
call it a "pseudo-7DRL" for this reason as I originally planned.

Following a proud tradition of roguelikes, this is a game about a
thief.
Taking this concept to its logical extreme, it puts a heavy emphasis
on
stealth and advanced forms of movement. In fact, it contains no
winnable
combat, and the only enemies comparable to monsters in normal
roguelikes
should generally be avoided at all costs.

The setting is science fiction, mostly because the "guards" had to be
simple and predictable for the gameplay to work, and if you don't
think
too hard about it, it's easy to explain that away by making them
robots.

The game was programmed in Java using Eclipse, until 164 hours into
the
challenge, at which point I apparently hit the wrong key and Eclipse
changed
things around a bit and deleted a few strategically chosen source
files.
(Luckily, I had versioned my files - all except one which, by Murphy's
Law, I
had neglected - and I was able to finish the game with gvim and
javac.)

The game should work on most any platform that runs Java and AWT, but
it has
only been tested on Windows. It keeps data files in its own directory,
so it
needs permission to read and write files in its own directory(and
subdirectories).

As noted, this is a somewhat specialized and strange roguelike, and
it's
probably not very well balanced. Nevertheless, if any of you are
willing
to try it out, I'd be honoured to get some feedback on it from rgrd.
(I have no Grand Roguelike Project in the works, but I might very
well
do another 7DRL sometime in the future!)

The main game consists of seventeen burglaries in randomly generated
houses
with features partly selected by the player, where the object is to
make a
successful exit with as much loot as possible. If the player does
_not_
make a successful exit(with or without loot), the game ends and the
score
is tallied.

There are no random elements in the gameplay itself, and the PRNG in
the
meta-game may be seeded by the player, for "competitive" play.
(Comparing
scores in single games might otherwise be somewhat arbitrary, because
level
generation is a potentially very strong random element.)

There's a high-score list and automatic savegames between each break-
in;
both of which I suppose are fairly standard for roguelikes.

There's a tutorial, which I like to think provides a touch of class.

It also hopefully helps to offset some mechanics that might be
incomprehensible
at first sight. The player can move not only by running along the
floor,
but also by climbing walls(near the floor or near the ceiling),
climbing
ceilings, crawling along the floor, doing a standing jump(sadly rather
useless), or doing a running jump.

There's no proper line-of-sight for the player; the hero explores
whole
rooms at once. Guard robots _do_ have sensor ranges and line-of-sight
calculations(the visual calculations are marred by the artifacts of a
very
strange algorithm, but this isn't too noticeable in the standard
levels
because the rooms are all rectangular), and the player can see these
if the
robot is visible. (I explain this apparent omniscience by assuming
that the
hero, as an experienced cat burglar, is constantly scanning the room
and
has an intimate knowledge of guard robot sensor systems.)

Robots are largely tricked by either avoiding the rooms they're in
completely,
or by making sure they you're not visible to them by using all your
fancy
movement modes. Most of them take a short while to notice you even
after
you've entered their range, but when they do notice you, most of them
will
be able to neutralize you very quickly. One model can literally kill
you
in one shot. They can also call more robots to the position where they
spotted
you(I suppose this could _theoretically_ be used to your advantage),
or
trigger alarms.

The other part of the futuristic alarm systems is the brightly
coloured,
cinema-friendly detector beams. You'll have to take care to avoid
these,
or you'll trigger alarms, call nearby robots, or fall victim to gas
traps.

If you trigger an alarm, a countdown will become visible. (I suppose
our
hero carries a police radio.) If you let the time run out, the police
will
arrive, and you'll lose. If you escape before the time runs out, there
are
no consequences. Beware: the countdown times are MUCH shorter in high-
security
facilities.

CONTROLS
Number pad - general movement keys
u, d - "up" and "down", use when climbing walls, to crouch or stand
up, or to
fall (painfully) from the ceiling
x - explore the next room when standing next to a door
: - scroll the map, VERY useful
j - jump, move twice in the same direction first to make your jump a
running
jump. To make time pass while you're in the air, so you eventually
hit the ground, you'll have to use..
space bar - wait (can be used while scrolling!)
l - loot, in honour of NetHack. You'll need to move over the $ and !
symbols
and then press this key to earn any points in this game
Q - leave a level. Can only be used when the level has "ended"; use
your
OS's "close" or "kill" function to end the program quickly.

HINTS
Use 'x', ':' and wait(space bar) to familiarize yourself with rooms
before
entering them.

Use ':' (look-mode) and center the screen on a robot to display its
name.
Notably, ceiling-bots hang from the ceiling, observer-bots are
unarmed,
and battle-bots will instakill you if they fire. (There are two
different
kinds of guard-bots; one variant reacts faster, but has a smaller
weapon.)

You can crawl through doors, but you can't use 'x' while crawling.

Hanging from the ceiling is VERY helpful to avoid most robots. Watch
out for
ceiling-bots! (Note that you take up more vertical space hanging on a
wall-
even near the ceiling-than hanging from the ceiling.)

If you need to drop to the floor quickly when hanging from the
ceiling, you
can do so with 'd', but you'll take 10 damage from the fall.

If you're in a square, you can loot it - even if you're, say, jumping
through
it, hanging from the ceiling, or crawling on the floor.

SCORES
If you get a score above one million, I'd say you've done impressively
well.
(If you post a high score, please mention the seed you used - even if
you used
a random seed, it's listed on the high-score page - to allow for "fair
competition".)

KNOWN BUGS
-There are probably some rogue println() calls around, meaning the
console
will print out meaningless stuff at times. The entire game - except
for a
few fatal error messages - is restricted to the graphical window it
creates.
(Most embarrassingly, the game prints out a lot of stuff related to
robot
movement. This isn't meant to be visible, so using it should be
considered
cheating.)
-I forgot to change the version numbers before I'd packaged the final
version,
and out of a perhaps misguided sense of honour I have not changed it
since.
The game will identify itself as "Seven Weeks 0.9, pre-7DRL", but the
JAR file
with the MD5 checksum 2ab4e17c5607625fe8ff51b0859a1c1c is indeed the
version
of the file I'm releasing as a 7DRL, and as such meant to be version
1.0.
-The main menu screen prints the title as "Seven Weeks in the City".
The
title was originally planned to be "Seven Weeks in <some city>", but
since
I couldn't think of a suitable fictional name for <some city>, and it
felt
wrong setting-wise to use a real city, I shortened it. The name that
stuck
on the main menu was this rather horrible compromise.
-There are undoubtedly problems with the game balance. Hopefully, the
fact
that there's nothing to "beat" except your own scores(or other
people's
scores!) offsets this problem somewhat.
-There MIGHT an "alarm" bug which triggers an alarm unprovoked, which
would
be fairly critical. Most likely, this is just due to observer-bots
and
ceiling-bots, both of which trigger alarms and have heat detectors,
so
they can detect you through walls.
-The number (above zero) of times a detector beam is broken when
moving
through it is a bit arbitrary. This is largely cosmetic, because
repeating
any of the three available effects should have no effect at all.

SOURCE COMMENTS
Some of this code is unspeakably bad. What can I say - I was working
under
time pressure here. It works - mostly.

The game isn't packaged properly as a Java application should be(this
was
probably part of the reason why Eclipse choked at me): I'm a C++
programmer
at heart and a Java programmer by "academic experience" only.

DOWNLOADS
Zip files. Even if you compile the game yourself, you should download
the
"binary" package, because it contains the data files and directory
structure
necessary to make the game run. (If you recompile, simply delete the
JAR file
and substitute your own.)

I used a random uploading service for this; I hope it works for
everyone.
If anyone wants to provide a more permanent home for the files, I'd be
very grateful. (There's an advertising page before you get to the
actual
download on this one-it's not all that annoying, but it does mean that
the files can only be comfortably downloaded with a web browser
as opposed to, say, wget.)

Binary (JAR and data files)
http://one.fsphost.com/kadwiell/SevenWeeks.zip
MD5 hash of zip file: 09050b0653a5544165e5ebd155428e2b

Source (Java files only)
http://one.fsphost.com/kadwiell/SevenWeeksSource.zip
MD5 hash of zip file: 7dff10887ada907a4f07c606d3affafc

Have fun! Any feedback would be very welcome.

-Kadwiell

tqne...@sneakemail.com

unread,
Jul 24, 2007, 10:12:29 PM7/24/07
to
(Sorry about the that - that was my first ever Usenet post through
Google Groups and I wasn't aware that it wrapped lines automatically,
and deleted things between square brackets in subject fields, as it
seems to do. What follows is largely a repost, hopefully with better
formatting.)

Hello r.g.r.d!

sight calculations(the visual calculations are marred by the artifacts


of a very strange algorithm, but this isn't too noticeable in the
standard levels because the rooms are all rectangular), and the player
can see these if the robot is visible. (I explain this apparent
omniscience by assuming that the hero, as an experienced cat burglar,
is constantly scanning the room and has an intimate knowledge of guard
robot sensor systems.)


Robots are largely tricked by either avoiding the rooms they're in
completely, or by making sure they you're not visible to them by using
all your fancy movement modes. Most of them take a short while to
notice you even after you've entered their range, but when they do
notice you, most of them will be able to neutralize you very quickly.
One model can literally kill you in one shot. They can also call more
robots to the position where they spotted you(I suppose this could
_theoretically_ be used to your advantage), or trigger alarms.

The other part of the futuristic alarm systems is the brightly
coloured, cinema-friendly detector beams. You'll have to take care to
avoid these, or you'll trigger alarms, call nearby robots, or fall
victim to gas traps.

If you trigger an alarm, a countdown will become visible. (I suppose
our hero carries a police radio.) If you let the time run out, the
police will arrive, and you'll lose. If you escape before the time
runs out, there are no consequences. Beware: the countdown times are
MUCH shorter in high-security facilities.

CONTROLS
Number pad: general movement
u, d: "up" and "down", use when climbing walls, to crouch or stand up,


or to fall (painfully) from the ceiling

x: explore the next room when standing next to a door
:: (the colon key) scroll the map, VERY useful
j: jump, move twice in the same direction first to make your jump a
running jump. You'll need to "wait" to make the time pass while in the
air.
space bar: wait (can be used while scrolling!)
l: loot, in honour of NetHack. You'll need to move over the $ and !


symbols and then press this key to earn any points in this game

Q: leave a level. Can only be used when the level has "ended"; use


your OS's "close" or "kill" function to end the program quickly.

HINTS
Use 'x', ':' and wait(space bar) to familiarize yourself with rooms
before entering them.

Use ':' (look-mode) and center the screen on a robot to display its
name. Notably, ceiling-bots hang from the ceiling, observer-bots are
unarmed, and battle-bots will instakill you if they fire. (There are
two different kinds of guard-bots; one variant reacts faster, but has
a smaller weapon.)

You can crawl through doors, but you can't use 'x' while crawling.

Hanging from the ceiling is VERY helpful to avoid most robots. Watch
out for ceiling-bots! (Note that you take up more vertical space

hanging on a wall-even near the ceiling-than hanging from the
ceiling.)

would be fairly critical. Most likely, any such effect seen is just


due to observer-bots and ceiling-bots, both of which trigger alarms

and have heat detectors, so they can detect you through walls. Perhaps
unfair, but not actually a bug.


-The number (above zero) of times a detector beam is broken when
moving through it is a bit arbitrary. This is largely cosmetic,
because repeating any of the three available effects should have no
effect at all.

SOURCE COMMENTS
Some of this code is unspeakably bad. What can I say - I was working

under pressure here. It works - mostly.

Nik Coughlin

unread,
Jul 24, 2007, 10:18:38 PM7/24/07
to
tqne...@sneakemail.com wrote:
> I used a random uploading service for this; I hope it works for
> everyone.

Nope, invalid zip archive every time I try to download


Björn Ritzl

unread,
Jul 25, 2007, 2:26:49 AM7/25/07
to

Same for me... corrupt Zip.

/Björn

Timofei Shatrov

unread,
Jul 25, 2007, 2:40:31 AM7/25/07
to
On Wed, 25 Jul 2007 14:18:38 +1200, "Nik Coughlin" <nrkn...@gmail.com> tried to
confuse everyone with this message:

Same here. Shame, cause it looks like a fun game.

--
|Don't believe this - you're not worthless ,gr---------.ru
|It's us against millions and we can't take them all... | ue il |
|But we can take them on! | @ma |
| (A Wilhelm Scream - The Rip) |______________|

Corremn

unread,
Jul 25, 2007, 2:56:32 AM7/25/07
to
On Jul 25, 3:40 pm, g...@mail.ru (Timofei Shatrov) wrote:
> On Wed, 25 Jul 2007 14:18:38 +1200, "Nik Coughlin" <nrkn....@gmail.com> tried to

> confuse everyone with this message:
>
> >tqneiq...@sneakemail.com wrote:
> >> I used a random uploading service for this; I hope it works for
> >> everyone.
>
> >Nope, invalid zip archive every time I try to download
>
> Same here. Shame, cause it looks like a fun game.

I guess he will go down in fame as someone who created a 7drl but no
one ever played it.

After reading such a long introduction i was looking forward to
playing it.

BTW the source archive is also frigged.

tqne...@sneakemail.com

unread,
Jul 25, 2007, 10:00:52 AM7/25/07
to
On Jul 25, 8:56 am, Corremn <corr...@dodo.com.au> wrote:
> I guess he will go down in fame as someone who created a 7drl but no
> one ever played it.
That'd be a shame, but I'll give it at least one more try. Here's a
new download page:

http://www.geocities.com/kadwiellroguelike/

-Kadwiell

Nik Coughlin

unread,
Jul 25, 2007, 4:52:52 PM7/25/07
to

Is tqne...@sneakemail.com a valid email address? I've sent you an email
about having some space on my server. Cheers :)


Nik Coughlin

unread,
Jul 26, 2007, 2:25:21 AM7/26/07
to

Some great ideas here, though I haven't had time to go beyond the tutorial I
like what you've done with it so far


Corremn

unread,
Jul 26, 2007, 2:59:32 AM7/26/07
to
On Jul 26, 3:25 pm, "Nik Coughlin" <nrkn....@gmail.com> wrote:

Yes, it certainly has a unique feel. I like the concept very much. I
have not got far yet, but I am getting much better at avoiding those
bots. The moving beams is a very nice touch.

Some thoughts...

The three views need to be separated by at least a character, I easily
got confused as to what belonged to what square. Also I would like the
character centred at all times, as there are too many blind spots if
he is not centred. I had to resort to using the ':' command to centre
the screen. Maybe at the very least it needs a centre screen command.
The 3 views sometimes did not show my character at all!

Other probs,
Some letters are wierd, i.e the 'e'. Also I would guess that you
could apply colour to the text rather than having a separate file for
each colour. I dont know though as I dont know much about java. Slash
might be able to help you here.

The tutorial text sometimes cuts a letter from a word on the right.

The jumping tutorial room does not tell you that you must press space
to finish your jump. I killed the game as I thought I was stuck in the
air.

Looking seems to take turns, robots moved, I dont know if this is
intended or not.

I encountered large freezes before screen redraw catched up to my key
presses.

I would like to differentiate between the robots with out looking at
them. (different symbol/colour)


Anyway, good work on a unique game and playstyle. Keep it up.

R. Alan Monroe

unread,
Jul 26, 2007, 5:57:33 PM7/26/07
to

>The jumping tutorial room does not tell you that you must press space
>to finish your jump. I killed the game as I thought I was stuck in the
>air.

Same here.

Alan

Jeff Lait

unread,
Jul 26, 2007, 6:43:47 PM7/26/07
to
On Jul 26, 2:59 am, Corremn <corr...@dodo.com.au> wrote:
> On Jul 26, 3:25 pm, "Nik Coughlin" <nrkn....@gmail.com> wrote:
>
> > tqneiq...@sneakemail.com wrote:
> > > On Jul 25, 8:56 am, Corremn <corr...@dodo.com.au> wrote:
> > >> I guess he will go down in fame as someone who created a 7drl but no
> > >> one ever played it.
> > > That'd be a shame, but I'll give it at least one more try. Here's a
> > > new download page:
>
> > >http://www.geocities.com/kadwiellroguelike/
>
> > > -Kadwiell
>
> > Some great ideas here, though I haven't had time to go beyond the tutorial I
> > like what you've done with it so far
>
> Yes, it certainly has a unique feel. I like the concept very much. I
> have not got far yet, but I am getting much better at avoiding those
> bots. The moving beams is a very nice touch.

Agreed, I am very impressed with this game! The walking on walls
mechanic is surprisingly useful. The setting is well thought out too
- unfair random trap generation isn't a problem as you are supposed to
know when to run away.

My requests...
1) Always center the screen on the @.
2) Add a border to the three level look so in open areas you can tell
them apart.
3) Blue on black is a hard colour to see, I'd recommend a brighter
scheme for people outside with laptops
4) Numberpad movement seems great until you try and play on a laptop!
Sure,I can hit numlock to engage my built in numberpad, but then I
lose u, l, j, making the game hard to play. I either have to keep
toggling number pad or try and use the top row of numbers which
involves a lot of mental gymnastics. My recommendation would be to
build an alternate key layout for laptop users. I'd strongly
recommend the "vi-keys" - use yuhjklbn for movement. I'd move u, l,
and j onto the left hand, exact letters don't matter. Maybe e-climb,
d-drop, f-jump, g-loot. (e because it is above d, f because it is
beside d and on home row, and g because it is get.)

Very amazing game showing a nice innovative playstyle.
--
Jeff Lait
(POWDER: http://www.zincland.com/powder)

tqne...@sneakemail.com

unread,
Jul 28, 2007, 12:25:11 AM7/28/07
to
I've posted a new version at http://kadwiell.nrkn.com/sevenweeks/ .

(Many thanks to Nik Coughlin who generously provided hosting!)

Of course, I guess the updated version is technically not a 7DRL
anymore, but it's probably a tiny bit more enjoyable to play.

Aside from bugfixes(some fairly huge bugs) and UI changes(colours/
symbols and viewport differentiation), this release contains alternate
fonts; with or without antialiasing(because the non-antialiased one
wasn't done at all well, the antialiased ones are in my opinion
significantly "prettier", so I'd recommend them barring special
circumstances or antipathies to blurring), and with or without high-
contrast colour choices(which look worse, but hopefully read better).
If you want to use one of these, you'll have to download the
appropriate zip and swap out the "font" folder for the one in the
archive.

I was unable to reproduce the bug with time passing/robots moving
around while in "look" mode; if that does happen, it's a bug. (You can
press space to have time pass while you're looking, though, and that's
a feature - designed to allow you to observe the movements of robots
far away comfortably. Are you sure that's not what you've seen?)

There's no recenter-on-every-move, partly because of my personal
preference, and partly because I have this idea that it would make the
flickering worse. I've added 'c' as a recenter button, which I hope
makes this less annoying. (If it really irks you, it's fairly easy to
fix: change "Viewport.Tracking.SOFT" to "Viewport.Tracking.HARD" on
line 459(initialization of main_viewport) of RLUserInterface.java and
recompile.)

Vi keys have been added; you'll need to start the game with -vikeys or
use the "laptop" batch files to use them. Keys are as Jeff Lait
suggested.

Thanks to all who have provided feedback!

-Kadwiell

tyrec...@yahoo.com

unread,
Jul 28, 2007, 2:24:33 AM7/28/07
to

I really like this game. It is definitely a new direction for
roguelikes. The biggest flaw is unfortunately the user interface.

Small: Flicker. You already recognize it as a problem, and, glancing
at your code, there are two simple ways in which it might be improved.
First, your paintCharacter() function calls the rescaling version of
g.drawImage every time. This is probably much slower than if you
cached a scaled version of the tiles and just drew them. Second, since
most tiles are either floors or unknowns most of the time, if you
saved the index of the previous character written on a location on the
screen and only redrew if that character changed, then you would save
many character redraws. If you did both of these things, it is likely
that the flicker would go away.

Large: Viewports There is a lot of redundancy between the small
viewports and the large viewport. I would recommend a different
layout:

Middle | Top
-----------------------
Bottom | Radar

Here, the screen is divided into quarters (with a standout character
like solid cyan as the dividers). Top, middle, and bottom would work
just like before. And radar would replace the current large viewport.
The idea of radar is that it would consist of half-size tiles which
would be either entirely white (wall), black (empty/unknown), green
(loot), blue (door), or red (robot). This would allow you to have
bigger top/middle/bottom viewports, easily distinguish between
viewports, and get a sense of the level layout at the same time.
Perhaps look would then change to allow a fullscreen viewport that you
can move around, and change the level it looks at with +/- or u/d or
something.

Anyhow, thanks for the game. I really like the new way of perceiving
the roguelike world that you have created.

-D

Reply all
Reply to author
Forward
0 new messages