Networking raw implementation (Three.js vs Ammo.js project) Open source
Using power of Three.js, ammo.js. MagicThree is nice class sorted top level of threejs and ammo.js. Magic-three use the new version threejs 149. [JS type of script module variant with last version of three.module.js]
Description
Magic-Three is First Person Oriented but can be used for any other case of app flow.
No build needed, just copy/paste for both dev and prod mode.
No package.json [if this repo become npm package then will be back] In folder ./backend we have package.json to import deps (npm i) for server part.
Must be fully PWA [cache, server compression, image format webp etc...]
MultiLang support
Networking based on webRtc multiRTC3 library. Signaling server, video chat or stream to texture.
Frontend - Three.js, Ammo.js
Backend - Node.js, MultiRTC3
Client Config
const config = {
cache: false,
stats: false,
map: {
background: 0xbfd1e5,
floorWidth: 200,
floorHeight: 200,
},
playerController: {
type: 'FPS', // FPS | orbit
movementType: 'velocity', // velocity | kinematic
cameraInitPosition: {x: 10, y: 5, z: 10},
movementSpeed : {
forward: 8, backward: 6, left: 8, right: 8, jump : 10
}
},
networking: {
broadcasterPort: 9001,
broadcasterInit: true,
domain: "localhost", // domain: "maximumroulette.com",
networkDeepLogs: true,
masterServerKey: "magic.three.main.channel",
runBroadcasterOnInt: true,
broadcasterPort: 9010,
broadcastAutoConnect: false,
broadcasterSessionDefaults: {
sessionAudio: true,
sessionVideo: false,
sessionData: true,
enableFileSharing: true,
},
stunList: [
"stun:stun.l.google.com:19302",
"stun:stun1.l.google.com:19302",
"stun:stun.l.google.com:19302?transport=udp",
],
getBroadcastSockRoute() {
return getProtocolFromAddressBar() + getDomain() + ":" + this.broadcasterPort + "/";
}
}
}
Backend part based on multiRTC3.
If you wanna start host server and broadcaster[webRtc] then:
cd backend
npm i
npm run magic
I force default browser port 443! To make all works fine. For localhost cert doesnt matter. For public server you need classic ssl setup.
After all goto https://localhost/public/module.html You can easy manage paths. Default is https protocol and also recommended in multiplayer mode.
Features
Dynamic Cache/Worker, add to home screen. [pwa]
Graphics/Physics ready.
Prod/Dev Mode switch [wip]
Add 3d object loaders [fbx]
Next feature
Add shooting fire
Add player items handler
Integrate networking and self hosting based on node.js
Create bash or any script to make minify all module javascript. [To make little more performance better - lighthouse chrome]
Credits && Licence
https://threejs.org/
https://github.com/kripken/ammo.js/
In Assets i use great https://mixamo.com/
More info
I have performance stable at ~90% value. I load extra fbx animation 22Mb to test little more better. Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. I use freeware GIMP he had a webp format support for exports.
Что делает видео по-настоящему запоминающимся? Наверное, та самая атмосфера, которая заставляет забыть о времени. Когда вы заходите на RUVIDEO, чтобы посмотреть онлайн «Networking raw implementation (Three.js vs Ammo.js project) Open source», вы рассчитываете на нечто большее, чем просто загрузку плеера. И мы это понимаем. Контент такого уровня заслуживает того, чтобы его смотрели в HD 1080, без дрожания картинки и бесконечного буферизации.
Честно говоря, Rutube сегодня — это кладезь уникальных находок, которые часто теряются в общем шуме. Мы же вытаскиваем на поверхность самое интересное. Будь то динамичный экшн, глубокий разбор темы от любимого автора или просто уютное видео для настроения — всё это доступно здесь бесплатно и без лишних формальностей. Никаких «заполните анкету, чтобы продолжить». Только вы, ваш экран и качественный поток.
Если вас зацепило это видео, не забудьте взглянуть на похожие материалы в блоке справа. Мы откалибровали наши алгоритмы так, чтобы они подбирали контент не просто «по тегам», а по настроению и смыслу. Ведь в конечном итоге, онлайн-кинотеатр — это не склад файлов, а место, где каждый вечер можно найти свою историю. Приятного вам отдыха на RUVIDEO!
Видео взято из открытых источников Rutube. Если вы правообладатель, обратитесь к первоисточнику.