Code Monkey home page Code Monkey logo

uojs2's Introduction

uojs2

An unfinished web-based client for the game Ultima Online.

Join the chat at https://gitter.im/uojs2/Lobby Travis build status Dependency Status devDependency Status

Overview

๐Ÿ‘‰ Taking a short break from this project to review 3D concepts & Three.js. ๐Ÿ‘ˆ

This project is aiming to emulate the game Ultima Online (ver 7.x.x.x) in a web enviroment. It uses websockets (with websockify) to connect to servers that utilize the Ultima Online protocol. It then uses Redux to manage the global state and uses React coupled with three.js for the interface.

I'm mostly using this project to learn more about cool features in javascript. So please let me know if there is a better way to do something.

Also! Please know that this is completely a work in progress and it doesn't do anything spectacular (yet). Please don't tell me that it doesn't work. I know it doesn't work. It will be finished one day, assuming that I don't (1) die in an accident, (2) become homeless, or (3) get burned out from programming.

Current Status

Networking, decompression, global state, React (sorta) works. Three.js still needs to be integrated within the React component.

There also needs to be an art server and a way to quickly transfer art between the server and client. WebP + http2? maybe? no idea. Will research ideal image formats: gif is small, has a single alpha channel, and has limited colors... so this might be ideal.

Requirements

Browser requirements

  • Modern browser
  • WebGL support
  • Websocket support

Development & hosting requirements

  • Node.js, version 6+
  • ServUO (or possibly an alternative)

Getting Started

  1. Start your ServUO server.
  2. Clone the repository. Edit src/server/config.js if needed.
  3. Install dependencies: npm install
  4. In a terminal window, Build the project: gulp build-server && gulp dev
  5. In a different terminal window, start websockify: npm start (this might not work)
  6. Open http://localhost:4000/
  7. Eat sandwich

Contributing

Here are some ways you can contribute to this project!

  • Implement more of the packets. Check out the state directory for examples.
  • Create a UI. I'm thinking if the state has an 'invalidate' flag, so that when set to true, it'll call a redraw in the redux subscribe method, which just rerenders the viewport. Does that make sense? I have no idea.
  • Code review it! If you're a hardcore javascripter (is that a word?), I really want you to tell me what can be improved on here.
  • Add in pages in the Wiki
  • Write tests (these are like the last thing on my todo list)
  • Migrate everything into web workers (particularly networking, redux stuff, and decompression). Then on the redux subscribe callback, transfer the data into the main UI thread?
  • If you live in Seattle, buy me some more beer. pls ๐Ÿบ

ga

uojs2's People

Contributors

gitter-badger avatar kevinhikaruevans avatar lamo2k123 avatar

Watchers

 avatar  avatar  avatar

uojs2's Issues

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.