Devilution: Cross-platform support?

Created on 18 Jun 2018  路  11Comments  路  Source: diasurgical/devilution

I noticed that devilution can be compiled in Linux to run it using wine, but I was wondering if there is any plans to have a native binary for other platforms like Linux or OSX.

enhancement

Most helpful comment

That can be seen as a mid-long term goal, however:

(...) to reverse the user interface (DiabloUI) to help make Diablo cross-platform.

The title-screen/UI code has not yet been reversed, but even then it's probably useless. It uses a dialog system which is specific to Windows and causes the black screen issues under Wine. That code will have to be decompiled and re-written (as with the PS1/MAC port). The Hell 2 looks like it accomplished this, but it's unlikely the author would share the source.

Other than that and network code, @mewmew has a Smack32 video decoder written in Go, and StormLib will replace the storm.dll. So it's just a matter of replacing the DirectX calls with OpenGL ones.

(Personally I think Diablo looks better under Wine, OGL shaders are much smoother :stuck_out_tongue: )

All 11 comments

That can be seen as a mid-long term goal, however:

(...) to reverse the user interface (DiabloUI) to help make Diablo cross-platform.

The title-screen/UI code has not yet been reversed, but even then it's probably useless. It uses a dialog system which is specific to Windows and causes the black screen issues under Wine. That code will have to be decompiled and re-written (as with the PS1/MAC port). The Hell 2 looks like it accomplished this, but it's unlikely the author would share the source.

Other than that and network code, @mewmew has a Smack32 video decoder written in Go, and StormLib will replace the storm.dll. So it's just a matter of replacing the DirectX calls with OpenGL ones.

(Personally I think Diablo looks better under Wine, OGL shaders are much smoother :stuck_out_tongue: )

@mewmew has a Smack32 video decoder written in Go

The Smacker video decoder is very much in the early works. With a Hackathon or two it may be done, but for now it is not usable.

There is few D1 open source variants. For example on early stage is Freeablo:
https://github.com/wheybags/freeablo
Maybe you can use something for new UI from this project?

@baszczewski Freeablo is indeed a very impressive project. However, as it's a rewrite, the code would need an overhaul to work with the original game. Last I heard the UI was actually still unfinished, and Wheybags had planned on implementing it later on. That was circa-2015, though...

I think this is possible I did some work with this back in 2004..... I will cross my fingers and see if I can find any sources lying around.

Freeablo now use nuklear as it's ui library.
It's a simple and header-only imgui library written in ANSI C and rendering with OpenGL backend.
@galaxyhaxz I don't if it helpful for this project.

@mewmew Looks like we won't need a video decoder: Rad Video Tools

I think once we get Diablo running on linux, we could make a script which will convert all assets in the MPQ to open source formats. The script could use the Rad tools to convert the .smk to an open source format. Then repack everything back up into a .zip format, so we don't need the MPQ library at all!

@mewmew Looks like we won't need a video decoder: Rad Video Tools

That's great! Just have to find a suitable format to convert it to.

The requirements for a video format, as I see it is:

  • Open source decoders
  • Open (and royalty free) specification
  • Lossless (both audio and video)

I think once we get Diablo running on linux, we could make a script which will convert all assets in the MPQ to open source formats. The script could use the Rad tools to convert the .smk to an open source format. Then repack everything back up into a .zip format, so we don't need the MPQ library at all!

Definitely! This is something @7i and I have discussed for a long time, that any remake of Diablo should have a pre-process step that converts all of the original game assets to modern file formats with open specifications.

This is the approach taken by spark to add Diablo 1 game assets to the FLARE game engine. For reference, see the opensourceami scripts.

This is also one of the objectives of Djavul:

  1. Convert the original game assets to file formats with open specifications (subproject formats).

More specifically tracked by the formats subproject.

As read in the comment in MyAbandonware, I feel it would be nice to have the mobile (Android) version of it too=)

LIL LORRIR 2018-06-26 0 point Windows version

I loved the original Diablo game on Sony Play station then later on my computer. I would love to be able to play it on my phone also.

Though I do not play games on Android + have no idea whether a phone is suitable for an ARPG.

@galaxyhaxz,

(...) to reverse the user interface (DiabloUI) to help make Diablo cross-platform.

(...) That code will have to be decompiled and re-written (as with the PS1/MAC port). The Hell 2 looks like it accomplished this, but it's unlikely the author would share the source.

why would TH2 have to reverse this dll? I haven't been using TH2 (or any mod at all), hence my curiosity.

The author seems to be friendly, BTW:

Contact me regarding the mod via email: [email protected]
Please don't be shy or afraid to write me. If you have any questions or want to tell me something,
go ahead and do that right away. It's OK really. I always answer emails.

Some people could become even his Patreon supporters (eg. me) if that would help sharing the source (given it exists).

Was this page helpful?
0 / 5 - 0 ratings

Related issues

AJenbo picture AJenbo  路  9Comments

AJenbo picture AJenbo  路  8Comments

ghost picture ghost  路  6Comments

AJenbo picture AJenbo  路  8Comments

ghost picture ghost  路  3Comments