Coder Social home page Coder Social logo

ohkthx / xipl Goto Github PK

View Code? Open in Web Editor NEW
5.0 2.0 3.0 46 KB

Cross-platform (x) Installer, Patcher, and Launcher (IPL) for Ultima Online.

License: GNU General Public License v3.0

Shell 100.00%
ultima ultimaonline uo cross-platform ipl patcher ultima-online wine servuo

xipl's Introduction

Patreon donate button Buy me a coffee! Ko-fi
Required Python Version. No data.
Discord connect button.

xIPL, Cross-platform (x) Installer, Patcher, and Launcher (IPL)

The xIPL is a fancy bash script designed to automate the Installation, Patching, and Launching of Ultima Online. This software aims to be compatible with Linux, BSD, and MacOS (Intel-base Processors) along with MacOS (M1/M2 Processors).

The original patching concept and basis for this project is accredited to Voxpire with his ServUO/IPL project. Unfortunately, the project is limited to Microsoft Windows, thus not supporting the audience of my project.

Features

  • Cross-platform, tested in Linux (Intel 64-bit) and MacOS (ARM M2)
  • Configurable to various shards.
  • xIPL auto-updates itself.
  • Auto-configures settings.
  • Installs / Patches client
  • Launches client

TODO

  • Preserve backup of macro profiles.

Optional: Configuration and Shard Specific Settings

The default configuration for the xIPL is aimed at the shard Shadow Age: REBORN. If you would like to have your shard added to the 'shards/' directory, then feel free to contact me at:

Service Username ID
Discord offx1err 113426175669313536

When messaging me, please **do not forget** include your configuration file. An example can be found here. After your configuration is added, users will then be able to edit line 12 of xIPL with the name of your configuration. I retain the right to edit or remove any configuration for any reason but that is highly unlikely to ever happen. The most likely scenario is in the event a future patch adds functionality to the xIPL and all configurations will need to be updated.

Example provided below to assign the 'example' configuration as the xIPL's Shard:

File: xIPL

#!/usr/bin/env bash

# Created by: Ohkthx (Schism)
# Purpose of file: This is a wrapper for all functions inside of
#   xIPL_extras, that is responsible for keeping that file updated
#   with the current release available.
#   If a new update is available, this script downloads and launches it.

# Name of the shard to patch for, check out:
#   https://github.com/Ohkthx/xIPL/tree/main/shards
# For all valid shard names.
SHARD_NAME="example"

Known Issues / Testing

Tested on

OS Arch Wine Version Winetricks Version
macOS arm64 wine-7.7 20220411-next
linux x86_64 wine-5.5 20210206
linux x86_64 wine-8.0 20210206

Issues

ClassicUO

  • ClassicUO.exe
    1. linux x86_64, Wine version wine-5.5 has no audio. Wine version wine-8.0 audio works.
    2. macOS arm64, Wine version wine-7.7 audio crackles. Setting Audio MIDI Setup -> Format -> 96,000 Hz resolves it.
  • ClassicUOLauncher.exe
    1. linux x86_64, Wine version wine-5.5 will not start Launcher. Wine version wine-8.0 it works.

Installation

It is ideal to store the installation script in its own directory, below provides commands to create that directory in the terminal and switch to it. The method to downloading the client is up to you. You can use curl, wget, or just copy the raw file from the browser. curl and wget commands are provided below.

# Create a directory and enter it for the installation.
mkdir xIPL
cd xIPL

# Obtaining the xIPL with CURL
curl -O https://raw.githubusercontent.com/Ohkthx/xIPL/main/xIPL

# OPTIONAL: Obtaining the xIPL with WGET instead.
wget https://raw.githubusercontent.com/Ohkthx/xIPL/main/xIPL

Requirements

  • Perl - This is used to replace text in some of the registry files for Wine since sed's behaviour is platform dependent.
  • Git - Used to download and update additional dependencies.
  • Python - Minimum of Python 3 version **3.9.1**
  • Brew - (MacOS) Used for the installation of WINE and WINETRICKS.
  • curl or wget - Used for auto-updating the xIPL.
  • Wine - Run the ClassicUO client. Downloaded automatically for MacOS, package provided by Gcenx/homebrew-wine
  • Winetricks - Download and install additional required packages for Wine. Downloaded automatically for MacOS, package provided by Gcenx/homebrew-wine

Dependencies

  • uopatcher - Downloaded automatically and used for patching of the client, provided by Ohkthx/uopatcher.

Running

To start the xIPL, you just need to type the following. In additional to normal execution, provided are ALTERNATIVE steps to make the script executable and started with using ./xIPL. There is also the --launcher flag that can be passed to the xIPL to start a launcher such as ClassicUOLauncher if it is specified in the servers configuration files. Other advanced functionality can be seen with the --help flag.

# Start with bash.
bash xIPL             # Normal start.
bash xIPL --help      # See advanced features.
bash xIPL --launcher  # Start a launcher instead of a client.



# ALTERNATIVE: Make it executable and be able to run with ./xIPL
chmod +x xIPL       # Only needs to be performed once to mark it executable.

./xIPL              # Normal start.
./xIPL --help       # See advanced features.
./xIPL --launcher   # Start a launcher instead of a client.

xipl's People

Contributors

ohkthx avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.