Devilutionx как играть по сети
Перейти к содержимому

Devilutionx как играть по сети

  • автор:

Все в порядке, но.

Этот текст мало кто будет читать и мы можем написать здесь все, что угодно, например.
Вы живете в неведении. Роботы уже вторглись в нашу жизнь и быстро захватывают мир, но мы встали на светлый путь и боремся за выживание человечества. А если серьезно, то.

В целях обеспечения безопасности сайта от кибератак нам необходимо убедиться, что вы человек. Если данная страница выводится вам часто, есть вероятность, что ваш компьютер заражен или вы используете для доступа IP адрес зараженных компьютеров.

Если это ваш частный компьютер и вы пытаетесь зайти на сайт, например, из дома — мы рекомендуем вам проверить ваш компьютер на наличие вирусов.

Если вы пытаетесь зайти на сайт, например, с работы или открытых сетей — вам необходимо обратиться с системному администратору и сообщить, что о возможном заражении компьютеров в вашей сети.

Building from Source

Make sure you have Homebrew installed, then run:

Installing dependencies

Compiling

Installing dependencies

Compiling

Windows via MinGW

Installing dependencies on WSL, Debian and Ubuntu

Download and place the 32bit MinGW Development Libraries of SDL2, SDL2_mixer, SDL2_ttf and Libsodium in /usr/i686-w64-mingw32 . NOTE: SDL2 2.0.12 appears to not compile correctly.

Compiling

Windows via Visual Studio

Installing dependencies

Make sure to install the C++ CMake tools for Windows component for Visual Studio.

  • Using vcpkg (recommended)

Don’t forget to perform user-wide integration step for additional convenience.

Install required dependencies by executing the following command (via cmd or powershell):

For the 64-bit version of the dependencies please run this command:

For the 32-bit version of the dependencies please run this command:

  • Manually
  1. Download and place the MSVC Development Libraries of SDL2, SDL2_mixer, SDL2_ttf and Libsodium in USERPROFILE%\AppData\Local\Microsoft\WindowsApps\ .
  2. If dependencies are not found or you wish to place them in other location — configure required path variables in _»Manage Configurations. «_ dialog inside Visual Studio or in cmake-gui.

Compiling

  • Through Open->CMake in Visual Studio
  1. Go to File -> Open -> CMake , select CMakeLists.txt from the project root.
  2. Select Build devilution.exe from the Build menu.
  • Through cmake-gui
  1. Input the path to devilutionx source directory at Where is the source code: field.
  2. Input the path where the binaries would be placed at Where to build the binaries: field. If you want to place them inside source directory it’s preferable to do so inside directory called build to avoid the binaries being added to the source tree.
  3. It’s recommended to input Win32 in Optional Platform for Generator , otherwise it will default to x64 build.
  4. In case you’re using vcpkg select Specify toolchain file for cross-compiling and select the file scripts/buildsystems/vcpkg.cmake from vcpkg directory otherwise just go with Use default native compilers .
  5. In case you need to select any paths to dependencies manually do this right in cmake-gui window.
  6. Press Generate and open produced .sln file using Visual Studio.
  7. Use build/debug etc. commands inside Visual Studio Solution like with any normal Visual Studio project. </details>

This will install the Switch devkit and build a DevilutionX Switch package. If you already have the devkit installed, or are on a non-Debian system, pass the the devkit path to the script like this:

The nro-file will be generated in the build folder. Test with an emulator (RyuJinx) or real hardware.

Nintendo Switch manual </details>

Installing dependencies on 32 bit Haiku

Installing dependencies on 64 bit Haiku

Compiling on 32 bit Haiku

Compiling on 64 bit Haiku

No setarch required, as there is no secondary toolchain on x86_64, and the primary is GCC8+

DevilutionX uses buildroot to build packages for OpenDingux and RetroFW.

The build script does the following:

  1. Downloads and configures the buildroot if necessary.
  2. Builds the executable (using CMake).
  3. Packages the executable and all related resources into an .ipk or .opk package.

The buildroot uses

2.5 GiB of disk space and can take 20 minutes to build.

For OpenDingux builds mksquashfs needs to be installed.

To build, run the following command

Replace <platform> with one of: retrofw , rg350 , or gkd350h .

This prepares and uses the buildroot at $HOME/buildroot-$PLATFORM-devilutionx .

End-user manuals are available here:

  • RetroFW manual
  • RG-350 manual
  • GKD350h manual

Clockwork PI GameShell

You can either call

to install dependencies and build the code.

Or you create a new directory under /home/cpi/apps/Menu and copy the file there. After restarting the UI, you can download and compile the game directly from the device itself. See the readme for more details. </details>

Amiga via Docker

Build the container from the repo root

Build DevilutionX Amiga binary

The command above builds DevilutionX in release mode. For other build options, you can run the container interactively:

See the CMD in Packaging/amiga/Dockerfile for reference.

Copy the necessary files

Outside of the Docker container, from the DevilutionX directory, run:

To actually start DevilutionX, increase the stack size to 50KiB in Amiga. You can do this by selecting the DevilutionX icon, then hold right mouse button and select Icons -> Information in the top menu. </details>

CMake build options

General

  • -DBINARY_RELEASE=ON changed build type to release and optimize for distribution.
  • -DNONET=ON disable network support, this also removes the need for the ASIO and Sodium.
  • -DUSE_SDL1=ON build for SDL v1 instead of v2, not all features are supported under SDL v1, notably upscaling.
  • -DSPAWN=ON build the shareware version, using spawn.mpq from the original shareware; which can still be downloaded for free.
  • -DCMAKE_TOOLCHAIN_FILE=../CMake/32bit.cmake generate 32bit builds on 64bit platforms (remember to use the linux32 command if on Linux).
  • -DCROSS_PREFIX=/path/to/prefix set the path to the i686-w64-mingw32 directory.

Debug builds

  • -DDEBUG=OFF disable debug mode of the Diablo engine.
  • -DASAN=OFF disable address sanitizer.
  • -DUBSAN=OFF disable undefined behavior sanitizer.

Multiplayer

  • TCP/IP only requires the host to expose port 6112
  • UDP/IP requires that all players expose port 6112

All games are encrypted and password protected.

Controller support

DevilutionX supports gamepad controls.

Default controller mappings (A/B/X/Y as in Nintendo layout, so the rightmost button is attack; A ○, B ×, X △, Y □):

  • Left analog or D-Pad: move hero
  • A: attack nearby enemies, talk to townspeople and merchants, pickup/place items in the inventory, OK while in main menu
  • B: select spell, back while in menus
  • X: pickup items, open nearby chests and doors, use item in the inventory
  • Y: cast spell, delete character while in main menu
  • L1: use health item from belt
  • R1: use mana potion from belt
  • L2: character sheet (alt: Start + L1 or ←)
  • R2: inventory (alt: Start + L2 or →)
  • Left analog click: toggle automap (alt: Start + ↓)
  • Start + Select: game menu (alt: Start + ↑)
  • Select + A/B/X/Y: Spell hotkeys
  • Right analog: move automap or simulate mouse
  • Right analog click: left mouse click (alt: Select + L1)
  • Select + Right analog click: right mouse click (alt: Select + R1)
  • Select + L2: quest log (alt: Start + Y)
  • Select + R2: spell book (alt: Start + B)

For now, they can be re-mapped by changing SourceX/controls or by setting the SDL_GAMECONTROLLERCONFIG environment variable (see SDL_GameControllerDB).

Contributing

Wow, does this mean I can download and play Diablo for free now?

No, you’ll need access to the data from the original game. If you don’t have an original CD then you can buy Diablo from GoG.com. Alternately you can use spawn.mpq from the [http://ftp.blizzard.com/pub/demos/diablosw.exe](shareware) version and compile the with the SPAWN flag defined.

What game changes does DevilutionX provide

DevilutionX’s main focus is to make the game work on multiple platforms. An additional goal is to make the engine mod friendly. As such, there are no changes to gameplay, but we will be making some enhancments to the engine itself. For example, the engine now has upscaling, unlocked fps, controller support, and multiplayer via TCP.

Currently the game simply scales the original 640×480 to best fit, but we are working on widescreen support.

Hellfire is being worked on and is mostly done, though not fully playable at the moment.

Battle.net is a service provided by Blizzard. We are not associated with them, so we have not worked on intergrating with their service. </details>

Credits

  • The original Devilution project Devilution who worked on Devilution/DevilutionX
  • And a thanks to all who support the project, report bugs and help spread the word <3

Changelog

Legal

DevilutionX is released to the Public Domain. The documentation and functionality provided by Devilution may only be utilized with assets provided by ownership of Diablo.

Diablo® — Copyright © 1996 Blizzard Entertainment, Inc. All rights reserved. Diablo and Blizzard Entertainment are trademarks or registered trademarks of Blizzard Entertainment, Inc. in the U.S. and/or other countries.

Devilution and any of its maintainers are in no way associated with or endorsed by Blizzard Entertainment®.

Multiplayer Game Modes

DevilutionX provides three modes for setting up multiplayer games. These can be seen in the in-game Multi Player menu.

  • ZeroTier
  • Client-Server (TCP)
  • Loopback

Any multiplayer character created in any mode can also be played in any other mode.

Some platforms do not support ZeroTier at this time. This list includes—but may not be limited to—Nintendo 3DS, Nintendo Switch, and PlayStation Vita. If your platform does not support ZeroTier, it will not show up in the Multi Player menu

ZeroTier

This mode provides the easiest way to play with others over the internet. No external configuration (such as entering IP addresses, ports, firewall rules, etc.) should be necessary to play games on the ZeroTier network. All you need to do is run the game, select this mode, and start creating or joining games.

Image showing where joinable games will appear

When entering the in-game ZeroTier menu, your device will automatically configure itself to join the ZeroTier network so it can exchange messages with others on that network. This autoconfiguration may take somewhere around a full minute the first time you attempt to use this mode. If you are having trouble creating or joining games in this mode, you can try waiting around in the menu for the autoconfiguration to complete.

When a hosting a game using the ZeroTier mode, a name will be randomly generated and automatically assigned to the game session. In order to see the name of the game session you are currently playing, open the automap and check the upper-left corner of the game window.

ZeroTier games are not hosted on any server, nor are they hosted by any particular player. The game session is maintained by every peer who has joined the game, and as far as the game session is concerned, all peers are equal. As long as any player is still actively playing the game, players can join, leave, or rejoin in any order and the game session will remain active. The game session will disappear the moment all players have left the game.

ZeroTier configuration is stored in the DevilutionX configuration directory ( —config-dir ). This configuration directory contains your device’s ZeroTier network address. You will not be able to run multiple clients from the same device using the same ZeroTier configuration. For more information about how to change your configuration directory, see: https://github.com/diasurgical/devilutionX/wiki/DevilutionX-additional-arguments-configuration-guide#configdir).

Router Configuration Tips: The ZeroTier client uses a variety of hole-punching techniques to establish communications over the physical network to achieve the most efficient routes possible between peers on the ZeroTier network. On most physical networks, one or more of these techniques should be viable to enable peers to communicate with each other without the need for any external configuration. For more information, visit https://zerotier.atlassian.net/wiki/spaces/SD/pages/6815768/Router+Configuration+Tips.

Technical Information: The ZeroTier Protocol Design Whitepaper provides a high-level technical overview describing how the protocol works and what it’s designed to do. To read the whitepaper, visit https://docs.zerotier.com/zerotier/manual/.

Client-Server (TCP)

DevilutionX has built-in TCP/IP support which only requires the host to expose a single TCP port to play the game with others. This mode is ideal for playing with others on a local area network where firewalls may be less of a concern, but it can also be used to play over the internet.

By default, the game will use port 6112. See diablo.ini Network section for configuration options.

When joining a game on a local area network, you will need to use the internal IP address of the host system in order to connect. Usually, this IP address exists in the form 192.168.X.X and can be found using the ipconfig tool on Windows operating systems.

When joining a game over the internet, you must use the public IP address of the host’s network to connect to their game. Typically, this can be obtained by reviewing the network configuration in the host’s router or by Googling «What is my IP?» from the host’s system. Furthermore, the host must edit their router’s configuration to forward the TCP port through the router to the host system on their local network. Note that some ISPs use security policies or NAT rules to make this port forwarding impossible. If you have trouble hosting games over the internet, you may need to contact your ISP so they can help troubleshoot.

If you receive a timeout error after a long pause when attempting to join a TCP game, this is a strong indication that a firewall is blocking packets. Ensure that the firewall configuration on the host system is not blocking traffic to the TCP port you are using to connect. For Windows hosts, you may need to adjust settings in Windows Firewall to allow incoming connections.

When troubleshooting TCP connectivity, it is often useful to use a step-by-step approach to make sure that you can establish connections with the host using a more simple network configuration before moving on to a more complex one. You can start by running two game clients on the host system and joining a game using the 127.0.0.1 IP address to verify that the host is listening on the correct TCP port. After that, you can test a local connection using two systems on the local network using the 192.168.X.X address of the host system to test local firewall configuration. Once that is working, you can try using the same two systems on the local network using the public IP of the network to test the port forwarding rules on the router. Following these steps can help you to narrow down the source of network issues that prevent you from hosting games over the internet.

Loopback

This mode allows you to play solo games using Multiplayer characters without the need for a physical network connection. This is distinct from the Single Player game mode as you cannot use Single Player characters in Multiplayer game modes and vice-versa.

Public/Private Games

All private games are encrypted and password protected. Public games are not encrypted or password protected and can therefore be joined by any host that can establish a network connection to your system.

When you enter the in-game ZeroTier menu, the game broadcasts multicast messages over the ZeroTier network to find peers who are currently hosting public games. If it receives a response, the game names will appear as additional list items in the menu under the Join Game option. It may take several seconds for the list of games to populate, and this game list will attempt to refresh every 30 seconds.

When using TCP to join public games, you must use the Join Game option. When prompted for a password, simply leave the password field blank to join the public game.

DevilutionX 3DS

DevilutionX is a source port of Diablo and Hellfire that strives to make it simple to run the game while providing engine improvements, bugfixes, and some optional quality of life features.

Installation

Note: You’ll need access to the data from the original game. If you don’t have an original CD you can buy Diablo from GoG.com, or use the shareware version.

Create a folder named devilutionx on your SD card (sdmc:/3ds/devilutionx/).

  • For the full game, copy diapdat.mpq to the devilutionx subfolder (for the shareware version, use spawn.mpq instead).
  • For the Diablo Hellfire expansion, you will also need hellfire.mpq, hfmonk.mpq, hfmusic.mpq, hfvoice.mpq.
  • Chinese, Korean, and Japanese users will also need fonts.mpq or the text will be missing (N3DS only, see below).

Place the .cia file on your SD card, then use a title manager such as FBI to install devilutionx.cia.

User guide

DevilutionX for 3DS user manual.

Multiplayer

The 3DS currently supports cross-platform Multiplayer in TCP mode. To play, you will need to enable Wi-Fi on the console and set up a network connection in System Settings. For more general information about Multiplayer and how to set up your network for TCP games, refer to the DevilutionX Multiplayer guide.

When playing Multiplayer, guests will experience better performance than hosts. When playing cross-platform, it is recommended to host your game session on another platform with more capable hardware.

Translations

The 3DS version of the game will attempt to detect the appropriate language based on your 3DS console’s language setting. Chinese, Korean, and Japanese users will need to download fonts.mpq or the text will be missing.

It is currently not recommended to use the Chinese, Korean, or Japanese translations on old 3DS models. The game will load additional symbols into system memory as needed while you continue to play the game. There is not enough memory in the old 3DS models to hold all the symbols in memory. It is therefore possible to run out of memory on the console and crash the game simply by using these translations.

To change the language used by the game, you will need to modify diablo.ini. The config folder path for 3DS is the same as the data folder for the MPQs (/3ds/devilutionx/ on your SD card).

Performance tips

New 3DS models have significantly improved hardware compared to old models. To improve the performance of the game on old 3DS models, you will want to modify diablo.ini. The config folder path for 3DS is the same as the data folder for the MPQs (/3ds/devilutionx/ on your SD card).

In particular, you will see a significant performance improvement if you set the game to Diablo’s original resolution of 640×480.

After making this change, if you would like the game to stretch to fit the full area of the top screen, use Fit to Screen=1. If instead you do not like the display to be stretched, use Fit to Screen=0.

Because 3DS uses SDL1, many of the graphics settings do not apply. The following represents the full list of applicable settings.

  • Width.
  • Height.
  • Fit to Screen.
  • Blended Transparency.
  • Gamma Correction.
  • Color Cycling.
  • FPS Limiter.

Controls

Circle-Pad or D-Pad — Move hero

A — Attack nearby enemies, Talk to townspeople and merchants, Pickup/place items (inventory), OK (main menu)

B — Select spell, Back while in menus

X — Pickup items, Open nearby chests and doors, Use item in the inventory

Y — Cast spell, Delete character while in main menu

L — Use health item from belt

R — Use mana potion from belt

Start+Up/Select — Game menu

Start+Down — Toggle automap

Start+Left/L or ZL — Character sheet

Start+Right/R or ZR — Inventory

Start+X — Toggle zoom

Select+D-Pad — Move automap, Simulate mouse

Select+A/B/X/Y — Spell hotkeys

C-Stick — Move automap, Simulate mouse

Select+ZL or Start+Y — Quest log

Select+ZR or Start+B — Spell book

Touchscreen:

Single drag — Move the mouse pointer (pointer jumps to finger)

Single short tap — Left mouse click

Screenshots

devilutionx3ds3.pngdevilutionx3ds4.png

devilutionx3ds5.pngdevilutionx3ds6.png

Media

DevilutionX (Diablo 1) for the RG-350 handheld (Gleb Mazovetskiy)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *