Skip to content

Commit

Permalink
HTML for web build
Browse files Browse the repository at this point in the history
Add basic shell file
- Themed HTML loading screen
- Cache endless-sky.data with IndexedDB
- Allow upload of save games with HTML interface
- Load script manually, no shell html file.
- Allow downloading of save files
- Clean up HTML interface
- Add progress bar text during data download.
- Persist save files to IndexedDB
- Check if WebGL2 supported before downloading data
- Check hash and length of data and store in dataversion.js
- Report errors to stdout (#22)
- Don't fail on too small resolution (#21)
- Plugin support
  - using https://github.com/EndlessSkyCommunity/endless-sky-plugins/blob/master/generated/plugins.json
  - including a cors proxy I'll host for now
- IndexedDB shim for safari
- Catch no response.body for Pale Moon
  • Loading branch information
janisozaur authored and thomasballinger committed Sep 10, 2021
1 parent 0cf164a commit 6cf557f
Show file tree
Hide file tree
Showing 9 changed files with 668 additions and 26 deletions.
9 changes: 8 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,20 @@ scons-local*
/*.d

# emscripten build generated files
endless-sky.html
title.png
dataversion.js
Ubuntu-Regular.ttf
output
endless-sky.data
endless-sky.js
endless-sky.worker.js
endless-sky.wasm
endless-sky.wasm.map

# other html build artifacts
title.png
dataversion.js

# libjpeg-turbo
2.1.0.tar.gz
libjpeg-turbo-2.1.0
Expand Down
27 changes: 19 additions & 8 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,13 +1,18 @@
EMSCRIPTEN_ENV := $(shell command -v emmake 2> /dev/null)

clean:
rm -f endless-sky.html
rm -f endless-sky.js
rm -f endless-sky.worker.js
rm -f endless-sky.data
rm -f endless-sky.wasm
rm -f dataversion.js
rm -f endless-sky.wasm.map
rm -f lib/emcc/libendless-sky.a
clean-full: clean
rm -f Ubuntu-Regular.ttf
rm -f title.png
rm -rf build/emcc
rm -rf lib/emcc
2.1.0.tar.gz:
wget https://github.com/libjpeg-turbo/libjpeg-turbo/archive/refs/tags/2.1.0.tar.gz
libjpeg-turbo-2.1.0: 2.1.0.tar.gz
Expand All @@ -19,8 +24,12 @@ ifndef EMSCRIPTEN_ENV
endif
cd libjpeg-turbo-2.1.0; emcmake cmake -G"Unix Makefiles" -DWITH_SIMD=0 -DCMAKE_BUILD_TYPE=Release -Wno-dev
cd libjpeg-turbo-2.1.0; emmake make
dev: endless-sky.html
dev: endless-sky.js dataversion.js Ubuntu-Regular.ttf title.png
emrun --serve_after_close --serve_after_exit --browser chrome --private_browsing endless-sky.html
title.png:
cp images/_menu/title.png title.png
Ubuntu-Regular.ttf:
curl -Ls 'https://github.com/google/fonts/blob/main/ufl/ubuntu/Ubuntu-Regular.ttf?raw=true' > Ubuntu-Regular.ttf

# not using -flto because of a change introduced in emscripten in 2.0.27 that I don't understand
COMMON_FLAGS = -O3\
Expand Down Expand Up @@ -51,7 +60,6 @@ LINK_FLAGS = $(COMMON_FLAGS)\
-s ASSERTIONS=2\
-s DEMANGLE_SUPPORT=1\
-s GL_ASSERTIONS=1\
--closure 1\
-s ASYNCIFY\
-s PTHREAD_POOL_SIZE=7\
-s MIN_WEBGL_VERSION=2\
Expand All @@ -76,16 +84,19 @@ OBJS_EXCEPT_MAIN := $(subst .cpp,.o,$(TEMP))
HEADERS := $(shell ls source/*.h*) $(shell ls source/text/*.h*)

build/emcc/%.o: source/%.cpp
mkdir -p build/emcc
mkdir -p build/emcc/text
@mkdir -p build/emcc
@mkdir -p build/emcc/text
em++ $(CFLAGS) -c $< -o $@

lib/emcc/libendless-sky.a: $(OBJS_EXCEPT_MAIN)
mkdir -p lib/emcc
@mkdir -p lib/emcc
emar rcs lib/emcc/libendless-sky.a $(OBJS_EXCEPT_MAIN)

endless-sky.html: libjpeg-turbo-2.1.0/libturbojpeg.a lib/emcc/libendless-sky.a build/emcc/main.o
endless-sky.js: libjpeg-turbo-2.1.0/libturbojpeg.a lib/emcc/libendless-sky.a build/emcc/main.o
ifndef EMSCRIPTEN_ENV
$(error "em++ is not available, activate the emscripten env first")
endif
em++ -o endless-sky.html $(LINK_FLAGS) build/emcc/main.o lib/emcc/libendless-sky.a
em++ -o endless-sky.js $(LINK_FLAGS) build/emcc/main.o lib/emcc/libendless-sky.a

dataversion.js: endless-sky.js
./hash-data.py endless-sky.data dataversion.js
Loading

0 comments on commit 6cf557f

Please sign in to comment.