Thursday, January 30, 2014

ill-conceived notion #38 - Learn Python Programming and Math by copying Wolfenstein3d



Goal: Better learning of Programming (Including version control with Git), Maths (Trigonometry) and Python. And actually finishing a longer project.

Method: Create a Wolfenstein 3D-style, raycasting, 2.5D renderer in Python. 90 degree orthogonal blocks, arbitrary position and rotation in 2D, scaled sprites. If it runs at anything near a playable framerate, even better! Sound, music, pushwalls, save states, etc. are all bonus.

Constraints: Sticking to the stock libs as much as possible. Something like Pygame will be considered if needed.


How I got here: Doom's 20th anniversary. Doomsday Engine. Reading "Masters of Doom".

Getting started resources:

Various raycasting tutorials:

http://www.permadi.com/tutorial/raycast/

http://lodev.org/cgtutor/raycasting.html
http://lodev.org/cgtutor/raycasting2.html
http://lodev.org/cgtutor/raycasting3.html

http://dev.opera.com/articles/view/creating-pseudo-3d-games-with-html-5-can-1/

http://www.pouet.net/prod.php?which=61298 - C64 raycaster done in 254 bytes. (For motivation. :)

General Python and Python Graphics resources:

http://inventwithpython.com/ - Creative Commons eBooks for basic graphics and PyGame libraries.



https://github.com/id-Software/wolf3d - Original source code. I probably won't actually be able to make much use of it.

http://fabiensanglard.net/wolf3d/index.php - iPhone version code review - (This guy has lots of fun material you could spend days on).

No comments:

Post a Comment