Giter Site home page Giter Site logo

wow-vr-mod's Introduction

WoW-VR-mod

A shoddily-put-together World of Warcraft VR mod for private servers

Description

This is a tool to add headtracking with OpenVR for World of Warcraft private servers. It is intended to be used with TriDef and Virtual Desktop. Versions 1.12.1, 2.4.3 and 3.3.5 of the WoW client are supported. Warning: this is not a polished VR experience - you will probably get motion sick from some functions, and there are still some bugs. For the most part, it works ok. Cheat Engine and a python script are used to edit the game's memory to add headtracking. There is some judder when moving the headset due to the very hacky nature of this method, unfortunately. I am not sure how to solve this.

Features:

  • First person view mode
  • Google Earth VR style free camera for exploring
  • Third person mode
  • Keybindings and mouse emulation for VR controllers

Requirements and Installation

  • Tridef 3d. You could technically use this without TriDef, but it would be a pirate simulator.
  • Virtual Desktop steam version
  • Python 2.7 64 bit
  • The following Python packages:
    • psutil
    • openvr
    • memorpy
    • pynput
    • numpy
    • pypiwin32 These can be installed by running in the command line in the installation directory:
pip install -r requirements.txt
  • I use Cheat Engine to disable the default camera movement of the game. Cheat Engine installation is not required, but if you don't trust random executables off the internet, you can create the files yourself in Cheat Engine using the AutoAssemble scripts provided.
  • A supported old WoW client version and a private server account. Disclaimer: I have tested this on a few servers (including Elysium) and have not been banned, but this is an executable modification and so is probably against most servers' TOS.
  • For best results you should set your monitor to a custom 5:4 or 4:3 resolution (eg. 1280x1024 for a 1080p monitor). A high framerate monitor is also best so that you get at least 90 fps capture rate.

Usage

You can run this script using

python Scripts/wowvr.py

You can just make a shortcut to the provided run.bat file and it should hopefully work. You might have to run as administrator, I haven't really checked. Launch WoW using TriDef 3d ignition so that it renders in stereo 3d. You can use the default World of Warcraft profile. Some settings that I found work alright:

  • TriDef -> 3D (in-game settings)
    • Scene Depth = 30
    • Percent In Front = 20
    • Custom Focus = On
    • Near Plane = 91
    • Far Plane = 100
  • Config.wtf:
    • SET nearClip "0.10"
  • WoW settings:
    • Camera Following Style = Never
  • Virtual Desktop
    • Screen angle 120 degrees
    • no curvature
    • Vive/touch controllers deactivated (doesn't handle head lock mode correctly so I do it)
  • config.py
    • FOV=2.3

But suggestions for better settings are welcome. There is also a setting is config.py "PITCH_OFFSET" since the in-game world seemed slightly off to me. This may be incorrect and I just have the headset at a weird angle, I don't know. Virtual Desktop must be launched using OpenVR. If you have an Oculus Rift, you will need to add the launch parameter "-ForceOpenVR" in Steam. Then to launch correctly, you must open Oculus Home, then launch Virtual Desktop. Do not start SteamVR manually - I found this buggy. Set Virtual Desktop to "Head lock, no delay" mode with Half SBS 3D active (F7) (required).

Once you have logged in in-game and the script is running, all you have to do is tab in to the game and then realise you didn't customise your keybinds or interface for VR yet.

Controls

Keybinds and additional settings are in Scripts/config.py. Customise them to your liking. By default, they are (on Touch controllers):

Right controller:

  • A: Spacebar (Jump)
  • B: B (open inventory)
  • Trigger: Right click
  • Grip: Ctrl
  • Stick: Up, Right, Down, Left = 1,2,3,4
  • Stick button: Toggle movement mode

Left controller:

  • X: alt
  • Y: escape (this resets position in Virtual Desktop)
  • Trigger: Left click
  • Grip: Shift
  • Stick: Up, Right, Down, Left = wdsa. It is also assumed for movement that AD = turn and QE = strafe.
  • Stick button: alt-z (toggle hide interface)

There are three camera control modes (toggle between them using right controller stick/pad button):

  • First person
    • Room centre will follow your character's position. Character will be transparent while standing near the centre. Moving away will make your character visible so you can 'mire them. Seeing yourself when you look down is also an option.
    • Left stick (WSQE) for movement, character will face the same way as you do (while in centre of room), but movement direction only changes when stationary so you can look around while moving.
  • Free look
    • Can move around like in Google Earth VR with the left stick
  • Third Person
    • Camera will teleport towards your character when they get a certain distance away (in Config.py).
    • WASD movement, no strafing
    • Height relative to player preserved from Free Look mode

The hotkey to disable headtracking for cheat engine is Ctrl-F1.

Interface Recommendations

WIP (Other than Move Anything, I need recommendations)

Issues

  • Different addresses for camera positions are used while on transports (elevators, boats, zeppelins). Be prepared to be a bit disoriented.
  • I'm not sure if mounts are visible in first person WIP

wow-vr-mod's People

Contributors

emenzed 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.