
“I made an operating system UI within Unity” - mariuz
https://old.reddit.com/r/Unity3D/comments/ey5eta/i_made_an_operating_system_ui_within_unity/
======
MrLeap
Years ago, when I was adapting field manuals into Unity Games -- I got asked
to create some training for a piece of field kit that relied heavily on a
windows mobile device (very early windows mobile, that had a registry -- could
run some win32 apps, had a noticeable delay of like 350ms between every input
and it reacting...)

I had that new-job-gotta-impress energy, so went _hard_ at this project. I
added so many tiny details to make it _exactly like the windows mobile
device_. I had simulated battery indicators, signal that was calculated by
ray-crawling to the nearest in game "tower" and attenuating based on the
materials it encountered along the way (why?!) -- every menu, function,
submenu that I had access to I implemented. The power button worked, the
restart button would do the windows mobile boot animation. No stone unturned.

When I finished it, I assume 6 people saw it, but they never said anything to
me about it. That was probably my first adulthood jolt of ennui. Ah memories.

~~~
presidentender
I worked for the same field-manual-into-Unity employer for a few years, first
doing DoDAF architectures on a contract on Ft Huachuca, switching to the
serious games division for a small number of weeks before I politely quit in
frustration.

We spent years building what amounted to UML diagrams of existing Army units.
Great effort went into them. Coordination with active-duty officers, with GS
civilian stakeholders, training from certified DoDAF-training instructors; we
had TS-SCI clearances.

Then the resulting products went into a database somewhere, and nobody ever
looked at them.

I imagine that sort of thing is rife in the government contracting world, but
it seems like that particular firm has a real knack for finding truly futile
things to get paid for.

~~~
MrLeap
It was a rough situation at times. I really took advantage of how self
directed things were in the beginning. It was basically a masters program in
whatever technology I chose to learn. Some people used the time to watch
netflix. I wrote a 3d engine for android in almost entirely openGL ES2.0.
After that, Unity was what I chose.

I did find a few things I could do that made an impact. One project I did on a
lark even resulted in a little recognition.

I overheard an instructor complaining about an onerous, all hands on deck
eternal data wrangling task. Seemed like an easy thing to automate. For
bureaucracy dodging reasons, I wrote it in actionscript3. All it did was eat
files and spit out xslx files.

Turns out it wiped out XX% of the manual labor every instructor on post had to
do in a single button press.

A GS megaboss said it was going to save the government millions of dollars a
year. Was a little disappointed I never personally got a challenge coin for
it. My boss did :)

I'm grateful for the numbers though, I could leave that job confident I saved
the tax payer more than I cost.

Hopefully some of the things I'm working on for my current employer will get
some visibility in the outside world. Software is ephemera, but I'd like to
make a token effort to be remembered.

~~~
sizzle
Awesome mindset and perspective. Wish I could say the same about my co-
workers. I'd work with you in a heartbeat... This intrinsic motivation is
highly contagious to me in my experience and I wish I could be around it more
often.

------
nineteen999
Well, no fancy UI, but I did port a Z80 CPU which could run a full Operating
System (CPM 2) to Unreal Engine:

[https://i.imgur.com/2nagJS4.png](https://i.imgur.com/2nagJS4.png)

I did implement graphics hardware as well, so in theory you could write a GUI
along the lines of Contiki or something

[https://i.imgur.com/DmnVA2I.png](https://i.imgur.com/DmnVA2I.png)

The hard drives were configurable (up to 4MB hard drive images supported) and
as per the pic above, the light on the drives light up when accessing the
disk.

ANSI/VT100 support on the terminal as well:

[https://i.imgur.com/DlftREp.png](https://i.imgur.com/DlftREp.png)

Telnet+ZMODEM client was working so you could download software directly from
Internet connected BBS's:

[https://i.imgur.com/K44GT1W.png](https://i.imgur.com/K44GT1W.png)

Or do word processing in space with WordStar 4:

[https://i.imgur.com/rIY1he8.png](https://i.imgur.com/rIY1he8.png)

I wanted to make something a bit between a cross between FTL and 0x10C, but in
3D, and where your space controls were linked up to software running on the
Z80. I had up to four Z80 instances running (could have supported more), and
wanted to be able to network them to each other as well as the spaceship
control plane as well.

~~~
smallstepforman
OK, this is actually quite impressive. Geeky beyond belief, and the question
is how deep would you care to go ... emulating a x86 which is running your app
emulating an x86 ... Still impressed.

~~~
nineteen999
Funnily enough, I'm also working on a Motorola 68K emulation component as
well, and I did consider trying to compile the Z80 emulator to run on it.

------
Answerawake
Looks like a generic Linux distro. Am I the only one getting "visual fatigue"
over seeing flat design? I just feel like we need a trend change. Its been way
too long. I find myself looking at the old Windows Vista, Windows XP, early
Mac OS X, or even Windows 3.1 designs and longing for that simplicity.

~~~
kick
Flat design is more simple than skeuomorphism, almost by definition.

What you seem to want is complexity.

~~~
arexxbifs
There's plenty of middle ground between the current extreme flatness and, say,
MacOS X Tiger. An interface with a simple 3D bevel look (such as in Motif or
the toolkit in NeXTStep) is no more skeuomorphic than than a flat interface,
especially not considering how prevalent touchscreen controls are today.

Flatness to the current point of minimalism is, to me, very taxing and
complex. Things blend together so much it's hard to tell where one UI element
begins and another one ends. I frequently misclick in Windows 10/Office 365
even though I've used it for years now, simply because the flatness makes me
misinterpret the layout and function of the UI.

~~~
etaioinshrdlu
I miss the look of MacOS X Tiger so much. It was a thing of beauty.

------
kstenerud
From the comments:

This is a remake of Project Glass, which is a simulated operating system UI,
this time implemented in Unity. It's not a full OS, but every simulated app
and widget inside is fully functional.

There is currently only a Windows demo [1] available, and he's undecided
whether he'll release on Github or not.

[1]
[https://drive.google.com/file/d/1p3AACMd6KuRnHctsq42uJfMq3Bw...](https://drive.google.com/file/d/1p3AACMd6KuRnHctsq42uJfMq3BwBM86L/view)

~~~
sixothree
What is Project Glass in this context? Forgive my ignorance, but search is
confusing here.

~~~
hokkos
Maybe a reference to Sun's Locking Glass project ?

[https://www.youtube.com/watch?v=JXv8VlpoK_g](https://www.youtube.com/watch?v=JXv8VlpoK_g)

~~~
DaiPlusPlus
Looking Glass was a _real_ window manager though.

------
jonny383
Awesome! If it's a hobby, who cares about the platform. Have fun and learn
stuff.

This reminds me of being a kid, and always having the "hacker" mentality. Use
whatever you have available to make something awesome.

I remember having my first "computer" based project around 2001 for school. We
had to create some kind of presentation "using any tool" available to us on
our home computer (or available in the school library).

I opted to create my presentation using RPG Maker 2000. It had animations,
sound effects, and even a little quiz at the end. I handed the project in to
the teacher on a 1.44MB floppy* drive containing only the compiled windows
binary.

The teacher loved it and placed me in a regional school advanced IT program
where I was first introduced to QBASIC.

~~~
numlock86
> [...] where I was first introduced to QBASIC.

Not sure if this is supposed to be a happy end or not.

Cool story!

~~~
jonny383
Sorry, I should have specified "introduced to my first actual programming
language, QBASIC".

Funny thing was, I already knew how to program (in terms of breaking problems
down and using components to model data - probably from building games in RPG
Maker), I just had never been shown a programming language. It was a "AHA!"
moment.

------
musicale
In the 1970s and 1980s, GUIs devoted a large portion of the machine's power
(and other resources such as memory and disk space) to improving usability.
This reduced raw application performance and power efficiency but it was
considered a worthwhile tradeoff.

For years we've been optimizing battery life, but now that mobile devices can
run for 8-10 hours or more on a single charge, perhaps we should reconsider
spending more of the power budget (and implementation effort) on usability.

On a side note, it baffles me that devices like the PS4 that are amazingly
responsive during gameplay have extremely clunky and unresponsive system GUIs.
Can't we get some smart game programmers to rewrite the PS4 system GUI to make
it fast and responsive?

~~~
Narishma
Maybe it's because it uses (at least at launch, dunno if they every changed it
for something else) Web tech for it's interface?

~~~
musicale
It's garbage. The PSN store in particular feels like a very unresponsive web
page.

------
kick
reddit's modern userbase is really interesting. There are some incredibly
interesting people who use it, but you also find a bunch of accounts that are
under a year old with lines like this:

 _Please don 't. I would like to see you get rewarded for your hard work.
Screw the parasites._

Their new UI seems to be doing its job, but I wonder if the decline in thread
quality was worth it.

~~~
that_jojo
As if the quality of HN threads is better by leaps and bounds.

------
silentwanderer
Thank you for linking Old Reddit.

------
solarkraft
The animations are just amazing. It's the exact field in which I still find
modern applications lacking, but games exceptionally good (including game UI).

I think UI frameworks should take more from game engines, which I think has
happened over the last 2 decades, albeit slowly. My best examples of it is
probably currently QtQuick, which builds completely on OpenGL and uses a bunch
of game engine terminology in its documentation - but I have also found that
it's possible and not too hard to make working application mockups using
Godot.

------
ktm5j
Looks really cool! Unfortunately it looks like there is only a Windows version
available to play around with.

If this could run on Linux and have support for running arbitrary x11 apps
then it would be very interesting! I don't have a lot of personal knowledge
about Unity3d, but I do hope the creator puts this up on github or something.
I'd love to take a closer look.

~~~
jayd16
It's probably not hard to get it running on Linux but it's not a shell. It's
just a toy with built in 'apps.'. Running arbitrary apps rendered to a texture
in this app and forwarding user input back to apps is probably out of scope.

~~~
ktm5j
> but it's not a shell. It's just a toy with built in 'apps.'

Yes that's what I figured. For sure not what it's designed to do as of yet,
but if that gap could be bridged in a practical way then this seems like a
good head start.

------
nhatbui
I tried making the original Macintosh OS in Godot and my takeaway was it was
really enjoyable to make UIs in a game engine. It would be interesting to see
some “avant-garde” movement of making not only games but native apps using
game engines.

~~~
cnasc
This isn't quite that, but I can never not link to [https://arcan-
fe.com/](https://arcan-fe.com/) in cases like this. He even updated today!

------
pwthornton
This is like Windows Vista Aero UI on crack.

There is a reason that UIs don't look like this. The transparency alone is a
major issue for usability, accessibility, and productivity.

It's an interesting project. I wish this person would have pushed themselves
to think of new paradigms, rather than trying to use more effects to very
staid looking interaction design concepts.

~~~
Nition
Most games of the sort the creator is targeting here (games with a built-in
fake OS) have their UI look fairly familiar, since it's more about creating a
believable world than doing something exciting and new with the OS itself.

~~~
exikyut
...Which then goes and excludes the demographic of people for whom "believable
world" _means_ "exciting and new".

As in, tell me something I don't know - I'll be able to believe [in] that much
more effectively than a revamp of some old dead thing I've been staring at
boredly for the past X amount of time.

------
gkfasdfasdf
Am I the only one who thought it was going to be an OS navigated in a FPS
environment, like the old Doom sysadmin port?

Looks pretty slick though.

~~~
klingonopera
Kinda ironic, that when they were actually using real PC tech, people were
claiming they weren't, whereas now Hollywood sins the crap outta the hacker-
type, and nobody bats an eye.

[https://en.wikipedia.org/wiki/Fsn_(file_manager)](https://en.wikipedia.org/wiki/Fsn_\(file_manager\))

EDIT: Come to think about it... back then, the tech was probably just about
mature enough to make such a thing just about possible, certainly today it can
beautifully be done, and can maybe even more efficient (for the user/work, not
hardware) than classic terminal/GUI approaches. I've never used a third party
file explorer, apart maybe from WinSCP, but what sounded ridiculous could
actually be pretty genius.

Anyone here on a 3d filesystem explorer?

------
pier25
I'm sure there are plenty of usability issues but damn it looks slick.

It's sad that a kid can make this with Unity3D, probably on his/her free time,
and Microsoft with all its billions is not capable of producing a good UI for
Windows.

------
jdance
It was very clean and impressive work, but the longer I watched the more I
realized how disconnected I feel from all these weird "apps".

\- Music player without connection to the real world (spotify/youtube)

\- Notes app without connection to the real world (the file system/other
platforms)

\- Messages app without connection to the real world (sms / messenger /
whatsapp / etc etc)

\- Photos app without connection to the real world (some kind of cloud synced
file system)

\- Notifications ... I really still have not found a use for them, except for
IM on my phone

Stop bundling these things :( It looks nice, but the real world use is so
limited. Focus on really enabling other stuff instead

~~~
MrEldritch
I'm not sure if you realize, but this isn't intended as a "real OS" for
practical use.

It's intended for use _inside of computer games;_ whether for simulation of
using computers inside the game-world, or for games where the framing device
is a (simulated) desktop interface.

In which case, the "limited real world use" is hardly a flaw!

------
mbf1
It's a nice looking display, and it's running at a nice 60FPS. However,
operating systems don't generally run in full GPU mode all the time -- it's a
huge amount of power to be re-drawing the screen that often, and that scales
to poor battery life on mobile and expensive power costs in servers.

So that's one of many reasons practical OSes don't do their UIs with GPU
shaders when they can otherwise get away with less.

~~~
kllrnohj
Your phrasing of this is a bit unclear. I _think_ you mean that no "real" UI
redraws when nothing has changed.

But otherwise most operating systems do run in full GPU mode all the time. The
true-mobile ones, so iOS & Android, are almost always using dedicated hardware
to handle composition without spinning up the GPU (although both use the GPU
to render, so whenever something _does_ change it's immediately back on the
GPU), but "desktop" ones are generally always doing GPU composition as long as
the display is on. With some hand-wavy exceptions to that primarily for video
layers in select circumstances with proper hardware support.

~~~
exikyut
TIL hardware planes (the "dedicated hardware" you refer to?) != the GPU.

I presume these are inside the GPU die, though? Probably near the display
controller logic?

~~~
kllrnohj
Whether or not it's inside the GPU die would depend on if the display
controller is part of the GPU die or not. On a mobile SoC everything tends to
be on the one die anyway so... sure. On a discreet desktop GPU I have
absolutely no idea. They might not even bother having one at all?

The mobile ones though are pretty good, though. They can do like ~6
composition layers with alpha blending, cropping, rotation, and apply a color
matrix for display calibration. All in the dedicated HWC silicon, GPU can be
powered off (or doing something else like rendering a game)

------
scarejunba
I would love a 60 fps fully graphically-accelerated UI. This one looks
beautiful. Cool concept to prototype in Unity too.

------
Geee
Such UI is not insanely hard to implement in Unity, like it would be if it was
HTML/CSS.

------
RabbiPires
I remember working on a Visual Basic "OS" back in 2005 with something similar
in mind. I don't remember going further than implementing a basic desktop and
a calculator. Fun times.

------
leowoo91
He did a great job, but I wonder if unity optimizes the runtime for components
that doesn't need update every frame?

~~~
jackbrookes
I believe Unity does this if the scene is split into several separate UI
canvases:

[https://unity3d.com/how-to/unity-ui-optimization-
tips](https://unity3d.com/how-to/unity-ui-optimization-tips)

------
dmos62
Next create a mock OS inside that.

~~~
faitswulff
That can play Unity games...

------
busymom0
Time to make Unity UI inside it!

------
RocketSyntax
Now hook it up to a VR headset so I can have 6 screens?

------
0xffff2
Am I the only one who hates most animation? If the animation doesn't serve a
_clear_ purpose in signalling something to the user, I want it gone. I'm not
convinced that we've seen any meaningful advance in OS UI design since Windows
95.

~~~
hbosch
Am I the only one who hates graphics on t-shirts? If the design doesn't serve
a _clear_ purpose in signalling something about the user, I want it gone. I'm
not convinced that we've seen any meaningful advance in t-shirt design since
Windows 95.

Ok, ok, I'm being dumb. And yeah, I tend to agree, but as a counterpoint:
sometimes it's also just cool to have cool stuff. There is certainly a
modernist fetish for superminimalism – HN being a locally favored example of a
great social media website with no unnecessary frills – but I think your
qualifier "serve a clear purpose" is not objective enough to be a good rule.
What you and I think is a clear purpose are bound to be very different. I
think a fade in/scaling animation for windows to appear and disappear is a
better experience than just flickering them on and off – I think the clear
purpose there is that it's cognitively less demanding when a window appears
over the course of 200ms rather than 1ms. But hey, that's me.

What is the "clear purpose" of MacOS UI to have rounded corners, or the status
bar to be translucent, or for the "genie" effect of minimizing an app. The
truth is, animations have almost _zero_ impact on the usability of an app or
experience and only _add_ to the perception of quality. Much like contrast
stitching on the leather seat of your BMW, the reason it's there is simply
because people think it's kinda nice to have and doesn't hurt anyone.
Otherwise the only pants we'd be able to buy would be cargo pants... and no
one likes cargo pants.

It's OK for stuff to exist that is "just neat".

~~~
0xffff2
>Am I the only one who hates graphics on t-shirts? If the design doesn't serve
a clear purpose in signalling something about the user, I want it gone. I'm
not convinced that we've seen any meaningful advance in t-shirt design since
Windows 95.

I don't know if this helps or hurts your point, but I do in fact also hate
graphical T's. All of my T-shirts are solid colors and most of them are black.

>What is the "clear purpose" of MacOS UI to have rounded corners, or the
status bar to be translucent, or for the "genie" effect of minimizing an app.

Thankfully I don't have to use macOS very often, but I don't think any of
those serve a purpose and they constantly (but mildly) annoy me when I do have
to boot up my mac. The minimization effect is important, but it should still
be _fast_.

~~~
fxtentacle
Me too. I dislike both t-shirts with useless text on them and apps with
useless animations in them.

------
BossingAround
Wow. Could be an interesting game. Could also be an interesting learning tool.
It's a shame that it probably wouldn't be ported to Linux though.

~~~
_bxg1
It could trivially be built for Linux if the author decided to (or released
the code). But it's also more of a tech demo than a real utility; there's no
indication it runs any existing GUI applications.

~~~
MrEldritch
It's not _supposed_ to be a a real utility, or run real applications! It's
intended for use in computer games; there's several such games that use a
virtual "OS" as their framing device and core interface.

~~~
_bxg1
I missed that part in the text

I honestly think it's more interesting as:

\- A demonstration of what's possible within Unity (it's _extremely_
impressive, because Unity's built-in GUI system is pretty terrible and it's
clear that there's some level of composability, etc. to the UI system being
demonstrated)

\- An experiment in creating a totally virtual, cross-platform (gorgeous)
desktop environment within a single app that could be trivially run on any OS

But of course it's still a long way from the latter, if someone even wanted to
take it that direction

------
loudandskittish
I bet it runs smoother and uses less resources than anything written in
Electron...

~~~
jokoon
Here is an analysis of unity's performance
[https://www.youtube.com/watch?v=tInaI3pU19Y](https://www.youtube.com/watch?v=tInaI3pU19Y)

My take on your comment is that the problem of electron is that it uses HTML.

~~~
MrLeap
Electron apps are fat in so many dimensions. From time to time I make them at
work. I like the ergonomics of writing desktop javascript, but those blob
sizes...

Super simple, zero asset electron app? ~300MB

Relatively complicated binary created with unity that includes high resolution
textures, models and sounds? 35MB.

So far, everything I've used electron for has had good enough performance
though.

