Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Chrome Packaged app #9

Open
kzahel opened this issue Sep 5, 2013 · 8 comments
Open

Chrome Packaged app #9

kzahel opened this issue Sep 5, 2013 · 8 comments

Comments

@kzahel
Copy link

kzahel commented Sep 5, 2013

Hej!
I created a fork and put it in the chrome web store
https://github.com/kzahel/WebQuake

I am super impressed by your code. Did you write it from scratch by looking at the original source code? Did you use some kind of automatic translator?

I was wondering if you had done any work with quakeworld client / quakeworld server. I grew up playing those and would love to see them revived in a packaged app (which have UDP socket support, btw!)

@Triang3l
Copy link
Owner

Triang3l commented Sep 5, 2013

Hi!

I'm happy that you like the project! Yes, it's rewritten from scratch for more control over the code.

While hosting the port on Chrome Web Store may be good for easier access, it's likely illegal (the license agreement prohibits redistributing even the demo files - Mozilla's Doom on the Web was shut down by Bethesda), and would create fragmentation if I release updates.

No, I haven't done any work with QuakeWorld, and I don't have any plans to. It doesn't support single player game.

@Triang3l
Copy link
Owner

Triang3l commented Sep 5, 2013

Also, there are game-breaking issues with the release: you can't start new game (the button does nothing), load/save doesn't work, and the game is launched into E1M1 instead of the demos.

Please fix or remove it.

I could fix it by myself, but I don't want to do this for legal reasons.

@Triang3l
Copy link
Owner

Triang3l commented Sep 5, 2013

Also, Google Analytics is not what I really want to see in any distribution of WebQuake, sorry.

@kzahel
Copy link
Author

kzahel commented Sep 5, 2013

Dang I didn't realize about the licenses!
I assume it would be OK as a total conversion, not using any original id1 assets... but then that would ruin the point.

Sorry about breaking many features... I will try and make the rest of the functionality work, and also remove the google analytics.

It's really dumb that I had to change all the synchronous resource requests to async... it was a huge pain in the ass and it has lots of obscure side effects that break things

@kzahel
Copy link
Author

kzahel commented Sep 5, 2013

"I will see about having the license changed on the shareware episode of
quake to allow it to be duplicated more freely (for linux distributions, for
example), but I can't give a timeframe for it. You can still download one of
the original quake demos and use that data with the code, but there are
restrictions on the redistribution of the demo data."

https://github.com/id-Software/Quake

Damn.

@Triang3l
Copy link
Owner

Triang3l commented Sep 6, 2013

Yes, using async IO breaks the Quake state machine entirely. I had to do whole-client-subsystem hacks to add WebSocket connection support.

@kzahel
Copy link
Author

kzahel commented Sep 7, 2013

I'd be interested in knowing what you had to change in the state machine to have it work.

I made a bunch of fixes to make it work more like vanilla quake; loading demos on start, new game working, settings saving, and entering shareware mode. Also I removed the google analytics.

I also mailed asking about permission to redistribute the shareware files but haven't gotten any response.

I love your code, it's so awesome.

Somebody asked about gamepad support, I'm going to go find my gamepad and see if I can't get that to work...

Also out of curiosity, why do you use setInterval instead of requestAnimationFrame?

@Triang3l
Copy link
Owner

Triang3l commented Sep 8, 2013

Thanks for loving my code.

I had to change the Host.Frame function directly in a hacky way (by adding a global variable that makes only console drawing called in the current frame when set), and I
throw an exception to stop execution of the current frame when starting a
connection attempt.

I had an idea: split functions that load files into callbacks and save
local variables when loading files, but it seems to be an awful mess, and
IE apparently supports overrideMimeType of XMLHttpRequest now.

I tried to connect the X360 gamepad and an old DirectInput gamepad, neither
worked with Chrome and Firefox.

setInterval is used so that multiplayer packets are processed when the tab
is inactive.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants