Further optimizing Nu for the experience of entry-level developers. #1406
bryanedds
started this conversation in
Development
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Beyond all the things that have already been done, there remain a couple things I could do to make Nu more friendly to entry-level game developers. However, I think these things would compromise what Nu is at a foundational level. What Nu is is a promise that for anyone who wants to do professional game development with an engine using functional programming, Nu is at least one option (and currently the only credible one).
Things I sometimes entertain taking out for better entry-level user appeal -
Most people putting a game together for the first time (or often the 3rd or 4th) don't want to even think about the overall structure / screen flow of their game and just want to hack up a simulation - since that seems like it'd be the funnest part. While Nu does allow people to almost entirely ignore the Screens layer if they use one of the Empty templates, it's generally not recommended because experience teaches that you should NOT wait until your game is half done before getting the screen structure in. This is one of the common very painful lessons that bites Unity users, for example.
If I wanted Nu to be as absolutely approachable as possible, I'd more seriously consider the idea of making the World binding a single global mutable binding so that users don't need to pass a local world binding in when such context is needed. If this were done for the sake of entry-level ease-of-use, it would be very corrosive of Nu's functional programming principles. Controlling what has access to a World binding is a nice and not over-pedantic way of limiting effects; IE - anything that does not get access to a local world binding will not affect the world. While I don't think effects are the most important things for a type system to constrain, this is one lightweight and obvious and simple usage where the presence or absence of a world binding enables.
If those two concessions were made, I presume further concessions could be made on the back of them, and so on. But then Nu would quickly no longer fulfill its promise to provide a professional game development engine using functional programming. It would have perhaps a lot more users but at the risk of becoming a toy.
All reactions