Giter Site home page Giter Site logo

js13k2019-yet-another-doom-clone's Introduction

Yet Another Doom Clone

game_320.mp4

It's yet another doom clone, but implemented in 13kb of (compressed) JavaScript.

Writeup of the development process: https://nicholas.carlini.com/writing/2019/javascript-doom-clone-13k.html.

I JUST WANT TO PLAY

If you just want to play the game (and don't want to play it online) then you can get started by cloning this repository:

git clone https://github.com/carlini/js13k2019-yet-another-doom-clone.git

and then just directly view the file doom.html from your browser.

I want to see developer mode

From the main repository view the file src/webgl.html from your browser.

This file additionally displays the frame rate, some statistics on how many frames took longer than 16ms to render, and shows the map editor.

BUILDING

If you actually want to be able to build the small 13k version of the code and run it in this small version, there are a few more steps.

You'll want to run python3 make.py.

This will generate a few files, most importantly build/index.html which will run the game from there.

The additional files it outputs are also in build/, and consists of javascript files compressed with varying sophistication of techniques.

LICENSE

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 3.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

js13k2019-yet-another-doom-clone's People

Contributors

carlini avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

js13k2019-yet-another-doom-clone's Issues

Question

What game engine did you use to make this, if any, and would you mind if I try to make a full game off of this?

Changing game textures.

I am using your javascript code as a base for a school project (sorry for using it ;) ) but I was wonderdering how I could change the textures and change the looks of the caracters but since you used javascript cilinders without texture and compressed the map code that a bit dificult. ( I'm 14 please go easy on the spelling English is not my native language). If somebody could help in any way that would be fantastic!

Setup instructions?

Would be nice if the readme could explain the code minifier provide some requirements.txt for make.py and add general setup/getting started instructions.

I got it somewhat running with these two commands:

python -m SimpleHTTPServer &
firefox http://localhost:8000/src/webgl.html

But it looked kinda buggy and the view was resizing randomly.

image

Question about maps

I was reading your description about how the maps are encoded, and memories of learning logo on an Apple ][e in the 80s flooded back....

It occurs to me that a cool project might be to write a tool that takes a file normally intended as instructions for a 3d printer, (typically huge) and pick a "level" (or filament layer number) and make that into a map for your game. you could walk around inside it.

or it could mean you could drop simple 3d printed objects into a room and walk around them?

here's a clip of part of a gx file (intended for a flashforge printer). is a single layer slice from this maze i mocked up in tinkercad, to do a proof of concept test. i printed a single layer to a file, part of which is readable as a text file:

;layer:0.25
G1 Z0.500 F420
;structure:shell-inner
G1 X-25.60 Y-73.90 F6000
G1 X-25.60 Y21.90 E107.0108 F3360
G1 X-74.40 Y21.90 E109.2223
G1 X-74.40 Y21.10 E109.2586
G1 X-26.40 Y21.10 E111.4338
G1 X-26.40 Y-10.10 E112.8477
G1 X-50.60 Y-10.10 E113.9443
G1 X-50.60 Y-3.10 E114.2615
G1 X-51.40 Y-3.10 E114.2978
G1 X-51.40 Y-11.90 E114.6966
G1 X-26.40 Y-11.90 E115.8295
G1 X-26.40 Y-73.10 E118.6029
G1 X-59.60 Y-73.10 E120.1074
G1 X-59.60 Y-45.90 E121.3400
G1 X-50.60 Y-45.90 E121.7479
G1 X-50.60 Y-45.10 E121.7841
G1 X-60.40 Y-45.10 E122.2283
G1 X-60.40 Y-72.10 E123.4518
G1 X-73.60 Y-72.10 E124.0500
G1 X-73.60 Y-30.90 E125.9170
G1 X-40.40 Y-30.90 E127.4216
G1 X-40.40 Y-62.10 E128.8355
G1 X-49.40 Y-62.10 E129.2433
G1 X-49.40 Y-62.90 E129.2796
G1 X-39.60 Y-62.90 E129.7237
G1 X-39.60 Y-30.10 E131.2101
G1 X-61.60 Y-30.10 E132.2070
G1 X-61.60 Y8.10 E133.9381
G1 X-37.40 Y8.10 E135.0348
G1 X-37.40 Y0.10 E135.3973
G1 X-36.60 Y0.10 E135.4336
G1 X-36.60 Y9.90 E135.8777
G1 X-62.40 Y9.90 E137.0469
G1 X-62.40 Y-29.10 E138.8142
G1 X-74.40 Y-29.10 E139.3580
G1 X-74.40 Y-73.90 E141.3882
G1 X-35.70 Y-73.90 E143.1420
G1 X-33.70 Y-73.90 E143.2326 F2832
G1 X-31.70 Y-73.90 E143.3233 F2304
G1 X-29.70 Y-73.90 E143.4139 F1776
G1 X-27.69 Y-73.90 E143.5050 F1248
G1 X-25.70 Y-73.90 E143.5952 F720
;structure:shell-outer
G1 X-25.20 Y-74.30 E143.5952 F300
G1 X-25.20 Y22.30 E147.9728 F2400
G1 X-74.80 Y22.30 E150.2205
G1 X-74.80 Y-15.30 E151.9245
G1 X-74.20 Y-15.30 E151.9516
G1 X-74.20 Y20.70 E153.5831
G1 X-26.80 Y20.70 E155.7311
G1 X-26.80 Y-9.70 E157.1087
G1 X-50.20 Y-9.70 E158.1691
G1 X-50.20 Y-2.70 E158.4863
G1 X-51.80 Y-2.70 E158.5588
G1 X-51.80 Y-12.30 E158.9939
G1 X-26.80 Y-12.30 E160.1268
G1 X-26.80 Y-72.70 E162.8640
G1 X-59.20 Y-72.70 E164.3322
G1 X-59.20 Y-46.30 E165.5286
G1 X-50.20 Y-46.30 E165.9364
G1 X-50.20 Y-44.70 E166.0089
G1 X-60.80 Y-44.70 E166.4893
G1 X-60.80 Y-71.70 E167.7129
G1 X-73.20 Y-71.70 E168.2748
G1 X-73.20 Y-31.30 E170.1056
G1 X-40.80 Y-31.30 E171.5739
G1 X-40.80 Y-61.70 E172.9515
G1 X-49.80 Y-61.70 E173.3594
G1 X-49.80 Y-63.30 E173.4319
G1 X-39.20 Y-63.30 E173.9122
G1 X-39.20 Y-29.70 E175.4349
G1 X-61.20 Y-29.70 E176.4318
G1 X-61.20 Y7.70 E178.1267
G1 X-37.80 Y7.70 E179.1871
G1 X-37.80 Y-0.30 E179.5497
G1 X-36.20 Y-0.30 E179.6222
G1 X-36.20 Y10.30 E180.1025
G1 X-62.80 Y10.30 E181.3080
G1 X-62.80 Y-28.70 E183.0753
G1 X-74.80 Y-28.70 E183.6191
G1 X-74.80 Y-74.30 E185.6856
G1 X-25.30 Y-74.30 E187.9288
G1 X-25.70 Y-73.90 E187.9373 F300
M107
G1 E185.4373 F1500
G1 Z0.600 F420
G1 X-5.70 Y-73.90 F6000
;end gcode

and a link to a discussion about the format : https://www.simplify3d.com/resources/articles/3d-printing-gcode-tutorial/

any idea if this is a do-able project, and if so do you have any suggestions about where to start?

Black screen with sound

The game is not working on my PC.

I've cloned it on my Windows 10 and opened with Vivaldi browser (also tried FireFox, IE and Edge). After titles and loading it just shows black screen, but the sound is working so the problem is in video.

Browser console shows:

audio.js:20 The AudioContext was not allowed to start. It must be resumed (or created) after a user gesture on the page. https://goo.gl/7K7WLu
(anonymous) @ audio.js:20
webgl.js:398 [Deprecation] 'window.webkitStorageInfo' is deprecated. Please use 'navigator.webkitTemporaryStorage' or 'navigator.webkitPersistentStorage' instead.
(anonymous) @ webgl.js:398
setup @ webgl.js:395
setTimeout (async)
window.onload @ webgl.js:407
load (async)
(anonymous) @ webgl.js:407
graphics.js:111 C:\fakepath(182,24-54): warning X3571: pow(f, e) will not work for negative f, use abs(f) or conditionally handle negative values if you expect them
C:\fakepath(90,1): warning X4000: use of potentially uninitialized variable (f_get_shader)
C:\fakepath(114,25-29): error X4576: Input array signature parameter  cannot be indexed dynamically.

Warning: D3D shader compilation failed with default flags. (ps_5_0)
 Retrying with skip validation
C:\fakepath(182,24-54): warning X3571: pow(f, e) will not work for negative f, use abs(f) or conditionally handle negative values if you expect them
C:\fakepath(90,1): warning X4000: use of potentially uninitialized variable (f_get_shader)
C:\fakepath(114,25-29): error X4576: Input array signature parameter  cannot be indexed dynamically.

Warning: D3D shader compilation failed with skip validation flags. (ps_5_0)
 Retrying with skip optimization
C:\fakepath(133,7-53): error X3531: can't unroll loops marked with loop attribute

C:\fakepath(133,7-53): error X3511: forced to unroll loop, but unrolling failed.

Warning: D3D shader compilation failed with skip optimization flags. (ps_5_0)

Failed to create D3D Shaders

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.