Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
Zed

Source Ports and Windows 8

Recommended Posts

Hello Doomworld.

After a long wait, I was finally able to put my hands on my new PC a couple of weeks ago. Now, Windows 8 (well, 8.1) has a slightly different interface (is that the correct word, "interface"?), but I could master it easily after a couple of days.

Now, one of the first things I did was copy my IWAD collection into my new HD. This is where problems began.

I installed (and ran) successfully Chocolate Doom, PrBoom+, ZDoom, Zandronum, GZDoom, Risen 3D and 3DGE, but for some reason Legacy won't work. It shows me this after I try to start it:



doomlegacy.exe - Error del sistema

El programa no puede iniciarse porque falta SDL_mixer.dll en el equipo. Intente reinstalar el programa para corregir este problema.

doomlegacy.exe - System error

The program can't start because SDL_mixer.dll is missing. Try re-installing the program to fix this problem.



First of all, I don't know what it means with re-install. I just downloaded and unzip, don't know if that counts as an "installation".

Second, in my Legacy folder there's a subfolder named SDL_mixer_1.2.8, which contains SDL_mixer.dll. So, I copied it and pasted in the main folder, and now the message is:

The program can't start because SDL.dll is missing. Try re-installing the program to fix this problem.

So, obviously I'm doing something wrong.

Third, I also wanted to give some other ports a try (especially jDoom and vaVoom, since there are a couple of wads designed for them that I would like to play), but seeing this problem, and considering they are old ports, I don't know if I should even bother in the first place.

I still have my other 3 computers (Windows 98, XP, and Vista), so if there's definitely no way to do it, I'll just do it in the old ones, so it's really no big deal, just wanted to know what to expect.

I appreciate any info you can provide.

Thanks in advance, and good day.

EDIT: Sorry, I forgot my system specifications:

Windows 8.1
Processor: AMD E1-2500 APU with Radeon(TM) HD Graphics 1.40 GHz
System: 64-bit, processor x64

Share this post


Link to post
Zed said:

The program can't start because SDL.dll is missing. Try re-installing the program to fix this problem.

So, obviously I'm doing something wrong.


I'm not so sure about that. If Legacy doesn't run out of the box I'd say that Legacy is doing something wrong!

Having the end user sort out the DLL dependencies is incredibly bad style!

Zed said:

Third, I also wanted to give some other ports a try (especially jDoom and vaVoom, since there are a couple of wads designed for them that I would like to play), but seeing this problem, and considering they are old ports, I don't know if I should even bother in the first place.



So, Legacy comes with a bad package. This doesn't mean that other ports do, too.

Share this post


Link to post

In what sense is "jDoom" an "old port"?? The newest version of Doomsday was released only a couple of days ago...

Share this post


Link to post
Graf Zahl said:

I'm not so sure about that. If Legacy doesn't run out of the box I'd say that Legacy is doing something wrong!


I was thinking something like this. I mean, I got half a dozen source ports to work but Legacy won't? There must be something wrong with it. I considered asking in the Legacy forums, but that place is like a ghost town.

DaniJ said:

In what sense is "jDoom" an "old port"?? The newest version of Doomsday was released only a couple of days ago...


Oh, I wasn't aware that jDoom and Doomsday were the same port. Is good to know it, I'll give Doomsday a try and will tell you how it turned out.

Thanks for your replies, now I just want to know what's up with Legacy, and what to expect from vaVoom.

Share this post


Link to post

Before Doomsday, back in 1999, Skyjake made three separate ports, JDoom, JHeretic and JHeXen.

Rather than maintaining three separate ports with a lot of overlapping code, he merged them into one port, Doomsday.

However, some people, technically inaccurately, refer to Doomsday as 'JDoom' to this day.

Share this post


Link to post

I think I got Legacy 1.41B and 1.42 to run on Windows 8, but I had to use nvidia inspector to re-enable extension limits to get OpenGL mode to function without crashing the engine.

The more recent builds give me weird issues.

I keep 1.41B on life support because I think the bots are fun in death match. :P

Zed said:

Oh, I wasn't aware that jDoom and Doomsday were the same port.


In my mind I'll probably never stop calling Doomsday JDoom, lol.

Give it a try, it's a very different feeling but cool engine.

Share this post


Link to post

DoomLegacy 1.45 binaries have been sent out, but have not got to the SourceForge download page yet. A README in 1.45 has been improved to explain this better, in one more place. The other explanation is in the html docs, installation section.

It sounds like a download of alpha4, or alpha5.

Doom Legacy 1.45 SDL version requires that SDL libraries be installed first. In the case you do not have SDL installed already, some libraries are provided, for some binary packages.

I put them in a separate directory so that they do not overwrite any other SDL files you may already have installed. The SDL libraries provided in the binary are not the latest files, they are the libraries used to compile and test. The directories indicate what version of SDL they are from, so the user knows whether their current version is newer or older.

SDL is a requirement for Doom Legacy. The user is expected to install SDL first and are expected to have a newer SDL version installed than those provided in some binary packages.

Older SDL libraries may be buggy on some systems. The user may have an improved version.
SDL is getting common enough that I can expect that user may have installed a newer version. It is not appropriate to automatically dump an older version of SDL in place of the new version. This can make old SDL bugs come back. My most important rule of installation is to not mess up newer versions of support libraries.

Those messages are coming from Windows8, where they think that every program comes with an installer.

DoomLegacy is developed on Linux. The team no longer has any active members that use Windows, so the Windows version is whatever we can compile on whatever we can manage. I have an old win98 machine. Another member has Wine on Linux.
There is no chance I am going to try to make a windows installer.

Share this post


Link to post

I think as far as Windows builds go you might as well just put the tested libraries into the Windows binaries and be done with it, as that is standard practice for other SDL based engines (and doesn't require you to bother with a Windows installer, which most engines don't have anyway).

In Windows whenever a program makes a call for a library it tends to check the working directory before moving on to System32, so even if you include your library in the program's directory it will not overwrite the properly installed one, it just won't use it as the provided one will take precedence.

I don't think many people actually install the SDL libraries directly on Windows for Doom engines.

I know that's bizarre practice compared to Linux where users are expected to just install the libraries and be done with it, but you'll find the majority of people who download a Doom engine on Windows and run it just to see an error about a missing file is going to just write off the engine and move on.

For reference I have about 7 Doom related programs on Windows that all run on SDL and they all use their own libraries in their respective directories. Probably not efficient, but it keeps my Doom installation portable; no need to install stuff if I just plug my flash drive into another Windows PC to play some Doom.

Share this post


Link to post

@wesleyjohnson & Mike.Reiner:

Thanks for the explanation, but unfortunately, I'm an idiot and I still don't know what to do. For example, I have no idea of what is a SDL library.

Could you explain it to me like if you were saying it to a 5 year old?

Thanks for your replies.

Share this post


Link to post

After you unzip the Doom Legacy alpha zip, take everything from those two SDL folders and put them into the folder above them (The same folder doomlegacy.exe is in).

Share this post


Link to post

A Library is an addition to the Operating System that provides a service.

Direct-X is a Library that provides game speed rendering and game control interfaces to any game that wants to use it.
SDL is another Library that provides game speed rendering and game control interfaces to any game that wants to use it.

Doom Legacy SDL version requires that the machine have the SDL library installed. This is the recommended version, and the design target.

The problems with SDL libraries are severe enough that I will not risk DoomLegacy getting blamed for SDL bugs. DoomLegacy using old SDL library copies, when the user has installed a newer version, makes DoomLegacy look like the cause, and users will not diagnose this correctly. The install README for 1.45 makes this much more explicit, for those who expect drop and play behavior.

SDL libraries are a Requirement, not something that is automatically installed for the user. Any SDL run-time libraries that you find in the DoomLegacy distribution are like those directories on the game CDROM that had an old version of Direct-X, in case you did not have a new enough version for the game.

The Windows OS searches for the libraries as they are encountered.
Where Windows wants them is something that I cannot make a blanket statement about, as the latest version of windows that I have for Doom work is Win98. Putting them in the same directory as the doomlegacy binary usually works, although newer versions of Windows may change that too.

A proper installation of SDL according to the instructions from the developers of SDL, is what is recommended. They are much better at solving the vagaries of Windows versions.

The SDL developers will deal with SDL bugs by releasing newer versions of SDL. They may even get around that Windows music mixer problem. The user will install these newer versions of SDL as they choose. Doom Legacy takes the approach of adapting to the version of SDL encountered, and not chaining the user to the SDL version that was around when it was released.

There is also a Doom Legacy WinNative version that uses Direct-X but I cannot verify it because my alternative Direct-X headers are causing run-time library crashes.
Someone with better Direct-X headers may have better luck.

Share this post


Link to post

A lot of words missing the forest for the trees.
As has been said before 'installing' libraries is not recommended in this case. SDL has absolutely no place in some common directory and cause trouble for other applications. Especially recommendations like 'put it into your 'Windows\System' directory are better forgotten immediately. That may have been acceptable when Windows XP was new but these days it's just an invitation for trouble.

Just put it alongside your .EXE in your zip in the same directory, save the wall of words and be done with it - just like most other ports do with their dependencies. GZDoom has been distributing FMOD like this for 9 years and I never even once got a report that a user was unable to install it.

The way you are doing it will not generate confidence among your users, only confuse people.

Also, to be clear about it: DirectX is not a library, it's an installable system component. Of course it requires a very different setup than a small self contained library like SDL.

Share this post


Link to post

Wesley is trying too hard to pretend that Windows is like Linux. In Linux Land, you install SDL into a location like /usr/lib (your package manager usually does this for you) and be done with it for all SDL applications. Library bugs can get fixed, security exploits repaired, and all the applications depending on it don't need to be recompiled or redownloaded to benefit from such...

Now, the shocking words: Windows is not Linux. Back in the Windows 3.x and Windows 9x days, developers treated C:\WINDOWS\SYSTEM as the equivalent, and Microsoft was somewhat responsible for encouraging it. What happened was DLL Hell, where certain libraries or programs were sensitive to version exactness and having the wrong mismatches would cause programs to not work or even worse, crash (whether themselves or the whole operating system -- yes, it was that fragile back then). When Windows 2000 and XP started to replace 9x, this practice was discouraged and by Windows Vista, WinSxS was invented to mitigate the technical negative effects and you can't write to the system directory at all without turning off some security features (and file system ACLs) that nobody in their right mind should ever mess with.

Long story short: Windows is not Linux. Stop pretending that it is and include your DLLs along side the EXEs. No complicated install procedures and no compromising the OS's security and stability, as well. If you want people to run a better OS, then oh well. Your responsibility to your Windows users is to make the setup process as simple as possible and as safe as possible.

Share this post


Link to post
chungy said:

Wesley is trying too hard to pretend that Windows is like Linux. In Linux Land, you install SDL into a location like /usr/lib (your package manager usually does this for you) and be done with it for all SDL applications. Library bugs can get fixed, security exploits repaired, and all the applications depending on it don't need to be recompiled or redownloaded to benefit from such...


I think it's debatable what approach is better. At least with each application having its DLLs in the same directory prevents any kind of cross pollution. And please don't tell me that version incompatible libraries do not exist on Linux. Linux developers are no more perfect than Windows developers so the same mistakes can be made.

chungy said:

If you want people to run a better OS, then oh well



Oh, please! Now who is biased here?

Share this post


Link to post

OK, so I tried what you said, and still didn't work. Then I started messing with the configuration and other stuff, and now it works (!?). I have no idea what I did, but thanks anyway for your replies, they were certainly very helpful.

Oh, and I can also run vaVoom :)

Thanks and good day.

EDIT: Doomsday also working. Thanks again.

Share this post


Link to post

Glad that you got it working. Don't know what problem you had as "didn't work" is not a useful diagnostic.

I am disgusted with these other extraneous comments. Please stop with the imaginings of what you think I am doing in the Doom Legacy distribution. It is nothing different than a large number of other Windows games.

Trying to install to Windows like it was Linux? I keep referring to all those Windows games on CDROM that also provided a courtesy copy of Direct-X. Please stop imagining strange things.

SDL is Required. The safest thing is for the User to get the latest SDL and install it according to the SDL developers instructions. Please ignore those SDL library files (provided only as a courtesy) if you cannot cope with them. It is likely that I will not provide them in future releases.

An OpenGL library is also required. The user must get OpenGL for their video card and install it according to instructions.

A mouse and sound card are also required. Unlike some previous Windows games, Doom Legacy does not provide courtesy software for those.

The reason I do not have ZDoom on my machine is because of the REQUIRED FMOD library that I cannot get.

Direct-X has library headers, and is installed like a library, has versions like a library, is optional like a library. That the Microsoft OS installs like a component is only distribution. Such noxious commenting has nothing to do with the posted question. SDL is just like Direct-X as far as the game installation and I do not care at all about anything else in answering the question posted. I have plenty of Windows games that came with a Direct-X directory on the CDROM.

Share this post


Link to post
wesleyjohnson said:

I am disgusted with these comments. Please stop with the imaginings of what you think I am doing in the Doom Legacy distribution. It is nothing different than a large number of other Windows games.



Yes, it is. Other games are complete, complex packages that need to ensure that everything is in order to work.

All you have is a tiny distribution with an executable, a few DLLs and data files. Also keep in mind that people coming here are not they typical idiot user. Most source ports come without installers and none of them have any problems with users getting things set up.


wesleyjohnson said:

Trying to install to Windows like it was Linux? I keep referring to all those Windows games on CDROM that also provided a courtesy copy of Direct-X. Please stop imagining strange things.


Yes, but remember when that was? It has been a long time since games had a DirectX redistributable with them.

wesleyjohnson said:
SDL is Required. The safest thing is for the User to get the latest SDL and install it according to the SDL developers instructions. Please ignore those SDL library files (provided only as a courtesy) if you cannot cope with them. It is likely that I will not provide them in future releases.
[/B]



Argh! Now that's really being ignorant towards your users. Congratulartions for shooting yourself thoroughly in the foot!
I know that you are primarily a Linux user so some lack of knowledge about how Windows users needs to be accepted. But remember a few things:

1. You want to make using your port as simple as possible.
2. You do not want to burden your users with installing some baggage they do not comprehend.
3. You want to ensure that you distribure a WORKING copy of your engine.

In this particular case, all you need to do is do put Legacy.exe, SDL.dll, SDL-Mixer.dll and your data files in a Zip and be done with it. You DO NOT want to have your users hunt for SDL. You do NOT EVEN WANT to have your users INSTALL SDL! (Huh? This engine wants me to INSTALL some other stuff? Away with it!)

Furthermore, consider SDL a volatile library. Ship it with the one version you built against, no other! People will be nagging YOU, not the SDL developers if things go wrong.

wesleyjohnson said:
An OpenGL library is also required. The user must get OpenGL for their video card and install it according to instructions.
[/B]


... as should already have been the case when the graphics driver has been installed. It's really strange that you are making an issue out of such trivialities. As a developer of a GL-based source port myself I can tell you that the only time GL becomes an issue is if the user got such bad graphics hardware that it's simply not compatible,

wesleyjohnson said:
A mouse and sound card are also required. Unlike some previous Windows games, Doom Legacy does not provide courtesy software for those.
[/B]


WTF? Are you joking or are you really meaning this seriously? What do you thing Windows users are? Stone age troglodytes?

wesleyjohnson said:
The reason I do not have ZDoom on my machine is because of the REQUIRED FMOD library that I cannot get.
[/B]


What's making it impossible to get it?
If you are on Linux, thr links are right here, under 'Compiling on Linux':

http://zdoom.org/wiki/Compile_ZDoom_on_Linux#FMOD_Links

wesleyjohnson said:
Direct-X has library headers, and is installed like a library, has versions like a library, is optional like a library. That the Microsoft OS installs like a component is only distribution. There is no point at all to such noxious commenting. SDL is just like Direct-X as far as the game installation and I do not care at all about anything else in answering the question posted. I have plenty of Windows games that came with a Direct-X directory on the CDROM. [/B]



SO WHAT?
Completely irrelevant.

FMod is also a library, so are many, many other DLLs.
Most of these DLLs, though, unlike DirectX, are self contained and supposed to be distributed along with the executable. In only a very few cases there's a need for a 'runtime installer', and oftentimes such packages are ignored by developers because they create a major hassle with distribution. SDL is - read this carefully - NOT AMONG THOSE!!!


And please think about all this a bit - before feeling 'disgusted' again. If you want to get positive feedback on Windows, make sure that your port is easy to use. Legacy has been terminally ill for 10 years and it will be hard anyway to get out of that. Don't make it harder than necessary by shrugging off criticism in such a condecending manner.

Share this post


Link to post
wesleyjohnson said:

SDL is Required. The safest thing is for the User to get the latest SDL and install it according to the SDL developers instructions.

SDL has no installation procedure for Windows. You're supposed to put it right next to the EXE.

Share this post


Link to post

Not to mention using a different version of SDL than the one the port was linked and tested against has caused problems in the past. This is why each release of Eternity includes the version of SDL against which it is validated to work.

Share this post


Link to post
wesleyjohnson said:

SDL is Required. The safest thing is for the User to get the latest SDL and install it according to the SDL developers instructions. Please ignore those SDL library files (provided only as a courtesy) if you cannot cope with them. It is likely that I will not provide them in future releases.

Sounds like the last nail in the coffin of Doom Legacy then. It's been a long time coming.

It's rather bizarre seeing you bend over backwards trying to rationalise making it as difficult and frustrating as possible for your users to install.

Share this post


Link to post
fraggle said:

It's rather bizarre seeing you bend over backwards trying to rationalise making it as difficult and frustrating as possible for your users to install.

If wesleyjohnson only has win98 then neither those DLLs nor the windows build of legacy is going to get developer-tested on anything newer. In that case, it could be argued it's more of a disservice to users to claim windows is still supported when the project's current sole developer doesn't use or even have access to (most common and/or non-obsolete versions of) it.

I think a better course of action would be to put out a call for volunteers to maintain the windows port otherwise support for it will have to be regretfully dropped. If no one steps up, well, no big loss because evidently there were no users left, and you can drop the whole windows release, not just the support libraries. :-)

Seriously though it's a difficult situation, I don't think there are any easy answers.

Share this post


Link to post
RjY said:

Seriously though it's a difficult situation, I don't think there are any easy answers.


Literally all we are asking is that the developer just put the .dlls in the same folder as the executable. That's it. He's caught up thinking that SDL is a library that should be installed like directx or something.

I looked up the instructions that he advised users to follow when downloading SDL. Check it out.

SDL2-2.0.3-win32-x86.zip contains two files:
README-SDL.txt and SDL2.dll

Here are the contents of the readme:

Please distribute this file with the SDL runtime environment:

The Simple DirectMedia Layer (SDL for short) is a cross-platform library
designed to make it easy to write multi-media software, such as games and
emulators.

The Simple DirectMedia Layer library source code is available from:
http://www.libsdl.org/

This library is distributed under the terms of the zlib license:
http://www.zlib.net/zlib_license.html

Not helpful to an end user. Obviously meant for developers.

It's the exact same information in SDL-1.2.15-win32.zip, the file containing the 1.2 dll.

The wiki on their site talks about how to use the various features.

And I don't even know where the hell sdl_mixer is on the site.

http://www.libsdl.org/

A user would be reduced to Google searching each dll the executable complains about and manually putting them in the game's folder.. assuming they knew to do this.

Share this post


Link to post
Mike.Reiner said:

A user would be reduced to Google searching each dll the executable complains about and manually putting them in the game's folder.. assuming they knew to do this.

Which is extremely dangerous to do these days. Hey, here's a DLL! It's not any sort of malware, spyware, etc., we promise!

Share this post


Link to post
Graf Zahl said:

I think it's debatable what approach is better. At least with each application having its DLLs in the same directory prevents any kind of cross pollution. And please don't tell me that version incompatible libraries do not exist on Linux. Linux developers are no more perfect than Windows developers so the same mistakes can be made.

I guess Linux programs being open source, as well as most of the installation process being curated by distro operators, allows better transparency on how libraries should be categorized, to avoid clashes and incompatibilities.

Software for Windows or OSX meanwhile is largely closed-source and made by arrogant companies who'd rather plaster their brand on everything, including the setup. And besides that, there are a lot more users, and they're not the Linux kind who know how to operate their OS in case of a failure (offtopic: while Linux is like a car that needs service if it gets damaged, Windows is like a living self-healing organism).

Such "arrogant" companies porting their apps (usually from the technical sector) to Linux too, they have a totally different installation procedure than the package-manager norm. Usually some binary executable, or Java-based installer, or even some optimized Wine app, installed god knows where (probably into /opt/, or just the /home/USER/ area)

</sleepy post>

Share this post


Link to post

Just wanted to say that I downloaded the latest Doom Legacy (1.45), which unlike the last version (1.44 alpha 5), is not zipped, but rather an executable. So, I double-click, hit "I Accept", "Next", etc. when required, and voilá. Works perfectly without any complication (no need to copy dll's, etc.), which makes me a happy guy.

Again, thanks for your comments.

Share this post


Link to post
Graf Zahl said:

And please don't tell me that version incompatible libraries do not exist on Linux.


Every OS on the planet has its problems and do note that LINUX based operating systems can be as easy to use as windows if needed. This is just an example.

1 : dependency hell.
Not being able to install the correct packages because the versions
do not match, or just because of the the high rate of changes in the entire linux systems. If you are unprepared for it, and force a wrong version to be installed the true hell might start.

2 : the fast rate of updating and changing the systems.
Try to install some software from 6 years ago in the major up to date distributions and you will already encounter many needing re-programing because their package needs are already to old...

Share this post


Link to post
Ladna said:

Just statically link the libraries. It's not that hard (https://github.com/camgunz/mingw64-builds).

I second this. MinGW-w64 is the most stable and featureful compiler suite for Windows, x86 or x86_64. With MSYS it is easy to create a fully static set of libraries by compiling each dependency with configure options "--enable-static --disable-shared". Bam. For further greatness, when you are linking your program add the following flags to the linker flags: -static-libgcc -static-libstdc++

Enjoy fully static executables. I like to follow this up by using "strip -s exename" and then use UPX to compress the executable. These steps make for very small builds that are easy to use.

MinGW-w64 is really easy to use now, too. Download a compiler package and MSYS from their website and put them in a folder. Add MinGW's bin folder to your PATH under environment variables and run msys.bat. To compile, use:

./configure --prefix=/c/Users/Blah/MinGW --disable-shared --enable-static
make
make install

Magic.

Share this post


Link to post
MP2E said:

I second this. MinGW-w64 is the most stable and featureful compiler suite for Windows, x86 or x86_64.



I have never heard a more nonsensical statement about Windows compilers EVER.

Hell, GCC doesn't even properly support Windows exceptions, so how can you consider it 'most featureful' and 'most stable'? This is an essential feature, yet the compiler cannot handle it.

And I won't even go into debugging...

I don't think many people developing for Windows use it, aside from cross compiling Linux people.

There's no magic here, only horror. Windows developers are used to better, more productive packages.



About statically linking such code, I'm not sold on it. Under Windows it's common practice to distribute DLLs along with an executable, so ultimately there's nothing gained from it.

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×