defos
defos copied to clipboard
Feature wishlist
Posting here as a reminder
- set_video_mode - change current video mode to be windowed / fullscreen / window borderless etc.
- restore_video_mode - change back to previously saved video mode
- get_monitors - get list of monitors to be able to set fullscreen on primary or secondary monitors ~~* using custom hardware cursors~~ ~~* changing window icon~~ ~~* setting min / max window sizes? or let user define that?~~ ~~* force aspect ratio when window is scaled in window mode?~~ no, let user do this
- enable/disable window decoration ~~* add enable versions of existing functions~~
- gamma ramps?
- get raw key input? possibly problematic because might interfere with engine ~~* Change window title~~ ~~* lock mouse to window~~ ~~* set mouse cursor position~~
- change resolution of fullscreen window
- get list of supported resolutions of monitor ~~* disable locking of mouse cursor at center of screen (what defold does in fullscreen mode atm + it auto disables mouse cursor)~~ possible, but just don't use Defold's built in fullscreen option
Do we have some priorities for a features? And sync between windows and macos platforms?
For example I can implement for macOS: toggle_fullscreen or set_video_mode with constants is_fullscreen Change window title
But maybe have sence to wait when it will be implemented on Windows?
Make issues for anything you think is high priority and I'll work on other versions over time. High priority features should be ones that a game needs to release on Steam successfully. Things users expect and increase their quality of life as they play the game.
You do not have to wait. Go ahead and implement anything you feel like and I'll try to do the Windows versions when I can. @chaosddp will probably help with Windows over time too I hope.
Of curse, I can try to implement the Windows version, though I am not familiar with win32. :)
Probably going to need to wait 1-2 weeks until we do a 1.0 release for when Native Extensions are released on Windows / Linux then everything can be done with Native Extensions. Right now I can't do the Linux work because ffi can't be used at all apparently so I'll help to finish Win/Mac until NE go live for everything. I think I'll make a formal priority list and todo based on what I know is needed for releasing on Steam - which is honestly already close to being done thanks to you two all is left is some quality of life features. It's nice that @britzl already made Steamworks runtime extension and it should be easy to make Win/Linux version of that too once NE is released for both.
@subsoap @chaosddp What about defos.toggle_maximize() method?
That would probably be a good one. The toggle is between maximize / restore on win
added the defos.toggle_maximize and defos.is_maximize for Windows, but i have to restore the fullscreen state first
Done for macOS too. Closed an issue #6
There is native extensions for Windows now. I'll play with it this weekend to get some features done.
Doing some Windows work now just a heads up. Edit: False alarm but I'm trying to make sure I'll have time this weekend...
Later I will have a try too, though i am not familiar with c/c++. :)
Multiple windows at the same time would be interesting. Just imagine snake or pong with diffrent windows.
@VincentLagerros Could you clarify?
A feature that makes it possible to lunch multible windows, all in the same game. Pong with 3 windows, one for each padle and one for the ball. Inconvinient, but funny af. You controll a window, not a character in a window, the window itself.
It is probably possible. Probably easiest way to do it would be to render to texture in a render script, and then display a different texture on each window context.
Then you have to figure out how to make and manage the different window contexts.
I doubt any of us will spend time to implement this though but you could look into supporting multiple windows and having some way to display specific things to each.
The only thing I need to make this possible, is a way to lunch Defold from Defold.
Three copies of the engine running is different from three window contexts controlled by the same engine.
Launching more copies would be easy if you have a good way to communicate between running copies.
Right now I am saving and loading data from a text document, not very efficient but better then nothing. Launching more windows whould be fine by me
Done with set_window_icon method for html5, windows and macos
Merged, Thanks @dapetcu21 for a help