gmh-code / quake-wasm Goto Github PK
View Code? Open in Web Editor NEWPlay the Quake first-person shooter in your browser! True to the original. Supports GLQuake, software-rendered mode, mods, and mission packs.
Home Page: https://quake.m-h.org.uk
Play the Quake first-person shooter in your browser! True to the original. Supports GLQuake, software-rendered mode, mods, and mission packs.
Home Page: https://quake.m-h.org.uk
This web port is decently playable using my iPad with the keyboard case accessory, apart from the lack of an escape key. I don't know why Apple would make such a decision, but it makes exiting any menus in this port impossible, and means that I can't change any settings, making the game largely awkward to play. Some way to rebind the main keys before loading the game would be useful to fix this, or just providing some other keybind that does an escape.
I gotta say, you adding widescreen was probably one of my favorite changes. So I gotta say, I'm impressed with how much work you've put into the website in such a short time. That's all i really wanted to say. Have a good day and I hope you enjoy working on this project!
receiving the error:
emcc chase.o cl_demo.o cl_input.o cl_main.o cl_parse.o cl_tent.o cmd.o common.o console.o crc.o cvar.o host.o host_cmd.o keys.o mathlib.o menu.o net_bsd.o net_dgrm.o net_loop.o net_main.o net_udp.o net_vcr.o pr_cmds.o pr_edict.o pr_exec.o r_part.o sbar.o snd_dma.o snd_mem.o snd_mix.o sv_main.o sv_move.o sv_phys.o sv_user.o view.o wad.o world.o zone.o gl_draw.o gl_mesh.o gl_model.o gl_refrag.o gl_rlight.o gl_rmain.o gl_rmisc.o gl_rsurf.o gl_screen.o gl_test.o gl_warp.o cd_null.o snd_sdl.o sys_sdl.o vid_sdl.o -O3 -sUSE_SDL=2 -sINITIAL_MEMORY=64MB -sTOTAL_STACK=2MB -sALLOW_MEMORY_GROWTH --preload-file=id1 --shell-file shell.html -lidbfs.js /home/kjw/gl4es/lib/libGL.a -sFULL_ES2=1 -o index.html
wasm-ld: error: gl_draw.o: undefined symbol: glTexCoord2f
wasm-ld: error: gl_draw.o: undefined symbol: glVertex2f
wasm-ld: error: gl_draw.o: undefined symbol: glTexCoord2f
wasm-ld: error: gl_draw.o: undefined symbol: glVertex2f
wasm-ld: error: gl_draw.o: undefined symbol: glTexCoord2f
wasm-ld: error: gl_draw.o: undefined symbol: glVertex2f
wasm-ld: error: gl_draw.o: undefined symbol: glTexCoord2f
wasm-ld: error: gl_draw.o: undefined symbol: glVertex2f
wasm-ld: error: gl_draw.o: undefined symbol: glEnd
wasm-ld: error: gl_draw.o: undefined symbol: glColor4f
wasm-ld: error: gl_draw.o: undefined symbol: glTexCoord2f
wasm-ld: error: gl_draw.o: undefined symbol: glVertex2f
wasm-ld: error: gl_draw.o: undefined symbol: glTexCoord2f
wasm-ld: error: gl_draw.o: undefined symbol: glVertex2f
wasm-ld: error: gl_draw.o: undefined symbol: glTexCoord2f
wasm-ld: error: gl_draw.o: undefined symbol: glVertex2f
wasm-ld: error: gl_draw.o: undefined symbol: glTexCoord2f
wasm-ld: error: gl_draw.o: undefined symbol: glVertex2f
wasm-ld: error: gl_draw.o: undefined symbol: glEnd
wasm-ld: error: gl_draw.o: undefined symbol: glColor4f
wasm-ld: error: too many errors emitted, stopping now (use -error-limit=0 to see all errors)
emcc: error: '/home/kjw/emsdk/upstream/bin/wasm-ld -o index.wasm chase.o cl_demo.o cl_input.o cl_main.o cl_parse.o cl_tent.o cmd.o common.o console.o crc.o cvar.o host.o host_cmd.o keys.o mathlib.o menu.o net_bsd.o net_dgrm.o net_loop.o net_main.o net_udp.o net_vcr.o pr_cmds.o pr_edict.o pr_exec.o r_part.o sbar.o snd_dma.o snd_mem.o snd_mix.o sv_main.o sv_move.o sv_phys.o sv_user.o view.o wad.o world.o zone.o gl_draw.o gl_mesh.o gl_model.o gl_refrag.o gl_rlight.o gl_rmain.o gl_rmisc.o gl_rsurf.o gl_screen.o gl_test.o gl_warp.o cd_null.o snd_sdl.o sys_sdl.o vid_sdl.o /home/kjw/gl4es/lib/libGL.a -L/home/kjw/emsdk/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten /home/kjw/emsdk/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten/libSDL2.a -lGL -lal -lhtml5 -lstubs -lnoexit -lc -ldlmalloc -lcompiler_rt -lc++-noexcept -lc++abi-noexcept -lsockets -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr /tmp/tmpz_0hxip1libemscripten_js_symbols.so --strip-debug --export-if-defined=main --export-if-defined=__start_em_asm --export-if-defined=__stop_em_asm --export-if-defined=__start_em_lib_deps --export-if-defined=__stop_em_lib_deps --export-if-defined=__start_em_js --export-if-defined=__stop_em_js --export-if-defined=__main_argc_argv --export=stackSave --export=stackRestore --export=stackAlloc --export=__errno_location --export=__get_temp_ret --export=__set_temp_ret --export=malloc --export=free --export=__wasm_call_ctors --export-table -z stack-size=2097152 --initial-memory=67108864 --max-memory=2147483648 --no-entry --global-base=1024' failed (returned 1)
Recently, I have encountered an EXTREMELY common bug that causes locking the mouse to disable the ability to turn. I experienced this on a chromebook model 3100. If you are able to fix it, I would appreciate it. Thanks!
Hey @GMH-Code ,
Not sure this is an issue as such, but didn't want to bother you with email.
So firstly thanks for making this port possible! Big fan of the original, and all that.
My issue is that once the build has run and the necessary .html, .js and .wasm files have been generated, upon entering the browser on localhost, errors are thrown regarding gfx files:
Waiting for data to be restored... Data restoration complete. FindFile: can't find gfx/pop.lmp Playing shareware version. FindFile: can't find gfx.wad Error: W_LoadWadFile: couldn't load gfx.wad
this is with a shareware version (PAK0.PAK) added to the id1 dir.
also added a gfx folder with empty gfx.wad and pop.lmp. Placed in WinQuake dir, data dir and even the id1 dir all to no avail. Will later purchase the full version of the game and use the PAK1.PAK from there.
running on wsl and linux ubuntu has same issue. I guess I'm missing something super simple here..?
For some reason, the website doesn't take multiple files like pak0.pak and pak1.pak. This is the only other problem I've encountered other than the resolution, but at that point, the resolution is just pointless complaints. Thanks for at least reading this and fixing the other issue and I hope you have good day! ๐
Hi mate,
I managed to get WebSocket multiplayer working (I ended up implementing a new net_landriver_t
because I couldn't get the magic Emscripten BSD-to-WebSocket thing working (but thats not to say it shouldn't be possible, I was learning a bunch of stuff about the Quake network protocol at the same time).
The code is here but I'm not a C programmer by any stretch- plus its a bit messy, I had to make a special WebSocket to UDP proxy and then I had to make some tweaks to the Quake dedicated server here because out of the box it assumes that all connections from the same IP (but a different port) are essentially the same player trying to reconnect (which didn't really blend well with running the proxy next to the Quake server as containers, where you get multiple "players" connecting from the same IP).
Anyway- it's sort of workable but its a bit messy; do you want a PR back in to this repo to kick the tyres on or anything?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.