kikito wrote:- The graphics library will be separated. Object creation (like newCanvas, newQuad), window functions (like setCaption) and system stuff (like getRendererInfo) will remain in love.graphics. Drawing (line, circle) as well as state (push, pop, etc) will be moved to the Canvas object. So you will do canvas:circle(...) instead of love.graphics.circle(...).
- Related to the previous one, love.draw will receive the "default canvas" as a parameter, just like love.update receives dt. The default canvas will be "special" in the sense that the LÖVE loop is the one which maintains it, and also will expand/contract if the window size changes.
I've actually been thinking about doing something like this. There are a few issues that I can see happening though (which may or may not end up being real issues in practice):
- It might be less pleasant for libraries and other separated bits of game code to draw things, as a Canvas object would probably have to be passed around everywhere.
- It could involve more code to do some things, as you'd have to set the state for each individual Canvas you want to use. Although you often have to do that anyway.
- Because each Canvas would have its own state, the issue of accidentally using old per-frame state set by something else could turn into accidentally using very old state set once somewhere else, and it might be harder to track down where that happened.
- Due to the way graphics hardware works, it'll be impossible to have reasonable performance unless setCanvas (or something similar) still exists – so there would only be a single Canvas active at any given time, and draws to inactive canvases would have to fail. Which is kind of an unintuitive API to explain.
Those last two might be solved if (the equivalent of) setCanvas returned an object that has draw and state methods, rather than said methods operating on the Canvas itself. I want to experiment with stuff like this after 0.10.0 is out.
(also, "setCaption" has been in love.window as love.window.setTitle for a couple years now.

)
Linkpy wrote:Löve can have many, MANY more thing. It go forward a "professional framework". Look, there are no API for handling sub-process. No compression API, audio/video device API, no IPC API, etc etc.
A pro framework needs many feature, no only features that users see, also features which give powerful abilities to the game. You can do a game right know, but you may need to do many features yourself (like IME input : you need to make your own IME-like system if you want something like this in your game).
LÖVE 0.10.0 has some APIs for
compression (not zip files though, as it doesn't deal with folders or multiple files) and
video playback, and it already has some functions to deal with IME input ([wiki]love.keyboard.setTextInput[/wiki] and [wiki]love.textinput[/wiki]).
LÖVE will always be game-focused though, and I don't see it getting sub-process or IPC functionality beyond what you can do right now with Lua's APIs and luasocket.
zorg wrote:And an expanded
(better) audio API in general

I definitely want this, but I'm not very good at designing audio APIs. Suggestions are welcome!