Zep's Dreamland: Linux complete!
Ultio

It's official, the Linux port of Zep's Dreamland is now complete. It should run on most flavors of Linux without a problem. However, if you run into some strange issue that is not a specific driver related issue, please let me know. Nothing new has changed in the actual gameplay or levels for anyone who has played the Windows/OS X versions and hoping for something new. :)

Enjoy. :)

SonShadowCat

I'll try it out right now.

Edit: WHAT?!?! No source?

Bad. It won't run on my machine. Mandrake 10. You should really release source so we can compile it and increase the chance of making it work.

Ultio

Doesn't run on your Mandrake 10? It ran on two other users versions of Mandrake 10. :)
(and no, no source for you!)

SonShadowCat

How am I to play without source to compile :P. Any special libs that it requires?

Ultio

Nope. I statically linked everything I possibly could into it (the only library is uses is Allegro anyways). I'm afraid if it doesn't run you're just out of luck! Sorry! :P I'm serious though, I'm not releasing source at this point in time. Sad, but true.

SonShadowCat

Lets see how many others complain before you release it :).

Ultio

Yeah, it will take more than every Linux user who can't play the precompiled binary; that's for sure. ;D

SonShadowCat

No linux fans for you.

Ultio

I'll have them when the time is right to release the sourcecode, if ever. It's not my fault linux comes in about 50-million different flavors. ;)

Kitty Cat

Runs fine here on Gentoo. Cool game. :) I got stuck though, so I decided to quit and bring some praise.

SSC: Why doesn't it run? What errors do you get?

CGamesPlay

Write an ebuild for it, submit it to portage, and I will install :)

SonShadowCat

It's your fault for depriving us of your game :P. Oh well, I can always play it in windows ^_^.

Ultio

Glad you enjoyed it thusfar. What level did you get stuck on? :)
CGames: PM me with more information about ebuild please.

SonShadowCat

I don't get any errors at all. It looks as if its going to start but then just quits.

Ultio

SSC: Maybe it's having issues doing windowed mode? You can manually set it to load up in fullscreen mode by editing: data/settings.txt. Change the last line from 1 (windowed) to 0 (fullscreen). :)

Kitty Cat
Quote:

It's your fault for depriving us of your game :P. Oh well, I can always play it in windows ^_^.

I still would like to know what problems you were having. I don't think it's a dynamic lib problem:

$ ldd ZepsDreamland
        not a dynamic executable

I'd like to know in case I ever decide to release a binary for Linux. Might be a driver problem... is ZepsDreamland able to use Linux Console drivers (ie. SVGALib, fbcon, etc)? If your (Ultio's) static lib build of Allegro doesn't support them, then it won't work for us either. Same goes for any other driver.

SonShadowCat

It does try to start in fullscreen mode. The screen goes all black as though it were about to start then crashes.

CGamesPlay

ebuild is gentoo's package construction/management system. It handle dependencies, source compilation, etc.

Allegro 4.1.17's ebuild:

1# Copyright 1999-2005 Gentoo Foundation
2# Distributed under the terms of the GNU General Public License v2
3# $Header: /var/cvsroot/gentoo-x86/media-libs/allegro/allegro-4.1.17.ebuild,v 1.2 2005/01/19 00:43:00 wolf31o2 Exp $
4 
5IUSE="static mmx sse oss alsa esd arts X fbcon svga tetex doc"
6 
7inherit flag-o-matic
8 
9DESCRIPTION="cross-platform multimedia library"
10HOMEPAGE="http://alleg.sourceforge.net/"
11SRC_URI="mirror://sourceforge/alleg/${P}.tar.gz"
12 
13LICENSE="Allegro"
14SLOT="0"
15#-amd64, -sparc: inportb, outportb, outportw undefined
16KEYWORDS="~alpha -amd64 ~ia64 ~ppc -sparc ~x86"
17 
18RDEPEND="alsa? ( media-libs/alsa-lib )
19 esd? ( media-sound/esound )
20 arts? ( kde-base/arts )
21 X? ( virtual/x11 )
22 svga? ( media-libs/svgalib )"
23 
24DEPEND="${RDEPEND}
25 >=sys-apps/sed-4
26 tetex? ( virtual/tetex )"
27 
28src_unpack() {
29 unpack ${A}
30 
31 sed -i \
32 -e 's/&_oss_\(numfrags\|fragsize\)/NULL/' \
33 "${S}/setup/setup.c" \
34 || die "sed failed"
35}
36 
37src_compile() {
38 filter-flags -fPIC -fprefetch-loop-arrays
39 econf \
40 --enable-linux \
41 --enable-vga \
42 $(use_enable static) \
43 $(use_enable static staticprog) \
44 $(use_enable mmx) \
45 $(use_enable sse) \
46 $(use_enable oss ossdigi) \
47 $(use_enable oss ossmidi) \
48 $(use_enable alsa alsadigi) \
49 $(use_enable alsa alsamidi) \
50 $(use_enable esd esddigi) \
51 $(use_enable arts artsdigi) \
52 $(use_with X x) \
53 $(use_enable X xwin-shm) \
54 $(use_enable X xwin-vidmode) \
55 $(use_enable X xwin-dga) \
56 $(use_enable X xwin-dga2) \
57 $(use_enable fbcon) \
58 $(use_enable svga svgalib) \
59 || die
60 
61 emake -j1 CFLAGS="${CFLAGS}" || die "emake failed"
62 
63 if use tetex ; then
64 addwrite /var/lib/texmf
65 addwrite /usr/share/texmf
66 addwrite /var/cache/fonts
67 make docs-dvi docs-ps || die
68 fi
69}
70 
71src_install() {
72 addpredict /usr/share/info
73 make DESTDIR="${D}" \
74 install \
75 install-gzipped-man \
76 install-gzipped-info \
77 || die "make install failed"
78 
79 # Different format versions of the Allegro documentation
80 dodoc AUTHORS CHANGES THANKS readme.txt todo.txt
81 use tetex && dodoc docs/allegro.{dvi,ps}
82 use doc && dodoc examples/*
83 dohtml docs/html/*
84 docinto txt
85 dodoc docs/txt/*.txt
86 docinto rtf
87 dodoc docs/rtf/*.rtf
88 docinto build
89 dodoc docs/build/*.txt
90}

So..... it looks like it's got functions for the various tasks involved.... Let's try a binary ebuild, since that's what you'll be using.

Firefox 1.0's ebuild:

1# Copyright 1999-2004 Gentoo Foundation
2# Distributed under the terms of the GNU General Public License v2
3# $Header: /var/cvsroot/gentoo-x86/net-www/mozilla-firefox-bin/mozilla-firefox-bin-1.0.ebuild,v 1.2 2004/11/18 21:53:15 agriffis Exp $
4 
5inherit nsplugins eutils mozilla-launcher
6 
7IUSE="gnome"
8 
9DESCRIPTION="The Mozilla Firefox Web Browser"
10SRC_URI="http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/1.0/linux-i686/en-US/firefox-${PV}.tar.gz"
11HOMEPAGE="http://www.mozilla.org/projects/firefox"
12RESTRICT="nostrip"
13 
14KEYWORDS="-* x86 amd64"
15SLOT="0"
16LICENSE="MPL-1.1 NPL-1.1"
17 
18DEPEND="virtual/libc"
19RDEPEND="virtual/x11
20 x86? (
21 >=sys-libs/lib-compat-1.0-r2
22 >=x11-libs/gtk+-2.2
23 )
24 amd64? (
25 >=app-emulation/emul-linux-x86-baselibs-1.0
26 >=app-emulation/emul-linux-x86-gtklibs-1.0
27 )
28 >=net-www/mozilla-launcher-1.22"
29 
30S=${WORKDIR}/firefox
31 
32src_install() {
33 # Install firefox in /opt
34 dodir /opt
35 mv ${S} ${D}/opt/firefox
36 
37 # Plugin path setup (rescuing the existing plugins)
38 src_mv_plugins /opt/firefox/plugins
39 
40 # Fixing permissions
41 chown -R root:root ${D}/opt/firefox
42 
43 # mozilla-launcher-1.8 supports -bin versions
44 dodir /usr/bin
45 dosym /usr/libexec/mozilla-launcher /usr/bin/firefox-bin
46 
47 # Install icon and .desktop for menu entry
48 if use gnome; then
49 insinto /usr/share/pixmaps
50 doins ${FILESDIR}/icon/mozillafirefox-bin-icon.png
51 # Fix bug 54179: Install .desktop file into /usr/share/applications
52 # instead of /usr/share/gnome/apps/Internet (18 Jun 2004 agriffis)
53 insinto /usr/share/applications
54 doins ${FILESDIR}/icon/mozillafirefox-bin.desktop
55 fi
56 
57 # Normally firefox-bin-0.9 must be run as root once before it can
58 # be run as a normal user. Drop in some initialized files to
59 # avoid this.
60 einfo "Extracting firefox-bin-${PV} initialization files"
61 tar xjpf ${FILESDIR}/firefox-bin-0.9-init.tar.bz2 -C ${D}/opt/firefox
62}
63 
64pkg_preinst() {
65 export MOZILLA_FIVE_HOME=${ROOT}/opt/firefox
66 
67 # Remove the old plugins dir
68 pkg_mv_plugins /opt/firefox/plugins
69 
70 # Remove entire installed instance to prevent all kinds of
71 # problems... see bug 44772 for example
72 rm -rf "${MOZILLA_FIVE_HOME}"
73}
74 
75pkg_postinst() {
76 export MOZILLA_FIVE_HOME=${ROOT}/opt/firefox
77 
78 update_mozilla_launcher_symlinks
79}
80 
81pkg_postrm() {
82 update_mozilla_launcher_symlinks
83}

Meh. This might help, might not. Looks like you'll need to know bash to do this. Anyways, I haven't really got time to mess with it, sorry.

Ultio

I have no idea about Linux Console drivers. I'm not that Linux oriented, to be honest. :)
SSC: Try modifying the file and testing both modes.

Nivoc

It runs perfectly on my slackware 10. :)

except the editor. I get this error:

Error initialising sound system
Insufficient digital voices available

Richard Phipps

Is anything being done in the Linux world to resolve these kind of problems?

Some kind of framework to integrate different linux versions for example? As in the way DirectX and OpenGL try to make a common method regardless of the actual gfx board used.

Rampage
Richard Phipps

Ok.. So is it not being used much yet then?

Rampage

I don't think so. Many developers are not aware of its existence.

TANSTAAFL: The freedom to install exactly what you want costs you the easy compatibility :-/.

jamal

Works on my mandrake 9.2. I can hear sound, but no music ...
Cant go thru level 10 but just played for a few minutes.
Great game !! :)

EDIT: Level editor works perfectly

Evert

Any major changes since the last version I was able to try out?
Yes, I agree - it's a very fun game :)

About Linux cross-platform compatibility - bear in mind that part of the problem is Linux (or UNIX in general)'s openness: it's not a homogeneous system such as Windows is, but highly adapted and specialized for whatever hardware it's running on. That's the nature of the beast.
I agree that this sucks somewhat for the average home user with his standard PC, but that's not the (original) target user of UNIX systems, and it's great for advanced users with fancy hardware.

miran
Quote:

Bad. It won't run on my machine. Mandrake 10.

How do you run it? If I double click the file in Konqueror (or any other file manager), it crashes, probably because it doesn't handle paths properly. But if I run it from a console, it works perfectly. Except for music of course, that doesn't work...

SonShadowCat

Thou were right miran. I didn't check music/sound since I have music playing in the background so I'll check later.

Evert

Ultio: I hate to say I told you so, so I'll just say that I warned you about assuming anything about paths and a relation between the location of the executable and the data.
Is there a readme file in the archive? You would probably want to put this in there.

Quote:

I can hear sound, but no music ...

Your soundcard can't play MIDI then, or you don't have it configured to do that. You can work around that by using Allegro's DIGMID driver. You'll need a patch set, and to create an Allegro config file.

SonShadowCat

I don't recall being warned about anything.

Evert

That wasn't addressed to you ;)
Now edited for clarity.

Kitty Cat
Quote:

Ultio: I hate to say I told you so, so I'll just say that I warned you about assuming anything about paths and a relation between the location of the executable and the data.

get_executable_name(buf, len);
(strrchr(buf, '/'))[1] = 0;
chdir(buf);

:)

Ultio
Quote:

I hate to say I told you so, so I'll just say that I warned you about assuming anything about paths and a relation between the location of the executable and the data.

So, the executable can't open up a file ala: fopen("blah"); even if the file is right there in the same directory (if you open it via some kind of file manager?) That seems rather odd. Is there any reason for doing this or is it just a quirk in the OS?

Nivoc, I'm sorry the editor doesn't run. It doesn't make sense that it even initializes sound. That will be on my list of things to fix up for the next revision!

Jamal, glad you like it. :)

Kitty Cat, thanks for that. I'll have to toss that into the code later this weekend and update the game archives as needed. :)

Evert
Quote:

So, the executable can't open up a file ala: fopen("blah"); even if the file is right there in the same directory (if you open it via some kind of file manager?) That seems rather odd. Is there any reason for doing this or is it just a quirk in the OS?

Has nothing to do with the OS, since you can get the same problem in Windows. There's no guarentee that the directory the exectuable is in is the active directory, ever.
You could argue that the file browser should start the exectable with the current directory as its working directory, but on a system where binaries conventionally live detached from their associated data in a dedicated (part of the) filesystem (namely, /bin or /usr/bin), that's rather bad and pointless behavior too. And ofcourse, it presumes something about the user, namely that he will start the binary through a file browser.

Quote:

Kitty Cat, thanks for that. I'll have to toss that into the code later this weekend and update the game archives as needed.

Yup, that's the easiest way to do it.

Oscar Giner

Works perfectly on SUSE 9.2 64 Bit :D

[edit]
But if I execute it from Knonqueror it doesn't just quit without any message as SSC said ::). It gives an error about not finding the data.

Gnatinator
ultio said:

So, the executable can't open up a file ala: fopen("blah"); even if the file is right there in the same directory (if you open it via some kind of file manager?) That seems rather odd. Is there any reason for doing this or is it just a quirk in the OS?

Oddly enough, my OSX system does that same thing :P

Heres some code I whipped up to fix the problem (which is being activley used in outer-rim pod digger):

void ConvertToDirectory(char s[]) {
  int endlength = 0;
  int spos = 0;
  
  while (s[spos] != '\0'){
    spos++;
    endlength++;
    
    if(s[spos] == '\\' || s[spos] == '/'){
    endlength=0;}
    }
    
    s[spos-endlength] = '\0';
}

Then all you need to do is call something like this:

// Get Executable path, then find executable directory
get_executable_name(exe_path, 1024);
ConvertToDirectory(exe_path);

This will properley format and store the exact executable path in exe_path. To use the path all you need to do is append it to the names of your data files and bingo. :)

Edit
Kitty Cat:
(strrchr(exe_path, '/'))[1] = 0;This line crashes my program. And im really not sure what it does. :P

miran
Quote:

And im really not sure what it does.

It finds the last occurance of '/' in the string and replaces the next character with a NULL terminator. Of course if there is no '/' in the string (but a '\\' instead) the code will very likely crash. What I do is this:

get_executable_name(buf, len);
(get_filename(buf))[0] = 0;

Ultio

A new version of the archive is now up at the site which, hopefully, addresses the file browser launching issue. It's the same archive, so if you want the new stuff just download exactly what you did last time. :)

Matt Smith

Runs fine on Mandrake 10 here (only from console) :) edit: and no sound, but I have that problem with various things (like flash plug-in)

HoHo

runs fine on my Gentoo when launcing from console. Opening in KDE gives an allegro message complaining about datafiles not found.

Ultio

Hm. Still complains about datafiles not being found, eh? I thought I fixed it. I'll have to take a look at it once again.

Rick

This is a very fun game. Level 8 is just mean. Level 10 was hard, and level 13 is tricky. I quit when I got to level 14 after seeing all those transporters. My brain can't take much more. Is there a way to save your progress?

[EDIT]

OK, I just did 14. Not that bad. After awhile your mind start to think differently.

Did 15. This is a great game.

16. I can't stop. It's like the game has me in a dream world. :)

Ultio

Hit the S key while in gameplay to save your progress. This is one of the major flaws of the game (not having a save game menu item in the main menu list).

:) Glad you're enjoying it so much.

Evert

I actually didn't have any problems finding the s key to safe my progress... I think I was at level 34 or something a few days ago, haven't played since.
Really nice game... must have beenhell to think of all those levels though. I usually have to think a while on each level, even if I do know in principle how to solve it. Really great stuff.

Ultio

The main reason the game initially took so long to release was because I was brain fried trying to make new and unique levels. It's a hard process once you've used up all of your little "tricks" for making difficult levels. You eventually learn to adapt a little bit. You'd be surprised how many of those difficult levels were created merely out of luck; and by that I mean mashing tiles around and coming up with something I could possibly work with. :)

The reason I say this is one of the major flaws of the game is that saving (restarting and changing songs) doesn't adhere very well to the user interface I set up. Everything else in the game is user driven. Of course, I'm not saying the keyboard features should be removed, I just think there should be menu items to accompany them. :)

Thanks for the kind words. I'm glad you're having such a fun time with it. Only 6 more levels to go!

Peter Wang

Just wanted to say as well, this is a really great game! Thanks a lot. I only have one small suggestion, which is to make switching between windowed and fullscreen modes easier (e.g. ALT+Enter).

Evert

If you do more work on this, I'd love to be able to use my gamepad with this game... but, well... wishful thinking I suppose. :)

Ultio

That's a really good idea. I don't think it would be too hard to do with the current code I have. :) Maybe for a 1.03 or 1.10 release if any of those ever happen? ;)

Rick

I can't get level 31. Ultio, anyone?

Evert

31 was a little bit tricky. First move right (make sure you replace breaking blocks with new ones, so that you can always walk back) to place a block to prevent you from plunging to your death, then move back left. Go down the left side and enter a teleporter. I don't remember the exact sequence, and I remember screwing up by misplacing a block up to five times after I'd figured it out... anyway, hope this little hint helps some...
Oh, you may have to block the teleporter immediately left from where you started by placing a block over it, I forget... could be another level I'm thinking of.

Rick

Let's do it this way. :)

I've circled in red the blocks that I can't seem to get read of.
http://www.rickpiller.com/level31.jpg

This is as far as I can get, then I'm stuck
http://www.rickpiller.com/level31a.jpg

Evert

Ok, I'll make pictures later on, but first explain.
Remove the far left block you placed (which replaces a crumbling block). Drop down, and build a block under you. Kneel and destroy the block over the crumbling block, destroy the block under you and you can destroy the crumbling block by walking onto it. Drop down and enter the teleporter.

EDIT: pictures

zep1.pngzep2.pngzep3.png

Rick

brilliant. Thank you.

Rash

I can't save using Ubuntu.

xmessage said:

Could not save the save file!

In terminal it said:

Shutting down Allegro due to signal #11
Segmentation fault

Evert

Do you have write permissions in the current directory (ie, teh directory where you started the game from)?

Anyway, I finished the game! Was it just me, or is level 40 extremely easy? I think the level that gave me the most problems was 37, where I had to constantly think ahead to place blocks and I ended up forgetting one or the other during most of my attempts.

Once again, sweet game :D

Rash

I unpacked the game in the home directory, why shouldn't I have write permissions there?

Evert

You should. Just asking, since that's one of the things I'd imagine could cause this... do you have enough free space on the filesystem?

Rash

Of course I do. The fact you're asking such a basic question seems to suggest there's something more going on here.

Evert

Just checking basic things, as I have no idea what might cause such an error... I assume you can save files normally with other Allegro programmes (eg, grabber)?

Rash

Yes, I can save with grabber.

Ultio

Sorry, but I have no idea what Ubuntu is! Hm. It's saying it cannot save the save file, so, obviously, it's trying to save to data/saves. I'm hoping this directory still exists? I'm not sure if gzip leaves out empty folders or whatnot on some systems. This could be the case.

Evert: Level 40 is not the hardest level of them all. With the original release of ZD level 40 was impossible to beat. Somehow my working version never made it to the end game. Thus, I lost what I had thought was the coolest level ever and had to quickly modify level 40 to be beatable. If you're up for more of a challenge grab the extra 10 levels I created. Some of them are pretty basic and easy, while others are pretty tough.

Rash
Ultio said:

Sorry, but I have no idea what Ubuntu is!

A Linux distribution based on Debian (hmmm, should I add the word GNU to it? ::)).

Quote:

Hm. It's saying it cannot save the save file, so, obviously, it's trying to save to data/saves. I'm hoping this directory still exists? I'm not sure if gzip leaves out empty folders or whatnot on some systems. This could be the case.

You've nailed the problem, the directory saves indeed doesn't exist. I used File Roller to unpack the file. You could (and should) easily program for this eventuality.

Quote:

With the original release of ZD level 40 was impossible to beat.

Ever thought about supplying a solution for every official level and making the program do a correctness test every time one's loaded?

Ultio

That would be rather impossible seeing as how there are unlimited ways to complete a level. Of course, I could smarten it up so it wouldn't sit in a never-ending loop building up blocks and breaking them over and over again.

It would just be more hassle than what it's worth, in my opinion.

Rash

No, I'm not talking about a level solver, just a solution verifier to which you would also supply a human-generated solution.

Thomas Fjellstrom
Quote:

I used File Roller to unpack the file.

A what?

You may have also tried unpacking with a non broken unpacker.

Rash
Thomas Fjellstrom said:

A what?

File Roller. It's only a graphical front-end.

Rick

I was thinking you should create a solution guide. Just a .doc file or something. Might be nice to see how you intended to have us solve it and how we actually solved it. Just a thought.

Ultio

I was originally going to do this with "replay" files, much like how the credits sequence works where Zep will move on his own. I figured I should best leave it to players to figure out the solutions; that and I'm still waiting for a rogue site to pop up with Zep's Dreamland level solutions. It's just something that I'd like to see happen; you know, boost my ego just a little bit more!

Another issue with the replay files is that they could be easily hacked to make Zep stop "moving" at whatever point someone who knew what the contents meant wanted. Thus, they could implement pseudo saves used to save the game mid-level, which is against the rules of the game.;)

As for the solution verifier, that would be me. I personally went through and verified that all of the levels were in fact beatable. The reason level 40 (unbeatable) slipped through is, as I already said, that either I must have misplaced the working version with a non-working version and missed the switch. It would be pretty slick though.

Daniel Schlyder

Are you sure it is legal to distribute the game this way? Doesn't the license of libc (parts of it, anyway) prevent this? I'm curious whether you have looked into this, because I've been thinking of linking one of my own games completely statically, but could never quite figure out which parts of libc are under the GPL variant with the special exception for binaries and which are not.

Ultio

We got into this issue in the beginning of the thread. As far as I know it should be okay. The only library outside of the standard C/C++ libraries I use is Allegro. If you happened to stumble upon something that might suggest that it isn't legal, then let me know. I'd have to take the game down if it were the case.:-/

Daniel Schlyder

Sorry, I didn't mean to be all negative or anything, it's a good game. I read through the beginning and still missed the discussion of this issue. :( Oh well, I was sorta hoping you had proven it legal, since I can't quite figure it out, specifically the license of libc. libstdc++ is ok as it's GPL, but with a special exception that allows static linking. I've read posts online that claim at least parts of libc are similarly licensed, but can only find the plain LGPL on its homepage. :(

Thread #454537. Printed from Allegro.cc