Giter VIP home page Giter VIP logo

rosebrowser's Introduction

ROSE Browser

A browser based version of the ROSE Online MMORPG.

  • Current version: 0.0.1-dev
  • Game compatibility: ver 528

Status

Unplayable, but lots of interested things are complete!

Screenshots

Login Screen Parties Quests

Contributors

ROSEBrowser is only possible thanks to the co-operation of Gravity Interactive, Inc., and the fantastic work of the following contributors:

Brett LawsonGitHub/brett19Twitter/@brett19x
James BentonGitHub/exjam-
Jean GuegantGitHub/Jiwan-

The Official Client

Looking for the official ROSE Online game client? Check out http://roseonlinegame.com/ or visit http://warpportal.com/ to get started!

Licence & copyright

Copyright (c) 2014 ROSEBrowser contributors (listed above).

ROSEBrowser source code is licensed under an GNU Affero General Public License. See the included LICENSE file for more details.

rosebrowser's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rosebrowser's Issues

Map transitions

Walking into warp point, teleported by npc, summoned by GM.

Fix particle COORD_TYPE.WORLD

I believe the intended behaviours are as follows:
LOCAL: Fully tracks parent's position and rotation
LOCAL_WORLD: Tracks parent's position but NOT rotation
WORLD: Create the particle at parent position but do not track after the initial start

Toggle sit when moving from sit position.

The client is responsible for toggling the sit state prior to initiating a move command when trying to move while sitting. If this does not happen, then other clients see you transition from sitting to standing as a blend rather than the standup animation. This also causes a slight desync from the lack of animation on other clients.

Shadowmap for animated items/characters/mobs.

It would be nice to add shadowmaps for the all the animated entities.

I saw that three.js can simplify the process by handling the shadowmaps/lights natively. The Object3D class contains a field "castShadow" that activate the shadowmap handling for one entity or not. We can, therefore, use the statically generated shadows for all the remaining objects and keep this great optimization. I am not sure how it would work with the custom shaders though.

Otherwise, we could simply do the shadowmap rendering pass ourselves, if you think about any good optimization compared to the three.js process.

Do you have any other suggestions for shadows? Faking all of them with some fixed patterns?

Raycast floor if standing on moving object.

Need to detect if the object your standing on has an animation attached, and if so, continue casting rays every frame to ensure the entity tracks with the object they are standing on. Currently if you get on an elevator, it will only function properly if you continuously move while it does.

Time of day

Implement time of day.

  • Use night/day effects
  • Change sky blending between night/day
  • Ambient light colours

Fix ParticleEffect animations breaking the start position of particles

I believe all ZMO animations on particle effects are supposed to be relative and not absolute.

Currently we just use an ObjectAnimator which over writes the position of the particle effect root object, effectively making the animation absolute.

Maybe a fix would be added another layer of THREE.Object3D but that may have consequences on the COORD_TYPE.LOCAL_WORLD this.parent inverse transformations.

https://github.com/brett19/rosebrowser/blob/master/client/js/helpers/effectmanager.js#L245

Singleton-ify the ItemDataManager

Currently the ItemDataManager is not represented as a singleton. It should be refactored such that ItemDataManager is a singleton instance of _ItemDataManager, and an extension load method added to the singleton to allow the GDM to hold the reference and handle loading.

Make effects stop when finished

Don't forget to use loopCount!

Also make sure they are cleaned up and removed from the scene properly when the effect finishes.

Add packets for missing chat types

Need to add following send functions:
netGame.chatParty
netGame.chatTrade
netGame.chatClan
netGame.chatAlly

And receive events:
'chat_party'
'chat_trade'
'chat_clan'
'chat_ally'

Optimize WorldManager.findHighPoint

Currently this command takes around 25% of the frame time. This can probably be optimized by using the THREE.Octree class, however, this class does not currently work fully with BufferGeometry (building the tree works, but querying fails due to face replacement).

NPC scale

Read NPC scale from LIST_NPC.STB or wherever it is

See: big jellybeans in AP.

Move animation resets with every move click

Walk in a straight line and repeatedly click to move to that position, the walk animation gets reset to first frame, probably should not reset the animation if its already doing a running animation

Mounts

These actually have different packets to cart and Castle gear so separate issue.

Blocked by #37

Increase size of NPC/MOB hitboxes

Currently the hit-boxes are based on the not-yet-transformed meshes of a NPC or monster, making it extremely challenging to accurately click on one. The hit-boxes should be expanded to account for this, and make selecting easier.

Other clients see you spawn at z=0

I believe this is because we send joinZone before we execute the dropFromSky as dropFromSky is now executed by addObject. We must add the local player to the GZM before calling joinZone.

Fix damage to wait till attack damage frame.

Currently we display attack damage as soon as we receive the packet. We should be queuing it and waiting until the damage frame of attack animation passes, then applying the damage instead.

Clans

Dialog.
Actions such as invite, kick, promote.
Chat.
Quest functions.

Use items on pickup

Some items like hp point, clan point, mp point are designed to be used on pickup. Currently not handled.

Batch particles in ParticleEmitter

This will be hard and full of effort as it means we have to handle quaternion and position and stuff of each individual vertices ourself rather than use Object3D.quaternion etc for each particle.

May not even be worth the effort tbh.

This is a future far down the line optimisation.

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.