Skip to content

High Fidelity (hifi) is an early-stage technology lab experimenting with Virtual Worlds and VR. We use Worklist (http://worklist.net/Interface) and our full-time team to work on hifi's myriad components (Interface, Base8, DSDNS, hardware).

License

mvpeng/hifi

 
 

Repository files navigation

What is Hifi?

High Fidelity (hifi) is an early-stage technology lab experimenting with Virtual Worlds and VR.

In this repository you'll find the source to many of the components in our alpha-stage virtual world. The project embraces distributed development and if you'd like to help, we'll pay you -- find out more at Worklist.net. If you find a small bug and have a fix, pull requests are welcome. If you'd like to get paid for your work, make sure you report the bug via a job on Worklist.net.

We're hiring! We're looking for skilled developers; send your resume to hiring@highfidelity.io

Building Interface & other High Fidelity Components

Interface is our OS X and Linux build-able client for accessing our virtual world.

CMake

Hifi uses CMake to generate build files and project files for your platform. You can download CMake at cmake.org

Create a build directory in the root of your checkout and then run the CMake build from there. This will keep the rest of the directory clean, and makes the gitignore a little easier to handle (since we can just ignore build).

mkdir build
cd build
cmake .. -G Xcode

Those are the commands used on OS X to run CMake from the build folder and generate Xcode project files.

If you are building on a *nix system, you'll run something like "cmake ..", which uses the default Cmake generator for Unix Makefiles.

Building in XCode

After running cmake, you will have the make files or Xcode project file necessary to build all of the components. For OS X, load Xcode, open the hifi.xcodeproj file, choose ALL_BUILD from the Product > Scheme menu (or target drop down), and click Run.

If the build completes successfully, you will have built targets for all HiFi components located in the build/target_name/Debug directories.

Other dependencies & information

In addition to CMake, Qt 5.1 is required to build all components.

What can I build on? We have successfully built on OS X 10.8, Ubuntu and a few other modern Linux distributions. A Windows build is planned for the future, but not currently in development.

Running Interface

Using finder locate the interface.app Application in build/interface/Debug, double-click the icon, and wait for interface to launch. At this point you will connect to our default domain: "root.highfidelity.io".

I'm in-world, what can I do?

If you don't see anything, make sure your preferences are pointing to root.highfidelity.io, if you still have no luck it's possible our servers are simply down; if you're experiencing a major bug, let us know by suggesting a Job on Worklist.net -- make sure to include details about your operating system and your computer system.

To move around in-world, use the arrow keys (and Shift + up/down to fly up or down) or W A S D, and E or C to fly up/down. All of the other possible options and features are available via menus in the Interface application.

Other components

voxel-server, animation-server, audio-mixer, avatar-mixer, domain-server, pairing-server and space-server are architectural components that will allow you to run the full stack of the virtual world should you choose to.

I want to run my own virtual world!

In order to set up your own virtual world, you need to set up and run your own local "domain". At a minimum, you must run a domain-server, voxel-server, audio-mixer, and avatar-mixer to have a working virtual world. The audio-mixer and avatar-mixer are assignments given from the domain-server to any assignment-client that reports directly to it.

Complete the steps above to build the system components, using the default Cmake Unix Makefiles generator. Start with an empty build directory.

cmake ..

Then from the terminal window, change directory into the build directory, make the needed components, and then launch them.

First we make the targets we'll need.

cd build
make domain-server voxel-server assignment-client

If after this step you're seeing something like the following

make: Nothing to be done for `domain-server'.

you likely had Cmake generate Xcode project files and have not run cmake .. in a clean build directory.

Then, launch the static components - a domain-server and a voxel-server. All of the targets will run in the foreground, so you'll either want to background it yourself or open a seperate terminal window per target.

cd domain-server && ./domain-server
./voxel-server/voxel-server --local > /tmp/voxel-server.log 2>&1 &

Then, run an assignment-client with 2 forks to fulfill the avatar-mixer and audio-mixer assignments. It uses localhost as its assignment-server and talks to it on port 40102 (the default domain-server port).

./assignment-client/assignment-client -n 2 -a localhost -p 40102

Any target can be terminated with CTRL-C (SIGINT) in the associated terminal window.

Determine the IP address of the machine you're running these servers on. Here's a handy resource that explains how to do this for different operating systems. http://kb.iu.edu/data/aapa.html

On Mac OS X, and many Unix systems you can use the ifconfig command. Typically, the following command will give you the IP address you need to use.

ifconfig | grep inet | grep broadcast

You should get something like this:

inet 192.168.1.104 netmask 0xffffff00 broadcast 192.168.1.255

Your IP address is the first set of numbers. In this case "192.168.1.104". You may now use this IP address to access your domain. If you are running a local DNS or other name service you should be able to access this IP address by name as well.

To test things out you'll want to run the Interface client. You can make that target with the following command:

make interface

Then run the executable it builds, or open interface.app if you're on OS X.

To access your local domain in Interface, open the Preferences dialog box, from the Interface menu on OS X or the File menu on Linux, and enter the IP address of the local DNS name for the server computer in the "Domain" edit control.

In the voxel-server/src directory you will find a README that explains in further detail how to setup and administer a voxel-server.

About

High Fidelity (hifi) is an early-stage technology lab experimenting with Virtual Worlds and VR. We use Worklist (http://worklist.net/Interface) and our full-time team to work on hifi's myriad components (Interface, Base8, DSDNS, hardware).

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 52.3%
  • C 36.2%
  • JavaScript 10.6%
  • Objective-C 0.8%
  • Groovy 0.1%
  • Ruby 0.0%