HighLoad++ 2017
Зал «Москва», 7 ноября, 14:00
Тезисы:
http://www.highload.ru/2017/abstracts/2881.html
У компании Ingram Micro Cloud стенд на HL. На нем мы организуем браузерную игру TheURBN (urbn.odn.pw) с воксельной графикой, в которой каждый может захватывать территорию общего мира и строить небоскребы при помощи кубиков, а за процессом можно наблюдать на стенде. На экранах мы будем в режиме реального времени показывать виртуальный 3D-мир, в котором участники будут строить небоскребы. Большего погружения можно получить в шлеме VR Oculus Rift на нашем стенде.
...
12. Who We Are
Alex Khaerov
a Unit Manager at Ingram Micro Cloud
13. Who We Are
and the Great Team of Engineers
Alex Khaerov
a Unit Manager at Ingram Micro Cloud
14. Who We Are
and the Great Team of Engineers
@themaxbelov @ToxicWar @weglov@spukst3r
Alex Khaerov
a Unit Manager at Ingram Micro Cloud
15. Who We Are
@themaxbelov @ToxicWar @weglov
and the Great Team of voxel jedis, optimisation masters, gurus of the 3d, lords of the big data
@spukst3r
Alex Khaerov
a Unit Manager at Ingram Micro Cloud
40. multi-player
2D computer graphics2D 3D computer graphics
hyped techhyped Virtual Reality tech
Features Concessions
multi-player and networked
The Game
41. multi-player
2D computer graphics2D 3D computer graphics
hyped techhyped Virtual Reality tech
client-based
Features Concessions
multi-player and networked
The Game
42. multi-player
2D computer graphics2D 3D computer graphics
hyped techhyped Virtual Reality tech
client-based Browser
Features Concessions
multi-player and networked
The Game
43. multi-player
2D computer graphics2D 3D computer graphics
hyped techhyped Virtual Reality tech
client-based Browser
voxel “block-style” objects
Features Concessions
multi-player and networked
The Game
44. multi-player
2D computer graphics2D 3D computer graphics
hyped techhyped Virtual Reality tech
client-based Browser
voxel “block-style” objects
Features Concessions
multi-player and networked
The Game
45. multi-player
2D computer graphics2D 3D computer graphics
hyped techhyped Virtual Reality tech
client-based Browser
voxel “block-style” objects
Features Concessions
multi-player and networked
The Game
46. multi-player
2D computer graphics2D 3D computer graphics
hyped techhyped Virtual Reality tech
client-based Browser
voxel “block-style” objects
Features Concessions
world size 1000x1000x200
multi-player and networked
The Game
69. Active Passive
+ Robust to de-sync+ Easy to understand
+ More efficient
- Fragile
Replication problem
70. Active Passive
+ Robust to de-sync+ Easy to understand
+ More efficient
- Fragile
+ Easier to secure
Replication problem
71. Active Passive
+ Robust to de-sync+ Easy to understand
+ More efficient
- Fragile - Single point of failure
+ Easier to secure
Replication problem
72. Active Passive
+ Robust to de-sync+ Easy to understand
+ More efficient
- Fragile - Single point of failure
+ Easier to secure
✔
Replication problem
115. Game-backend
Python 3.6 + aiohttp
uvloop
implemented in Cython and uses libuv
motor
full-featured, non-blocking MongoDB driver for Python
116. Game-backend
Python 3.6 + aiohttp
uvloop
implemented in Cython and uses libuv
motor
full-featured, non-blocking MongoDB driver for Python
gunicorn
Python WSGI HTTP Server for UNIX
122. Game-frontend
Native JavaScript and WebGL?Native JavaScript and WebGL?
Voxel.js
an open source voxel game building toolkit for modern web browsers
123. Game-frontend
Native JavaScript and WebGL?Native JavaScript and WebGL?
Voxel.js
an open source voxel game building toolkit for modern web browsers
a-la minecraft world (X, Y, Z)
124. Game-frontend
Native JavaScript and WebGL?Native JavaScript and WebGL?
Voxel.js
an open source voxel game building toolkit for modern web browsers
a-la minecraft world (X, Y, Z)
voxels (blocks) / chunks
125. Game-frontend
Native JavaScript and WebGL?Native JavaScript and WebGL?
Voxel.js
an open source voxel game building toolkit for modern web browsers
a-la minecraft world (X, Y, Z)
voxels (blocks) / chunks
AABB: Bounding volume
126. Game-frontend
Native JavaScript and WebGL?Native JavaScript and WebGL?
Voxel.js
an open source voxel game building toolkit for modern web browsers
a-la minecraft world (X, Y, Z)
voxels (blocks) / chunks
AABB: Bounding volume
A 3D model with its bounding box drawn in dashed lines.
127. Game-frontend
Native JavaScript and WebGL?Native JavaScript and WebGL?
Voxel.js
an open source voxel game building toolkit for modern web browsers
a-la minecraft world (X, Y, Z)
voxels (blocks) / chunks
AABB: Bounding volume
128. Game-frontend
Native JavaScript and WebGL?Native JavaScript and WebGL?
Voxel.js
an open source voxel game building toolkit for modern web browsers
a-la minecraft world (X, Y, Z)
voxels (blocks) / chunks
Ray castingAABB: Bounding volume
129. Game-frontend
Native JavaScript and WebGL?Native JavaScript and WebGL?
Voxel.js
an open source voxel game building toolkit for modern web browsers
a-la minecraft world (X, Y, Z)
voxels (blocks) / chunks
Ray castingAABB: Bounding volume
Ray casting
130. Game-frontend
Native JavaScript and WebGL?Native JavaScript and WebGL?
Voxel.js
an open source voxel game building toolkit for modern web browsers
a-la minecraft world (X, Y, Z)
voxels (blocks) / chunks
Ray castingAABB: Bounding volume
131. Game-frontend
Native JavaScript and WebGL?Native JavaScript and WebGL?
Voxel.js
an open source voxel game building toolkit for modern web browsers
a-la minecraft world (X, Y, Z)
voxels (blocks) / chunks
Ray castingAABB: Bounding volume Textures
132. Game-frontend
Native JavaScript and WebGL?Native JavaScript and WebGL?
Voxel.js
an open source voxel game building toolkit for modern web browsers
a-la minecraft world (X, Y, Z)
voxels (blocks) / chunks
Ray castingAABB: Bounding volume
player with controls
Textures
133. Game-frontend
Native JavaScript and WebGL?Native JavaScript and WebGL?
Voxel.js
an open source voxel game building toolkit for modern web browsers
a-la minecraft world (X, Y, Z)
voxels (blocks) / chunks
Ray casting
game events (tick/setBlock/collision/renderChunk)
AABB: Bounding volume
player with controls
Textures
139. Game-frontend
voxel.js
your
code
three.js WebGL
Browser
Hardware OpenGL
Driver
Display Mngt System
Creating the scene
var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera( 75, window.innerWidth /
window.innerHeight, 0.1, 1000 );
var renderer = new THREE.WebGLRenderer();
renderer.setSize( window.innerWidth, window.innerHeight );
document.body.appendChild( renderer.domElement );
var geometry = new THREE.BoxGeometry( 1, 1, 1 );
var material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );
var cube = new THREE.Mesh( geometry, material );
scene.add( cube );
function animate() {
requestAnimationFrame( animate );
renderer.render( scene, camera );
}
140. Game-frontend
voxel.js
your
code
three.js WebGL
Browser
Hardware OpenGL
Driver
Display Mngt System
Creating the scene
var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera( 75, window.innerWidth /
window.innerHeight, 0.1, 1000 );
var renderer = new THREE.WebGLRenderer();
renderer.setSize( window.innerWidth, window.innerHeight );
document.body.appendChild( renderer.domElement );
var geometry = new THREE.BoxGeometry( 1, 1, 1 );
var material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );
var cube = new THREE.Mesh( geometry, material );
scene.add( cube );
function animate() {
requestAnimationFrame( animate );
renderer.render( scene, camera );
}
141. Game-frontend
voxel.js
your
code
three.js WebGL
Browser
Hardware OpenGL
Driver
Display Mngt System
Creating the scene
var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera( 75, window.innerWidth /
window.innerHeight, 0.1, 1000 );
var renderer = new THREE.WebGLRenderer();
renderer.setSize( window.innerWidth, window.innerHeight );
document.body.appendChild( renderer.domElement );
var geometry = new THREE.BoxGeometry( 1, 1, 1 );
var material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );
var cube = new THREE.Mesh( geometry, material );
scene.add( cube );
function animate() {
requestAnimationFrame( animate );
renderer.render( scene, camera );
}
142. Game-frontend
voxel.js
your
code
three.js WebGL
Browser
Hardware OpenGL
Driver
Display Mngt System
Creating the scene
var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera( 75, window.innerWidth /
window.innerHeight, 0.1, 1000 );
var renderer = new THREE.WebGLRenderer();
renderer.setSize( window.innerWidth, window.innerHeight );
document.body.appendChild( renderer.domElement );
var geometry = new THREE.BoxGeometry( 1, 1, 1 );
var material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );
var cube = new THREE.Mesh( geometry, material );
scene.add( cube );
function animate() {
requestAnimationFrame( animate );
renderer.render( scene, camera );
}
143. Game-frontend
voxel.js
your
code
three.js WebGL
Browser
Hardware OpenGL
Driver
Display Mngt System
Creating the scene
var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera( 75, window.innerWidth /
window.innerHeight, 0.1, 1000 );
var renderer = new THREE.WebGLRenderer();
renderer.setSize( window.innerWidth, window.innerHeight );
document.body.appendChild( renderer.domElement );
var geometry = new THREE.BoxGeometry( 1, 1, 1 );
var material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );
var cube = new THREE.Mesh( geometry, material );
scene.add( cube );
function animate() {
requestAnimationFrame( animate );
renderer.render( scene, camera );
}
144. Game-frontend
voxel.js
your
code
three.js WebGL
Browser
Hardware OpenGL
Driver
Display Mngt System
Creating the scene
var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera( 75, window.innerWidth /
window.innerHeight, 0.1, 1000 );
var renderer = new THREE.WebGLRenderer();
renderer.setSize( window.innerWidth, window.innerHeight );
document.body.appendChild( renderer.domElement );
var geometry = new THREE.BoxGeometry( 1, 1, 1 );
var material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );
var cube = new THREE.Mesh( geometry, material );
scene.add( cube );
function animate() {
requestAnimationFrame( animate );
renderer.render( scene, camera );
}