Skip to content

Commit dc03437

Browse files
committed
prepare ini page
1 parent 658b54b commit dc03437

File tree

3 files changed

+23
-1
lines changed

3 files changed

+23
-1
lines changed

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ Useful .gitignore additions:
7979
/dist
8080
```
8181

82+
[controlling pygbag packing and options from pygbag.ini](/wiki/pygbag-configuration)
8283

8384
## Coding
8485

@@ -113,7 +114,7 @@ When importing non-stdlib packages (for example, numpy or matplotlib), you must
113114
- While working, you can access the simulator of the web loop by replacing `import asyncio` by `import pygbag.aio as asyncio` at top of main.py and run the program from the folder containing it.
114115
- TODO: Android remote debugging via [chromium browsers series](https://developer.chrome.com/docs/devtools/remote-debugging/).
115116
- TODO: Universal remote debugging via IRC Client or websocket using pygbag.net.
116-
117+
- [pygbag runtime ?](/wiki/pygbag-internals)
117118

118119

119120
There's number of command line options : read Pygbag's [project description](https://pypi.org/project/pygbag/) for a more detailed overview.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
2+
TODO: pygbag.ini
3+
4+
5+
[Edit this page](https://github.com/pygame-web/pygame-web.github.io/edit/main/wiki/pygbag/configuration/README.md)

wiki/pygbag-internals/README.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
2+
When running in the webpage pygbag is in fact a C runtime linked to libpython ( cpython-wasm from python.org) compiled to WebAssembly with emscripten compiler and hosted on a CDN (pygame-web.github.io). It is downloaded once per game and per version update for fast local use.
3+
4+
There's some javascript glue to connect the C library used by pygbag and python to some file descriptors. You cannot guess the mechanism that easily because calls originate from wasm cpu which is not exposed in javascript console.
5+
6+
Those file descriptors manipulated by the libc (musl provided by emsdk the portable emscripten compiler) can be in a virtual filesystem hosted by MEMFS from emscripten runtime ( eg for /tmp ) or BrowserFS a more advanced virtual filesystem ( /data and /usr ).
7+
8+
They can also be stdin/stdout/stderr file descriptors and this is why you can find the file on startup : the python part of html file is sent to python interpreter as if you typed it in your shell this is done by calling PyRun_InteractiveLoop on that file descriptor.
9+
10+
Later if a file "main.py" is found in the Virtual filesystem it is queued but you can also pass relative file url on the command line eg https://pygame-web.github.io/showroom/pypad.html#src/test_panda3d_cube.py. It also work with github gist raw links. pygbag can also embed code or git repo eg https://pygame-web.github.io/showroom/test_embed_git.html directly in html pages.
11+
12+
Some packages like pygame-ce, Panda3D or Harfang3D are indeed pre-compiled to WebAssembly and that's because they are mostly C or C++.
13+
14+
Python code is actually interpreted and type-annotated code could be compiled direcly to Wasm but that fonctionnality is not (yet) available for public use.
15+
16+
The format choosen for game archive is a zip file similar to android APK though unaligned and unsigned. The android runtime to make these run on real android is not (yet) available for public use either.

0 commit comments

Comments
 (0)