hajimehoshi / ebiten

Ebitengine - A dead simple 2D game engine for Go
https://ebitengine.org
Apache License 2.0
11.11k stars 665 forks source link

Port DOOM as experimental #885

Open hajimehoshi opened 5 years ago

hajimehoshi commented 5 years ago

https://github.com/chocolate-doom/chocolate-doom

Note that the license would be GPL.

peterhellberg commented 5 years ago

Here are some links to some information about DOOM and its renderer;

peterhellberg commented 5 years ago

And a few ports of the game/renderer to other languages than C/C++:

hajimehoshi commented 5 years ago

https://doom.fandom.com/wiki/Source_port Port list

hajimehoshi commented 5 years ago

As DOOM requires 3D polygons, DOOM might not be a good example to port to Ebiten :thinking:

chslink commented 5 years ago

openRA? https://github.com/OpenRA/OpenRA

shawnsmithdev commented 5 years ago

As DOOM requires 3D polygons, DOOM might not be a good example to port to Ebiten thinking

Is that true? I am fairly sure classic DOOM actually predates 3D acceleration in video cards. I believe it was all done in software.

hajimehoshi commented 5 years ago

Well, 3D rendering without hardware can be possible, but this works only with ReplacePixels in Ebiten. I'm not sure this would be a good example of Ebiten.

darkerbit commented 4 years ago

Perhaps a Wolfenstein 3D-style raycaster would be better?

hajimehoshi commented 4 years ago

In Ebiten, the raycaster result would be rendered via ReplacePixels.

peterhellberg commented 4 years ago

@darkerbit Maybe something along the lines of this little experiment I did a while back:

Ebiten port compiled to WebAssembly: https://peter.tilde.team/ebiten-gfx-raycaster/

Source code is available as a gist and is a port of a raycaster experiment I did for the Pixel package.

hajimehoshi commented 4 years ago

https://github.com/hajimehoshi/ebiten/issues/411 Homography transformation might help to implement DOOM. (Originally, the original DOOM used similar technique to draw sprites, but is that correct?)