SITEPREFIX: meshSITE:https://meshpage.orgASSETSITE: -- are you ready to bring the web to the next level technologies?

Package files

Please enter urls for Game_*.pkg files:

Script file

Please enter the script


groundbreaking way to bring the next level technologies to the web: 3d.

3d engine © 2013-2023 Tero Pulkkinen, All rights reserved.® is a registered trademark of Tero Pulkkinen in tampere.

about and contact info

Introduction: article
Create(private): mesh
Vault(private): vault
Adverticement: Video

Resume cookie dialog: RESUME
Technology demonstration: Demo

Email address:
Phone number: +358 50 5827126

Source Code: GameApi-sourcecode-v27.tar.gz.

Development history of the project:

Terms and conditions:


Available documents:

frequently asked questions

What is

How does the site work?

What are the advantages in your approach?

What are the disadvantages?

Is there a 3d model viewer that uses your engine?

Yes. It's here Useful other sites which you can drag and drop content to the viewer are at least: Useful other sites with gltf viewing capability in web:

If I just want to deploy simple gltf file?

Check our gltf-to-zip converter at Here.

Now, if I got index.html, how do I embed it to my article

<embed src="index.html" width="830" height="630">

What is the minimal node graph that can be deployed to web?

Important part for deployment is the properties of html_run, since it contains url to your hosting space, which you need to change. This ensures that any urls that you load inside the node graph can be fetched from your hosting space. Unrestricted url access is not allowed for copyright reasons.

Web server config(.htaccess) should be something like the following: (you should change the url)

Header set Access-Control-Allow-Origin "" 
Header set Cross-Origin-Embedder-Policy "require-corp" 
Header set Cross-Origin-Resource-Policy "same-site" 
Header set Cross-Origin-Opener-Policy "same-origin" 
Header set Access-Control-Allow-Headers "range"

How to setup http cache with the engine?

We recommend in .htaccess:
Header set Cache-Control "max-age=604800, immutable"
(this avoids small problem with browsers deciding different caching strategy for .wasm and .js files and serving mismatched files for the users, causing EM_ASM crashes)

What about compressing the huge engine files?

For nice performance speedup for network, you should enable brotli compression in the web server too:
.HTACCESS Changes:
AddOutputFilterByType BROTLI_COMPRESS text/xml
AddOutputFilterByType BROTLI_COMPRESS text/css
AddOutputFilterByType BROTLI_COMPRESS application/xml
AddOutputFilterByType BROTLI_COMPRESS application/xhtml+xml
AddOutputFilterByType BROTLI_COMPRESS application/rss+xml
AddOutputFilterByType BROTLI_COMPRESS application/javascript
AddOutputFilterByType BROTLI_COMPRESS application/x-javascript
AddOutputFilterByType BROTLI_COMPRESS application/wasm
AddOutputFilterByType BROTLI_COMPRESS application/x-font-opentype
AddOutputFilterByType BROTLI_COMPRESS text/plain
<files *.wasm>
<files *.ds.*>
<files *.ds>
<files *.data>
AddType application/wasm wasm
AddType application/x-gameapi-binary ds
AddType text/plain mtl
AddType application/x-font-opentype otf
Then /etc/apache2/sites-enabled/000-default.conf probably should have:
       <IfModule mod_brotli.c>
        AddOutputFilterByType BROTLI_COMPRESS text/html text/plain text/xml text/css text/javascript application/javascipt application/wasm application/x-javascript
	<IfModule mod_headers.c>
	RewriteCond "%{HTTPS:Accept-encoding}" "br"
	RewriteCond "%{REQUEST_FILENAME}\.br" "-s"
	RewriteRule "^(.*)\.(wasm)" "$1\.$2\.br" [QSA]
	RewriteRule "^(.*)\.(ds)\.(..)" "$1\.$2\.$3\.br" [QSA]

	RewriteRule "\.wasm\.br$" "-" [T=application/wasm,E=no-brotli:1]
	<FilesMatch "(\.wasm\.br)$">
	  Header append Content-Encoding br
	  Header append Vary Accept-Encoding
	<FilesMatch "(\.ds\...\.br)$">
	  Header append Content-Encoding br
	  Header append Vary Accept-Encoding
Then you need brotli packages:
  sudo apt install brotli -y
  sudo a2enmod brotli
  sudo systemctl restart apache2

What technologies are you using to provide the features of the site?

  • C++
  • php
  • OpenGL
  • SDL2
  • glew
  • emscripten
  • libfreetype
  • stb_image
  • openvr
  • holoplay
  • tiny_gltf
  • draco
  • (normal browser environment)
In addition to these external stuff, we have internal development in the following modules:
  • GameApi
  • GameApi Builder/editor
  • web_page
  • mesh-page
  • iot_main
  • parser2

What kind of features are available in the base system?

  • OpenGL instancing
  • 3d mesh data structure
  • triangles/quads/lines/cones/spheres/cubes/torus
  • colours/normals/texture coordinates
  • materials like snow/brashmeta/web/distance fields
  • shading
  • animations/movement/matrices
  • skeletal animations
  • vertex animations
  • recursive shapes/trees
  • waveforms
  • volumes
  • 2d and 3d rendering
  • sprites / bitmaps
  • circles/rectangles/triangles in 2d
  • fonts/text rendering
  • etc..

Why do tool menus not do anything?

  • you can link boxes whenever the labels match
  • display menu from right mouse button is disabled until linking has been completely done from the left side of the boxes -- this is because left side is inputs, and right side is outputs, and all inputs need to be available for box to work correctly

What keybindings are there in the tool?

  • ctrl-s saves the data to mod.txt
  • 'a' rotates the model in most dialogs under "display"
  • 'd' rotates the model in most dialogs under "display"
  • delete (in box title bar) deletes the box
  • esc exits the application
  • esc (in blk_window) exits the full screen mode

Trackpads, touchpads and drawing tablets do not work with the technology?

This is known problem, but we don't have solution to the problem. The emscripten_set_wheel_callback() function sends events
that are not suitable for getting the trackpad to work properly. In ubuntu, we've found that changing settings in gnome and
disabling "two finger scroll" and enabling "edge scroll" can help it a little, but our current recommendation is to disable
the trackpad's completely from gnome settings. The main problem is visible in zoom feature, when mouse wheel is being mapped to the zooming of the 3d models. The trackpad's
are not able to simulate mouse wheel accurately/consistently enough and we were unable to figure out why gnome's "two finger scroll"
sends always positive deltaY, when both negative and positive values should be available in the callback. We haven't checked what needs to be done to get trackpads working in windows.

Why isn't sounds/music working?

Current status of sound/music routines is that pthreads and sounds are not working at the same time.
Thus to get sound working, you need to disable pthreads, and get slower prepare time in 3d model loading phase. This can be done by not enabling crossOriginIsolation,
then the scripts will automatically fall back to non-threaded version of the code.

What tools you should try immediately?

  • m_snow, m_flat for shading
  • anim_translate/anim_rotate for movement
  • move_ml for movement
  • seq_ml for moving from one scene to another
  • cube/sphere/cone/torus for basic shapes
  • p_render/m_bind for basic rendering
  • p_render_inst/m_bind_inst for OpenGL instancing
  • li_from_polygon/li_to_cone/random_quad for some amazing effects
  • static_instancing/ms_static_inst for cpu side instancing
  • blk_window and MainLoopApi features to finish your product

I get browser crashes when loading your web site in windows machines

Here's steps to fix some webgl2 problems in windows:
  • about:flags -> angle graphics backend -> opengl
It seems the default d3d11 webgl2 backend is somewhat broken, but happily its possible to fix the problem by using the opengl backend.

I get error while loading the animations

  • With new pthreads support in the site, browser settings need to be changed
  • Chrome users: chrome://flags should have webassembly pthreads enabled
  • Firefox users: about:config shuold have shared.memory=true

What browser should I use?

On my laptop I get the following benchmarks(this test: here(
  • some users have reported 700fps, but with high-end video card
  • Brave browser gives about 147fps
  • firefox is 54fps
  • Chrome is at 30fps

What does blogs think about our site?

  • mediaisnothingtomebutistilllikeit blog

builder tool download


MOST RECENT RELEASE: WIN: (146 days ago)

  • Application name: GameApi Builder
  • Application category: Modelling Tool, Gamedev
  • Operating system: Windows 11 64-bit
  • Download url: download msi
    • Rating: 5.0
    • RatingCount: 1
    • Price:0.00EUR
(doubleclick msi file to install it)
start menu -> GameApi-Builder v27.0 -> GameApi_Builder v27.0

  • Application name: GameApi Builder
  • Application category: Modelling Tool, Gamedev
  • Operating system: Ubuntu 64-bit amd64
  • Download url: download deb
    • Rating: 5.0
    • RatingCount: 1
    • Price:0.00EUR
sudo dpkg -i gameapi-builder_1.0-27.deb

  • Application name: GameApi Builder
  • Application category: Modelling Tool, Gamedev
  • Operating system: Linux/Docker container
  • Graphics Card: NVidia
  • Download url: download tar.gz
    • Rating: 5.0
    • RatingCount: 1
    • Price:0.00EUR
(install docker, nvidia-container-runtime)
sudo docker build -t builder-test:latest .