[INSANE CODING] iios - Desktop Environment using RenPy
-
- Veteran
- Posts: 208
- Joined: Tue Dec 30, 2008 9:18 am
- Projects: Everlasting Summer; The Herbalist; iiCharacter; iiOS
- Contact:
[INSANE CODING] iios - Desktop Environment using RenPy
Hi, all. I have done my best on using RenPy in unsupported and unrecommended ways (I'm really sorry, PyTom..) and created something really strange.
It's a renpy-based windowed desktop environment capable of running dozens of "programs" by dynamicly loading them from python files.
There are such applications as picture viewer, movie player, IRC client, minesweeper game and prototypes of renpy subset interpreter and a web browser.
I even wrote a clone of WinAmp program, which plays music, handles playlist and supports winamp 2.x skin files.
SusanTheCat's Renpystein is also ported as an app for this platform.
Most of the code is under CC-BY-NC-SA 4.0, i will put it on GitHub later.
You can download a build and try it out: https://mega.co.nz/#!vdYzAQjA!YphmyQ2Cs ... upkOe8cs_Q
It is still far from finished, just showing what I have right now.
Still, I'm curious, what do you think about it? Please, let me know.
It's a renpy-based windowed desktop environment capable of running dozens of "programs" by dynamicly loading them from python files.
There are such applications as picture viewer, movie player, IRC client, minesweeper game and prototypes of renpy subset interpreter and a web browser.
I even wrote a clone of WinAmp program, which plays music, handles playlist and supports winamp 2.x skin files.
SusanTheCat's Renpystein is also ported as an app for this platform.
Most of the code is under CC-BY-NC-SA 4.0, i will put it on GitHub later.
You can download a build and try it out: https://mega.co.nz/#!vdYzAQjA!YphmyQ2Cs ... upkOe8cs_Q
It is still far from finished, just showing what I have right now.
Still, I'm curious, what do you think about it? Please, let me know.
-
- Regular
- Posts: 178
- Joined: Sat May 16, 2015 8:00 pm
- Projects: Vampire: The New Birth
- Contact:
Re: [INSANE CODING] iios - Desktop Environment using RenPy
If I understand correctly, is this your attempt at making Ren'Py more user-friendly?
- PyTom
- Ren'Py Creator
- Posts: 16122
- Joined: Mon Feb 02, 2004 10:58 am
- Completed: Moonlight Walks
- Projects: Ren'Py
- IRC Nick: renpytom
- Github: renpytom
- itch: renpytom
- Location: Kings Park, NY
- Contact:
Re: [INSANE CODING] iios - Desktop Environment using RenPy
My initial reaction is that is 1 month, 23 days late.
(I mean, I'm both flabbergasted by both the "how?" and the "why?".)
(I mean, I'm both flabbergasted by both the "how?" and the "why?".)
Supporting creators since 2004
(When was the last time you backed up your game?)
"Do good work." - Virgil Ivan "Gus" Grissom(When was the last time you backed up your game?)
Software > Drama • https://www.patreon.com/renpytom
-
- Veteran
- Posts: 208
- Joined: Tue Dec 30, 2008 9:18 am
- Projects: Everlasting Summer; The Herbalist; iiCharacter; iiOS
- Contact:
Re: [INSANE CODING] iios - Desktop Environment using RenPy
Ahahaha, it took me some time to calculate what exactly was on that day. ^_^PyTom wrote:My initial reaction is that is 1 month, 23 days late.
Ok, I'll try to answer.PyTom wrote:I mean, I'm both flabbergasted by both the "how?" and the "why?".
"Why": RenPy allows programming on pure python, providing a kind of good UI library. Using it in nonintended ways is fun, because it's both exciting (with python programming is fun again) and challenging (some details of how RenPy works are too VN-specific). Several days before New Year party I found out that RenPy supports Drag&Drop, at this moment I reinvented it with awful shit-code for Travnica game (stay tuned, english version is coming soon). When celebration was over, we had a long Russian State Winter Holiday weeks. During this period I've tried Drag and thought "hmmm, one can use them to make something windows-like". This idea was so strong I couldn't help but to code this down.
"How": basicly, to make something like this you need to store a DragGroup in a variable and to manage Drags inside it when a window needs to be added/closed/updated. As for applications, I've agressively used non-public API. And yes, this was not too easy. There are lot's of places where I feel that I'm reaching current RenPy's limits.
Some most interesting limits worked around:
* if Drag has a scrollable ViewPort inside, it is still dragged, not scrolled. Kind of solved this in SnaplessDrag class.
* Button reacts only to left and right mouse keys. Screw this, my MultiClickedButton class reacts to middle click and mouse scroll too! (That was actually needed for MicroAmp and Minesweeper game)
* Text does not have properties to disable tag support. Created TaglessText class for this.
* Grid uses the same widths&heights for all the columns&rows. UnevenGrid class solves this.
* Adding & removing sound channels is not allowed when the game have started. Using non-public API to do this.
* I was not sure if new Styles can be generated after init phase, but I needed this. So all styles are handled by directly passing ui properties.
Behaviour and performance issues:
* RenPy works extremely slower if DynamicDisplayable contains a clickable Button (FPS 60 instantly drops to FPS <20)
* RenPy slows down if a hundred(s) of focusable objects are displayed.
* RenPy consumes hundreds more of memory Mb when a very long Label is displayed inside ViewPort. It is hundreds Mbs less if one Label is replaced with a Vbox with lots of Labels.
Unsolved limits:
* RenPy core code uses "renpy.something" calls and "import renpy.something" imports in lots of places, which makes it uneasy to run multiple instances of RenPy. Still, I have successfully runned "The question", which is kind of success.
* Maximum Unicode code is 65536 on some platforms
* HTTPS is not supported (which means that english Wikipedia is accessable and russian is not, lol)
* Only one video stream can play at a time
* Video stream can't be paused
* Audio&video stream can't be rewinded
* Audio&video stream total length is avaliable with any APIs (for MP3 I have parsed some headers to extract this)
* Equalizer can't be implemented with any current APIs
* I don't know a way to drop a given set of images from image cache without purging everything
* If an exception is thrown from audio subsystem or during render, my code does not catch it and does not show a beautiful application window with a traceback without ruining the whole system.
* Many more...
- Sorakun
- Regular
- Posts: 103
- Joined: Sun Oct 20, 2013 10:02 pm
- Completed: Techno Titans, Blood Metal Exorcism, Tom Cruiser, Mechadin, UPlay
- IRC Nick: Sorakun
- Skype: sora.ch4n
- Contact:
Re: [INSANE CODING] iios - Desktop Environment using RenPy
It sounds like you have basically tried to create a virtual desktop run on Ren'Py, if that is the case, my question is, why not just use C# or some other easly adaptable language?
Seems kind of like trying to use a spoon to dig to china, it can be done but don't see why you wouldn't just use a shovel.
Seems kind of like trying to use a spoon to dig to china, it can be done but don't see why you wouldn't just use a shovel.
-
- Veteran
- Posts: 208
- Joined: Tue Dec 30, 2008 9:18 am
- Projects: Everlasting Summer; The Herbalist; iiCharacter; iiOS
- Contact:
Re: [INSANE CODING] iios - Desktop Environment using RenPy
Yes, that's right. Plus, write some apps to make this demo functional.Sorakun wrote: It sounds like you have basically tried to create a virtual desktop run on Ren'Py
Python is easily adaptable in many ways.Sorakun wrote: why not just use C# or some other easly adaptable language?
YES!Sorakun wrote:Seems kind of like trying to use a spoon to dig to china
1.Some not much into shovels.Sorakun wrote:but don't see why you wouldn't just use a shovel.
2.You don't need to look for a spoon once you get to China, it is already with you.
3.This expedition helps you learn much more about spoons.
4.Digging is fun and enjoyful even if the earth is flat and there is no China.
Re: [INSANE CODING] iios - Desktop Environment using RenPy
It's surprisingly fast, even on my old machine.
Can possibly used for games that emulate a desktop environment?
Good job, iichan!
Can possibly used for games that emulate a desktop environment?
Good job, iichan!
-
- Veteran
- Posts: 208
- Joined: Tue Dec 30, 2008 9:18 am
- Projects: Everlasting Summer; The Herbalist; iiCharacter; iiOS
- Contact:
Re: [INSANE CODING] iios - Desktop Environment using RenPy
Not sure if it is safe with renpy's save and rollback. Until you don't use them, this should be fine to integrate this desktop environment as a part of a bigger game.Karl_C wrote:Can possibly used for games that emulate a desktop environment?
- Morhighan
- Miko-Class Veteran
- Posts: 975
- Joined: Sun Jun 27, 2010 12:54 pm
- Completed: AIdol, When Our Journey Ends, Forgotten Not Lost
- Organization: MysteryCorgi
- Tumblr: MysteryCorgi
- Deviantart: MysteryCorgi
- Soundcloud: MysteryCorgi
- itch: MysteryCorgi
- Location: USA
- Contact:
Re: [INSANE CODING] iios - Desktop Environment using RenPy
I'm not too interested in having rollback in my game, but I do think I need a save function. Any way to remedy this?iichan_lolbot wrote:Not sure if it is safe with renpy's save and rollback. Until you don't use them, this should be fine to integrate this desktop environment as a part of a bigger game.Karl_C wrote:Can possibly used for games that emulate a desktop environment?
-
- Veteran
- Posts: 208
- Joined: Tue Dec 30, 2008 9:18 am
- Projects: Everlasting Summer; The Herbalist; iiCharacter; iiOS
- Contact:
Re: [INSANE CODING] iios - Desktop Environment using RenPy
Currently there is no "hibernate" function for this runtime, so after you close the game all the unsaved stuff like list of open windows and their positions are lost. Only things that are actually saved are those things that are forced to be saved by apps themself (like, selected skin of iiAmp, highscore table for iiMines, etc). If your game is all about user's desktop, then maybe you don't even need any save function.
If you are planning to use desktop only in a few moments within a VN scenario, then I'm not sure what actually would happen. I never tested saving with RenPy's built-in save mechanism, but I suppose there may be issues like exceptions about unsavable lambda or something like this.
If you are planning to use desktop only in a few moments within a VN scenario, then I'm not sure what actually would happen. I never tested saving with RenPy's built-in save mechanism, but I suppose there may be issues like exceptions about unsavable lambda or something like this.
- Morhighan
- Miko-Class Veteran
- Posts: 975
- Joined: Sun Jun 27, 2010 12:54 pm
- Completed: AIdol, When Our Journey Ends, Forgotten Not Lost
- Organization: MysteryCorgi
- Tumblr: MysteryCorgi
- Deviantart: MysteryCorgi
- Soundcloud: MysteryCorgi
- itch: MysteryCorgi
- Location: USA
- Contact:
Re: [INSANE CODING] iios - Desktop Environment using RenPy
Oh, I see! I think I get that a bit better now.iichan_lolbot wrote:Currently there is no "hibernate" function for this runtime, so after you close the game all the unsaved stuff like list of open windows and their positions are lost. Only things that are actually saved are those things that are forced to be saved by apps themself (like, selected skin of iiAmp, highscore table for iiMines, etc). If your game is all about user's desktop, then maybe you don't even need any save function.
If you are planning to use desktop only in a few moments within a VN scenario, then I'm not sure what actually would happen. I never tested saving with RenPy's built-in save mechanism, but I suppose there may be issues like exceptions about unsavable lambda or something like this.
Also... I ran into an error while trying to open the web browser:
Re: [INSANE CODING] iios - Desktop Environment using RenPy
Morhighan wrote:Also... I ran into an error while trying to open the web browser:
iichan_lolbot wrote: Unsolved limits:
...
* HTTPS is not supported (which means that english Wikipedia is accessable and russian is not, lol)
...
- Morhighan
- Miko-Class Veteran
- Posts: 975
- Joined: Sun Jun 27, 2010 12:54 pm
- Completed: AIdol, When Our Journey Ends, Forgotten Not Lost
- Organization: MysteryCorgi
- Tumblr: MysteryCorgi
- Deviantart: MysteryCorgi
- Soundcloud: MysteryCorgi
- itch: MysteryCorgi
- Location: USA
- Contact:
Re: [INSANE CODING] iios - Desktop Environment using RenPy
Okay, thought so!Karl_C wrote:Morhighan wrote:Also... I ran into an error while trying to open the web browser:
iichan_lolbot wrote: Unsolved limits:
...
* HTTPS is not supported (which means that english Wikipedia is accessable and russian is not, lol)
...
Is there any way to set it to the English Wikipedia just for testing purposes?
-
- Veteran
- Posts: 208
- Joined: Tue Dec 30, 2008 9:18 am
- Projects: Everlasting Summer; The Herbalist; iiCharacter; iiOS
- Contact:
Re: [INSANE CODING] iios - Desktop Environment using RenPy
Wow, DDLC Plus (https://ddlc.plus/) features lots of this topic's app:
* desktop environment
* taskbar with Start button and clocks
* running various RenPy games inside a RenPy game
* fully functional music player with playlists support
* desktop environment
* taskbar with Start button and clocks
* running various RenPy games inside a RenPy game
* fully functional music player with playlists support
- Morhighan
- Miko-Class Veteran
- Posts: 975
- Joined: Sun Jun 27, 2010 12:54 pm
- Completed: AIdol, When Our Journey Ends, Forgotten Not Lost
- Organization: MysteryCorgi
- Tumblr: MysteryCorgi
- Deviantart: MysteryCorgi
- Soundcloud: MysteryCorgi
- itch: MysteryCorgi
- Location: USA
- Contact:
Re: [INSANE CODING] iios - Desktop Environment using RenPy
Oh is that how it was done? I was wondering.
As an aside, this project and how it broke Pytom pop into my head every so often.
As an aside, this project and how it broke Pytom pop into my head every so often.
Who is online
Users browsing this forum: No registered users