traverseda / pycraft

A fork of "Minecraft in 500 lines of python" intended to someday be used as a real engine, instead of as a learning example.
MIT License
1.09k stars 96 forks source link

Decoupling view and world logic. #70

Open TristanTrim opened 8 years ago

TristanTrim commented 8 years ago

I'm decoupling the view (drawing to canvas) from the world logic, but I'm finding that I need to either hand a 'world reference' to view, and a 'view reference' to world in main OR call functions on both of them from window, and hand data back and forth.

I'm after clean modularity, and down the line the possibility of running the world without a view. For that I think functions called by window would be better. But they both seem kinda kludgy.

Are there any pros and cons I'm missing?

mrpudn commented 8 years ago

When I split up the original main.py, I tried to move all of the opengl stuff into World, but I noticed some weird rendering errors when I did that. I'd say World shouldn't be much more than a glorified dict. Window can handle all of the opengl stuff and other rendering activities until we can break it down.

Thoughts?

TristanTrim commented 8 years ago

Yeah, I noticed there is opengl stuff in both window and world. Right now window is handling the update loop, user input, and some rendering stuff. I'd like to have window basically act as a dispatcher: calling update functions, and handling input from the user. It would call to update the view, but not handle all of the view logic itself.