GithubHelp home page GithubHelp logo

simondevyoutube / quick_3d_mmorpg Goto Github PK

View Code? Open in Web Editor NEW
446.0 446.0 172.0 137.42 MB

Absolutely 100% unsupported, and full of infuriating bugs.

License: MIT License

CSS 2.25% HTML 2.65% JavaScript 95.11%

quick_3d_mmorpg's People

Contributors

simondevyoutube avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  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  avatar  avatar  avatar

quick_3d_mmorpg's Issues

Collaboration project proposal

Dear Simon (and any developer that comes across this post),

I'm a web dev and I watched your threejs MMO youtube video which I think it's awesome!
For a very long time, I have been interested in building or joining a team that develops a Threejs-based MMO...
A couple of years ago I discovered one of the most gorgeous games, the Ironbane project. It was for a long time in the hall of fame on google projects page, but for some reason a few years ago it just died out and its development just stopped. It still has all the code base on github and last year I tried it and I could install it and it definitely looks awesome.

Now, in the recent months, I feel a clear and strong urge to try to revive this awesome project and a couple of weeks ago I actually tried to install it and very surprisingly it worked after a few hiccups obviously.
So I ve set it and left it running on a VPS and I also created a website post where describe in more detail my idea of the New Game Concept.
Here the future dev. team will be able to interact and gather data, share info and work together.
URL: https://www.webcreative.me/three-js-mmorpg-game-concept-ironbane/

The game doesn't have a website anyore, but the old dev team still has a dedicated discord channel where I am a member too and which I will disclose to anyone interested.

So, my proposal to all of you is to JOIN OUR FORCES and try to revive this project and make it a mighty game!!!

In reality, even though the game fully works now and it has a lot of the basic structure made, the code base is quite old and I obsolete. Also, after I spoke with a couple of main devs, they said they would strongly suggest to almost start from scratch if we want to revive it. Of course we have tons of things still keep and use, but probably a clean slate would be an idea to think about and discuss...

In any case, I am absolutely convinced that the business/collaboration model I thought of is a good engine for us to move forward.
So please have a look at the page above and leave some feedback either there or here.

As a thought, the Ironbane name is what they chose, but it doesn't even have to be the same for the new game. Personally, I think it sounds cool, but it's open to discussion.

In conclusion, I really hope and pray you have enough interest and bit of time to join us.
I am looking forward to your comments, whichever they are.
Thanks for your time.
Andy

Stats do not update

I've noticed the stats do not update they do update in the old Quick RPG demo tho
what gives? i've noticed damage is done totally different in this version how would one apply leveling again?

Deployment help

Hi Simon,

I've got some experience packaging up nodejs applications for deployment on kubernetes. This project seems really fun so if you are interested, I could PR the required docker/kubernetes config along with some CI/CD.

I'm in!

If you are like me, it's nice to dig around and follow along when source code is provided. There were a couple hurdles getting running on this one so I figured I'd share.

Server side

This is using a newer-ish version node.js 's import syntax so you will need to use nvm to swap over to somewhere around 15.8.0 using nvm. You can install nvm using:

wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash

Once installed:

nvm install 15.8.0

Simon seems to have removed server/package.json. I was able to fill in the blanks and this worked fine for me:

{
  "name": "server",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "gl-matrix": "^3.3.0",
    "socket.io": "^3.1.1"
  },
  "scripts": {
    "start": "node index.mjs"
  }
}

Once you have that set done you can run the following to start the server:

npm install
node index.mjs

Leave this running in a separate terminal.

Client side

Install http-server

sudo npm install -g http-server

Then run a simple http-server to serve up the files. If you don't do this you will get CORS issues.

$ http-server
Starting up http-server, serving ./
Available on:
  http://127.0.0.1:8081
  http://192.168.1.129:8081
  http://10.0.7.10:8081
  http://192.168.96.1:8081
Hit CTRL-C to stop the server

I was able to see the login screen, walk around and kill some monsters named after my username lol.

Why IIFE?

In your code you wrap all exported classes in an immediately invoked function expression. But you're also using ES Modules.

Why do this?

export const something = (() => {
    class Something {}
    return { Something: Something };
})();

Instead of this?

export class Something {}

setup

little more friendly setup here: https://github.com/jeremy-coleman/simmo
basically just:
copy/pasted/flattened
added express for static files
added cross origin isolated headers
added a package.json
added script to get going with npm install and npm run start
removed mjs, "type":"module" in package.json is better (but also not needed bc sucrase ftw)

update: latest commit i added electron nightly just so i can use the webgpu api without having to use chrome canary. can also mess around with using the vulkan backend for angle and figure out how to use a native udp client

Wont open up

When i try to run html code it shows black screen i am using latest version of chrome to test it

networking

Thoughts:

https://github.com/geckosio/geckos.io/tree/v2
It might be a better option compared to socket.io. tldr geckos exposes UDP sockets via clever webrtc hacks.
the v2 of geckosio seems to be a pretty significant upgrade also.

Note: you need cmake and openssl on your system to install geckos. on windows use scoop https://scoop.sh/ . then scoop install cmake and scoop install openssl.

A follow on optimization to the transport layer could be some efficient encoding protocol, which the geckosio org also happens to have here https://github.com/geckosio/typed-array-buffer-schema . (could be used to implement something like the wow guy in the first video below is talking about). Definitely not needed yet, but something to keep in mind. They also have a snapshot prediction lib ( 2nd video call of duty around 10 mins ) https://github.com/geckosio/snapshot-interpolation. Three specific version of interpolation here https://github.com/InfiniteLee/buffered-interpolation

some related/cool vids (imo)
https://www.youtube.com/watch?v=hCsEHYwjqVE
https://www.youtube.com/watch?v=EtLHLfNpu84

native/wasm rough equivalents:
https://github.com/naia-rs/naia-socket
https://github.com/smokku/bevy_networking_turbulence
this works: https://github.com/kyren/webrtc-unreliable

more useful stuff
https://github.com/AltspaceVR
https://github.com/mikolalysenko/mudb

After some struggles with geckos and more research i found that Chrome and firefox both use https://github.com/sctplab/usrsctp for implementing webrtc data channels. Janus gateway is based on that lib also, so something like https://github.com/mozilla/janus-plugin-sfu is probably one of the best options. chrome 91 also has the webtransport api open for origin trials. Its basically the same thing as data channels but using quic/http3. Idk , maybe just identifying network dependent state with the intention to refactor to some binary encoded schema (flatbuffers?) in the future will save a ton of headaches. Could use json.stringify/parse as a placeholder for now

this vid shows how to handle a handoff using socket.io (copy pasted below, will replace with code later)
https://www.youtube.com/watch?v=Y1mx7cx6ckI
image

Camera Controls

This video demonstrates pretty well the behavior of wow/aion/whatever 3rd person ability game.

around 2:45 shows left click
around 3:30 shows right click
https://m.youtube.com/watch?v=c97Ijw_Kkq8

As best as i can articulate : left mouse is like an orbit camera , which when released , eases back to the backside of your character. But, unlike an orbit camera, It follows you using dolly camera behavior

Although not shown in the video, I think a lot of people switched the left and right mouse, also note that left and right click held together is an alternative to w to move forward. This behavior also turns your character to face where you had the camera pointing. I was thinking a compass type object could be a good abstraction for this. Note opengl uses [0,1] but webgpu uses [-1,1]

here's a babylon playground that kind of works
https://playground.babylonjs.com/#GJRMS1#18

stuff
https://cgcookie.com/articles/creating-a-great-game-camera

package.json file does not exist.

Hello. I am a beginner programmer.
I am developing using your code. But the package.json file does not exist.
So the modules cannot be installed.
Maybe it's missing? Or is there another way to develop it? Please reply.
and I really respect you..

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.