Published: Dec 31, 2024 by Isaac Johnson
I wanted to find some of the classic Shareware and Arcade games of my past. Today we’ll cover a few ways to find and run games. We’ll show examples with BurgerTime and Doom. We’ll look at more than one way to run Commander Keen. I hope everyone finds at least some game they can play and enjoy - I sure did.
Let’s dig in first on where we can find some games and game runners.
OS Games
Let’s clone the repo
builder@LuiGi:~/Workspaces$ git clone https://github.com/opengaming/osgameclones.git
Cloning into 'osgameclones'...
remote: Enumerating objects: 16569, done.
remote: Counting objects: 100% (904/904), done.
remote: Compressing objects: 100% (575/575), done.
remote: Total 16569 (delta 628), reused 329 (delta 329), pack-reused 15665 (from 5)
Receiving objects: 100% (16569/16569), 5.91 MiB | 4.45 MiB/s, done.
Resolving deltas: 100% (11481/11481), done.
builder@LuiGi:~/Workspaces$ cd osgameclones/
Then we can build a container image
builder@LuiGi:~/Workspaces/osgameclones$ make docker-build
docker build -t opengaming/osgameclones .
[+] Building 96.2s (20/20) FINISHED docker:default
=> [internal] load build definition from Dockerfile 0.1s
=> => transferring dockerfile: 515B 0.0s
=> [internal] load metadata for docker.io/library/nginx:1.27.2-alpine 2.0s
=> [internal] load metadata for docker.io/library/alpine:latest 2.1s
=> [internal] load .dockerignore 0.1s
=> => transferring context: 45B 0.0s
=> [builder 1/10] FROM docker.io/library/alpine:latest@sha256:21dc6063fd678b478f57c0e13f47560d0ea4eeba26dfc947b2a4f81f686b9f45 2.2s
=> => resolve docker.io/library/alpine:latest@sha256:21dc6063fd678b478f57c0e13f47560d0ea4eeba26dfc947b2a4f81f686b9f45 0.1s
=> => sha256:21dc6063fd678b478f57c0e13f47560d0ea4eeba26dfc947b2a4f81f686b9f45 9.22kB / 9.22kB 0.0s
=> => sha256:2c43f33bd1502ec7818bce9eea60e062d04eeadc4aa31cad9dabecb1e48b647b 1.02kB / 1.02kB 0.0s
=> => sha256:4048db5d36726e313ab8f7ffccf2362a34cba69e4cdd49119713483a68641fce 581B / 581B 0.0s
=> => sha256:38a8310d387e375e0ec6fabe047a9149e8eb214073db9f461fee6251fd936a75 3.64MB / 3.64MB 1.8s
=> => extracting sha256:38a8310d387e375e0ec6fabe047a9149e8eb214073db9f461fee6251fd936a75 0.1s
=> [internal] load build context 0.1s
=> => transferring context: 1.09MB 0.0s
=> [stage-1 1/4] FROM docker.io/library/nginx:1.27.2-alpine@sha256:74175cf34632e88c6cfe206897cbfe2d2fecf9bf033c40e7f9775a3689e8adc7 7.4s
=> => resolve docker.io/library/nginx:1.27.2-alpine@sha256:74175cf34632e88c6cfe206897cbfe2d2fecf9bf033c40e7f9775a3689e8adc7 0.1s
=> => sha256:d213b2a02ef4e7ec85882e8955343cdd08ab49d6548995ad18623f47017c65ee 2.50kB / 2.50kB 0.0s
=> => sha256:a5967740120f9a30029392fe9c47961962888cc48e6c4b47025b1f2b964ffbb6 11.25kB / 11.25kB 0.0s
=> => sha256:da9db072f522755cbeb85be2b3f84059b70571b229512f1571d9217b77e1087f 3.62MB / 3.62MB 5.8s
=> => sha256:795a89dcc4f004d517a7834a19e066200cda1a9d8258bfbca3d9410259261053 4.04MB / 4.04MB 1.8s
=> => sha256:74175cf34632e88c6cfe206897cbfe2d2fecf9bf033c40e7f9775a3689e8adc7 9.07kB / 9.07kB 0.0s
=> => sha256:85e8836903ab0b0428bee291efed146b37ed4aee8b378e7a2b2fb8ad407c9947 955B / 955B 2.1s
=> => sha256:9ad567d3b8a2ca8d6e3cbd00b3b78feafbb1c7e7e2ce1492648ea01cdd06d50d 629B / 629B 2.0s
=> => sha256:276e8818f0df64d1efab55dcac66a8ab3073b584adc8e1aeef8b3479f935eb04 404B / 404B 2.2s
=> => sha256:20212ccf8a7aa043bba568bf8ade4778a0895439cbe76033682d6a05a7ebdd92 1.21kB / 1.21kB 2.4s
=> => sha256:3917e8bc7be0dd282c01911e9c34a9931f7ddcd78d3acfb5b45e3378303840f1 1.40kB / 1.40kB 2.4s
=> => sha256:bcf46b1b1b1496b4acea36cb4fa9d9cef6576a3ead79ee80d8e725d0072564fb 15.10MB / 15.10MB 5.3s
=> => extracting sha256:da9db072f522755cbeb85be2b3f84059b70571b229512f1571d9217b77e1087f 0.1s
=> => extracting sha256:795a89dcc4f004d517a7834a19e066200cda1a9d8258bfbca3d9410259261053 0.1s
=> => extracting sha256:9ad567d3b8a2ca8d6e3cbd00b3b78feafbb1c7e7e2ce1492648ea01cdd06d50d 0.0s
=> => extracting sha256:85e8836903ab0b0428bee291efed146b37ed4aee8b378e7a2b2fb8ad407c9947 0.0s
=> => extracting sha256:276e8818f0df64d1efab55dcac66a8ab3073b584adc8e1aeef8b3479f935eb04 0.0s
=> => extracting sha256:20212ccf8a7aa043bba568bf8ade4778a0895439cbe76033682d6a05a7ebdd92 0.0s
=> => extracting sha256:3917e8bc7be0dd282c01911e9c34a9931f7ddcd78d3acfb5b45e3378303840f1 0.0s
=> => extracting sha256:bcf46b1b1b1496b4acea36cb4fa9d9cef6576a3ead79ee80d8e725d0072564fb 0.3s
=> [builder 2/10] RUN mkdir /src /app 0.4s
=> [builder 3/10] WORKDIR /src 0.1s
=> [builder 4/10] COPY . /src/ 0.1s
=> [builder 5/10] COPY CHECKS /app/CHECKS 0.1s
=> [builder 6/10] RUN apk add --no-cache curl make gcc musl-dev libffi-dev python3 python3-dev 36.0s
=> [builder 7/10] RUN env 9.7s
=> [builder 8/10] RUN curl -sSL https://install.python-poetry.org | POETRY_HOME=/etc/poetry python3 - 20.4s
=> [builder 9/10] RUN poetry install 16.3s
=> [builder 10/10] RUN make run 7.3s
=> [stage-1 2/4] COPY --from=builder /src/_build /www 0.4s
=> [stage-1 3/4] COPY vhost.conf /etc/nginx/conf.d/default.conf 0.1s
=> [stage-1 4/4] COPY CHECKS /app/CHECKS 0.1s
=> exporting to image 0.4s
=> => exporting layers 0.4s
=> => writing image sha256:705481c06cfeefb4cb8a669fe2db42dacd82f1e54020ea8b95231286ac9814eb 0.0s
=> => naming to docker.io/opengaming/osgameclones 0.0s
What's Next?
View a summary of image vulnerabilities and recommendations → docker scout quickview
If you use the default ‘docker-run’
builder@LuiGi:~/Workspaces/osgameclones$ make docker-run
docker rm -f osgameclones-site
osgameclones-site
docker run -d -p80:80 --name osgameclones-site opengaming/osgameclones
5e7998812f214281506ad2e3844ac60a9f15690872e0f2c7685c43b99c913771
docker: Error response from daemon: driver failed programming external connectivity on endpoint osgameclones-site (569524d1bab4d5c7caf39cac145cc2d6f291e7b38bb05932a94b8376cede1307): Bind for 0.0.0.0:80 failed: port is already allocated.
make: *** [Makefile:23: docker-run] Error 125
But we can set it to a different port
$ make docker-run PORT=3000
docker rm -f osgameclones-site
osgameclones-site
docker run -d -p3000:80 --name osgameclones-site opengaming/osgameclones
196acceabc6b56fef2fd04df78a88d87fa8b1fb60dfbb7d498c30bfedf6e4d92
I can the see a list of games
This turned me on to ScummVM which has builds here and an installer for Windows
I installed it
I can set a check
I was hoping to play some PSP games, but it seems ScummVM is more about older computer games
There are some demos we can download from https://www.scummvm.org/demos/
For instance, I setup Myst
And launched it
Then had a bit of fun playing it (there was audio, though the screengrab didn’t capture it)
That said, I did want to find a PSP emulator that might work and found one with PPSSPP.
My favourite old game is Lumines and Lumines II.
Another of my old favourites was BurgerTime. I actually tried to get a Colecovision game emulator up and running with a ROM, but found a perfectly playable version on ClassicGamesArcade here
Key 5 to add credits.
1 to start.
Arrows to move.
Ctrl to fire.
P to pause.
The aim is to run across the burger parts so that they fall and make a burger whilst navigating a maze. Also avoid the bad guys like the eggs
I’m not great, but me on the first level.
They have quite a few classics like Joust and Ghostbusters (give that one a few moments to load).
I had one last nostalgic game I wanted to find. Commander Keen. I found Commander Keen: Episode 6: Aliens Ate My Babysitter. I could not just double-click the exe file.
However, I read about using vDOS and DOSBox
I created a folder on C and put the game files there
I can then mount that folder as an X Drive
I can then navigate and launch the game
At first I was worried the SoundBlaster support wasn’t working, but once I launched into the game, I could hear it.
Classic Games via container and browser
Another example of containerizing classic games comes by way of docker-DOS-games
We can clone the repo
builder@LuiGi:~/Workspaces$ git clone https://github.com/bill954/docker-DOS-games.git
Cloning into 'docker-DOS-games'...
remote: Enumerating objects: 416, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 416 (delta 0), reused 0 (delta 0), pack-reused 412 (from 1)
Receiving objects: 100% (416/416), 8.15 MiB | 526.00 KiB/s, done.
Resolving deltas: 100% (143/143), done.
builder@LuiGi:~/Workspaces$ cd docker-DOS-games/
Then use docker compose up
to launch it via Docker Compose, however I kept getting an error on keen
=> ERROR [keen 5/7] RUN wget -O game.zip https://image.dosgamesarchive.com/games/keen-shr.zip 1.8s
=> CANCELED [doom 5/7] RUN wget -O game.zip https://archive.org/download/DoomsharewareEpisode/doom.ZIP 2.6s
=> CANCELED [cosmo 5/7] RUN wget -O game.zip https://archive.org/download/CosmosCosmicAdventure/CosmosCosmicAdventure-ForbiddenPlanet-Adventure1Of3V1.20sw1 2.6s
=> CANCELED [secretagent 5/7] RUN wget -O game.zip https://archive.org/download/SecretAgent_945/AGENT.ZIP 2.5s
=> CANCELED [mario 1/4] FROM docker.io/library/tomcat:9@sha256:d9f92b415416c22e8ada507179bff7b0cded9687732068906292a6f960b3f917 1.9s
=> => resolve docker.io/library/tomcat:9@sha256:d9f92b415416c22e8ada507179bff7b0cded9687732068906292a6f960b3f917 0.3s
=> => sha256:d9f92b415416c22e8ada507179bff7b0cded9687732068906292a6f960b3f917 6.63kB / 6.63kB 0.0s
=> => sha256:89e9bbcfa697ca9d2056ad0c815e6da943a4356633738d01b99b5faa2ebef7ca 1.05MB / 157.59MB 2.4s
=> => sha256:7d16c2d7e0789f8482816f0579f688db567d381e636db34c6cc60c613df6ceab 2.72kB / 2.72kB 0.0s
=> => sha256:39642322f89a3161f302c3d1e20bb3626fa33153d34866199dbac93d66705a69 12.42kB / 12.42kB 0.0s
=> => sha256:4c2afd91a87d1b2f93bb0c4f021644ade815979248b1f68bcae88b1b2f809336 2.10MB / 22.95MB 2.4s
=> => sha256:11be3e61358234818e215b9d11d1584bb7cf33bbbe329ccff717d555f1be2994 159B / 159B 0.7s
=> => sha256:1b9d1e181a2a2b6ed242e21c8a4d40d33cf851fd5522737a9aaa8a708d215f94 2.28kB / 2.28kB 1.2s
=> => sha256:fc68c0117916a43e4c38a4eb725889a5345e644c43da821205364b95ba65b9f7 0B / 140B 2.4s
=> [mario internal] load build context 0.2s
=> => transferring context: 5.02kB 0.0s
=> CANCELED [web 2/9] RUN set -x && addgroup --system --gid 101 nginx && adduser --system --disabled-login --ingroup nginx --no-create-home --home 2.3s
------
> [keen 5/7] RUN wget -O game.zip https://image.dosgamesarchive.com/games/keen-shr.zip:
0.794 Connecting to image.dosgamesarchive.com (108.156.107.47:443)
1.796 wget: server returned error: HTTP/1.1 403 Forbidden
------
failed to solve: process "/bin/sh -c wget -O game.zip $GAME_URL" did not complete successfully: exit code: 1
builder@LuiGi:~/Workspaces/docker-DOS-games$ wget https://image.dosgamesarchive.com/games/keen-shr.zip
--2024-12-27 20:27:15-- https://image.dosgamesarchive.com/games/keen-shr.zip
Resolving image.dosgamesarchive.com (image.dosgamesarchive.com)... 108.156.107.37, 108.156.107.47, 108.156.107.5, ...
Connecting to image.dosgamesarchive.com (image.dosgamesarchive.com)|108.156.107.37|:443... connected.
HTTP request sent, awaiting response... 403 Forbidden
2024-12-27 20:27:16 ERROR 403: Forbidden.
I’m not sure why it would wget when they exist in the repo already
builder@LuiGi:~/Workspaces/docker-DOS-games/docker-games/compressed_games$ ls -ltra
total 6652
-rw-r--r-- 1 builder builder 471050 Dec 27 20:21 CosmosCosmicAdventure-ForbiddenPlanet-Adventure1Of3V1.20sw1992apogeeSoftwareLtd.action.zip
-rw-r--r-- 1 builder builder 203467 Dec 27 20:21 keen-shr.zip
-rw-r--r-- 1 builder builder 2431248 Dec 27 20:21 doom.ZIP
-rw-r--r-- 1 builder builder 650032 Dec 27 20:21 SCORCH15.ZIP
-rw-r--r-- 1 builder builder 1351930 Dec 27 20:21 'Prince Of Persia 1.3.zip'
-rw-r--r-- 1 builder builder 355738 Dec 27 20:21 prince_of_persia.zip
-rw-r--r-- 1 builder builder 1312892 Dec 27 20:21 mariohtml5-master.zip
drwxr-xr-x 5 builder builder 4096 Dec 27 20:21 ..
drwxr-xr-x 2 builder builder 4096 Dec 27 20:30 .
I tried to fix the HTML dockerfile but failed on the GPG errors, so i just removed it
However, I did get it up
builder@LuiGi:~/Workspaces/docker-DOS-games$ docker compose up
[+] Running 7/7
✔ Network docker-dos-games_default Created 0.1s
✔ Container docker-dos-games-cosmo-1 Created 0.2s
✔ Container docker-dos-games-secretagent-1 Created 0.2s
✔ Container docker-dos-games-mario-1 Created 0.2s
✔ Container docker-dos-games-doom-1 Created 0.2s
✔ Container docker-dos-games-prince-1 Created 0.2s
✔ Container docker-dos-games-keen-1 Created 0.2s
Attaching to cosmo-1, doom-1, keen-1, mario-1, prince-1, secretagent-1
mario-1 | NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
mario-1 | 28-Dec-2024 02:59:44.990 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version name: Apache Tomcat/9.0.98
mario-1 | 28-Dec-2024 02:59:45.000 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built: Dec 5 2024 19:50:29 UTC
mario-1 | 28-Dec-2024 02:59:45.000 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version number: 9.0.98.0
mario-1 | 28-Dec-2024 02:59:45.000 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name: Linux
mario-1 | 28-Dec-2024 02:59:45.000 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version: 5.15.167.4-microsoft-standard-WSL2
mario-1 | 28-Dec-2024 02:59:45.000 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture: amd64
mario-1 | 28-Dec-2024 02:59:45.000 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home: /opt/java/openjdk
mario-1 | 28-Dec-2024 02:59:45.001 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version: 21.0.5+11-LTS
mario-1 | 28-Dec-2024 02:59:45.001 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor: Eclipse Adoptium
mario-1 | 28-Dec-2024 02:59:45.001 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: /usr/local/tomcat
mario-1 | 28-Dec-2024 02:59:45.001 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME: /usr/local/tomcat
mario-1 | 28-Dec-2024 02:59:45.024 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.lang=ALL-UNNAMED
mario-1 | 28-Dec-2024 02:59:45.024 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.io=ALL-UNNAMED
mario-1 | 28-Dec-2024 02:59:45.025 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.util=ALL-UNNAMED
mario-1 | 28-Dec-2024 02:59:45.025 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.util.concurrent=ALL-UNNAMED
mario-1 | 28-Dec-2024 02:59:45.025 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
mario-1 | 28-Dec-2024 02:59:45.025 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties
mario-1 | 28-Dec-2024 02:59:45.026 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
mario-1 | 28-Dec-2024 02:59:45.026 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048
mario-1 | 28-Dec-2024 02:59:45.026 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
mario-1 | 28-Dec-2024 02:59:45.026 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dorg.apache.catalina.security.SecurityListener.UMASK=0027
mario-1 | 28-Dec-2024 02:59:45.026 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dignore.endorsed.dirs=
mario-1 | 28-Dec-2024 02:59:45.027 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=/usr/local/tomcat
mario-1 | 28-Dec-2024 02:59:45.027 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=/usr/local/tomcat
mario-1 | 28-Dec-2024 02:59:45.027 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=/usr/local/tomcat/temp
mario-1 | 28-Dec-2024 02:59:45.038 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent Loaded Apache Tomcat Native library [1.3.1] using APR version [1.7.2].
mario-1 | 28-Dec-2024 02:59:45.039 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true], UDS [true].
mario-1 | 28-Dec-2024 02:59:45.039 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true]
mario-1 | 28-Dec-2024 02:59:45.047 INFO [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL successfully initialized [OpenSSL 3.0.13 30 Jan 2024]
mario-1 | 28-Dec-2024 02:59:45.377 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"]
mario-1 | 28-Dec-2024 02:59:45.412 INFO [main] org.apache.catalina.startup.Catalina.load Server initialization in [744] milliseconds
mario-1 | 28-Dec-2024 02:59:45.472 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina]
mario-1 | 28-Dec-2024 02:59:45.472 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet engine: [Apache Tomcat/9.0.98]
mario-1 | 28-Dec-2024 02:59:45.483 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/tomcat/webapps/ROOT]
mario-1 | 28-Dec-2024 02:59:45.749 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/tomcat/webapps/ROOT] has finished in [265] ms
mario-1 | 28-Dec-2024 02:59:45.753 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
mario-1 | 28-Dec-2024 02:59:45.761 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in [347] milliseconds
prince-1 | INFO Accepting connections at http://0.0.0.0:8000
cosmo-1 | INFO Accepting connections at http://0.0.0.0:8000
doom-1 | INFO Accepting connections at http://0.0.0.0:8000
secretagent-1 | INFO Accepting connections at http://0.0.0.0:8000
keen-1 | INFO Accepting connections at http://0.0.0.0:8000
doom-1 | HTTP 12/28/2024 3:00:35 AM 172.24.0.1 GET /
doom-1 | HTTP 12/28/2024 3:00:35 AM 172.24.0.1 Returned 200 in 49 ms
doom-1 | HTTP 12/28/2024 3:00:35 AM 172.24.0.1 GET /js-dos.js
doom-1 | HTTP 12/28/2024 3:00:35 AM 172.24.0.1 Returned 200 in 5 ms
doom-1 | HTTP 12/28/2024 3:00:35 AM 172.24.0.1 GET /wdosbox.wasm.js
doom-1 | HTTP 12/28/2024 3:00:35 AM 172.24.0.1 Returned 200 in 11 ms
doom-1 | HTTP 12/28/2024 3:00:35 AM 172.24.0.1 GET /wdosbox.js
doom-1 | HTTP 12/28/2024 3:00:35 AM 172.24.0.1 Returned 200 in 2 ms
doom-1 | HTTP 12/28/2024 3:00:35 AM 172.24.0.1 GET /game.zip
doom-1 | HTTP 12/28/2024 3:00:35 AM 172.24.0.1 Returned 200 in 10 ms
doom-1 | HTTP 12/28/2024 3:00:35 AM 172.24.0.1 GET /favicon.ico
doom-1 | HTTP 12/28/2024 3:00:35 AM 172.24.0.1 Returned 404 in 13 ms
You can see I changed the URL to pull from Github and then removed the Web app
builder@LuiGi:~/Workspaces/docker-DOS-games$ git diff
diff --git a/docker-compose.yml b/docker-compose.yml
index 88bb0e0..9fd958c 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -30,9 +30,4 @@ services:
ports:
- "86:8080"
- web:
- build: docker-games/web_server/debian-nginx-11.21.4/.
- ports:
- - "80:80"
- volumes:
- - ./docker-games/web_server/debian-nginx-11.21.4/html:/usr/share/nginx/html/:cached
+
\ No newline at end of file
diff --git a/docker-games/game_build_files/keen/Dockerfile b/docker-games/game_build_files/keen/Dockerfile
index 34bbe8e..3f0c32f 100644
--- a/docker-games/game_build_files/keen/Dockerfile
+++ b/docker-games/game_build_files/keen/Dockerfile
@@ -8,8 +8,10 @@ RUN wget https://js-dos.com/6.22/current/js-dos.js && \
RUN npm install -g serve
-ENV GAME_URL=https://image.dosgamesarchive.com/games/keen-shr.zip
+ENV GAME_URL=https://github.com/bill954/docker-DOS-games/raw/refs/heads/main/docker-games/compressed_games/keen-shr.zip
RUN wget -O game.zip $GAME_URL
+# Removed ENV GAME_URL and wget
+#COPY keen-shr.zip game.zip
ENV GAME_ARGS=\"KEEN.BAT\"
COPY html/index.html .
According to the documentation, we should be able to reach the games by different ports when the container is running:
Game | http://localhost: |
---|---|
Main website | 80 |
Doom | 81 |
Commander Keen | 82 |
Cosmo | 83 |
Secret Agent | 84 |
Prince of Persia | 85 |
Infinite Mario Bros | 86 |
Let’s see Doom in action:
Or Keen
The rest were all playable as well such as Prince of Persia
Or Cosmos Comsic Adeventures: Forbidden Planet
While there is no maximize, I did find that pinch zoom worked fine in the browser to expand it
Summary
In this post we covered quite a few ways to play some games using some open-source and free shareware files. We started with the OS Games Clone that creates a local website that lists out man options for games and ROMs. This brought me to ScummVM. While the PSP games didn’t work, I was easily able to launch Myst.
I found PPSSPP, which was a perfectly good PSP emulator that let me play Lumines II. I found ClassicGamesArcade which let me play BurgerTime and others in a browser. They had other great ones like Commander Keen: Episode 6: Aliens Ate My Babysitter, Joust and Ghostbusters.
Finally, we tweaked docker-DOS-games which let us play a few games like a Mario Infinite (which seems like a knockoff), the first Commander Keen and Doom.
This was a fun bit of nostalgia. I think it’s good to take break from heavier topics and programming to occasionally just play some classic games.