• Announcements

    • khawk

      Download the Game Design and Indie Game Marketing Freebook   07/19/17

      GameDev.net and CRC Press have teamed up to bring a free ebook of content curated from top titles published by CRC Press. The freebook, Practices of Game Design & Indie Game Marketing, includes chapters from The Art of Game Design: A Book of Lenses, A Practical Guide to Indie Game Marketing, and An Architectural Approach to Level Design. The GameDev.net FreeBook is relevant to game designers, developers, and those interested in learning more about the challenges in game development. We know game development can be a tough discipline and business, so we picked several chapters from CRC Press titles that we thought would be of interest to you, the GameDev.net audience, in your journey to design, develop, and market your next game. The free ebook is available through CRC Press by clicking here. The Curated Books The Art of Game Design: A Book of Lenses, Second Edition, by Jesse Schell Presents 100+ sets of questions, or different lenses, for viewing a game’s design, encompassing diverse fields such as psychology, architecture, music, film, software engineering, theme park design, mathematics, anthropology, and more. Written by one of the world's top game designers, this book describes the deepest and most fundamental principles of game design, demonstrating how tactics used in board, card, and athletic games also work in video games. It provides practical instruction on creating world-class games that will be played again and again. View it here. A Practical Guide to Indie Game Marketing, by Joel Dreskin Marketing is an essential but too frequently overlooked or minimized component of the release plan for indie games. A Practical Guide to Indie Game Marketing provides you with the tools needed to build visibility and sell your indie games. With special focus on those developers with small budgets and limited staff and resources, this book is packed with tangible recommendations and techniques that you can put to use immediately. As a seasoned professional of the indie game arena, author Joel Dreskin gives you insight into practical, real-world experiences of marketing numerous successful games and also provides stories of the failures. View it here. An Architectural Approach to Level Design This is one of the first books to integrate architectural and spatial design theory with the field of level design. The book presents architectural techniques and theories for level designers to use in their own work. It connects architecture and level design in different ways that address the practical elements of how designers construct space and the experiential elements of how and why humans interact with this space. Throughout the text, readers learn skills for spatial layout, evoking emotion through gamespaces, and creating better levels through architectural theory. View it here. Learn more and download the ebook by clicking here. Did you know? GameDev.net and CRC Press also recently teamed up to bring GDNet+ Members up to a 20% discount on all CRC Press books. Learn more about this and other benefits here.
Sign in to follow this  
Followers 0
Prozak

[web] Mercury - My attempt at a Browser-OS Environment

20 posts in this topic

Hi all,

Mercury is the tentative name I gave a technology I've been working on. It mimics an OS-like environment on your Browser.

You interact with it in much the same manner you would with any regular OS.

My vision is pretty much "your apps - online", where anyone can run them, in an environment that is easy to develop for, coder-friendly.

Here is the link for video 1: YouTube

Please watch it and place your doubts and questions here.

Thanks for the feedback and any interest in the Project.

(PS: Also looking for beta-testers)
(PPS: Also looking for employment...)
0

Share this post


Link to post
Share on other sites
Well, all I can say is that I am very, very, very impressed, and I can really see something like this being applicable technology to something like a netbook or other smaller portable devices. It would be interesting to hear more about the back-end side of it. Where does the server run? Can I run an instance of the server on Amazon EC2 and run 10 web interfaces to that server? What sort of technology do I have to dedicate to it?

All in all, a very cool project -- with which, I can't imagine you would have too much trouble finding employment...
0

Share this post


Link to post
Share on other sites
Cool project. An environment like that will rise and fall on its apps -- picture viewing is fun, but I have Flickr for that, which has a more targeted UI. Tthe basic utility of a windowing-based environment would come from the ability to organize and coordinate small areas of content. You should investigate an adapter for embedding Google Gadgets as apps, which would open up a huge range of pre-made applications. You might do the same for Facebook apps, though I haven't really used those and don't know whether they'd be suitable for this sort of thing.

Oh, and also consider how you'll integrate your stuff with LastPass or other password management.
0

Share this post


Link to post
Share on other sites
That was very cool. Definitely fits in with the cloud mentality. I had thought about doing a similar thing as a portable accessible business environment for remote workers and hot-desking but never found the time.
0

Share this post


Link to post
Share on other sites
Wow, that's cool. Is there an open api to write applications for it? Do applications run mostly in javascript or mostly server side?
0

Share this post


Link to post
Share on other sites
@choffstein: The "backside" of it? Well, Mercury is an agregation of various technologies: PHP, javascript, Ajax, Json, HTML and CSS.

Mercury allows a user to run applications in a windowed environment. Each application has its own code file. This code file consists of:
* HTML - defines the structure of the application, in the form of text, controls, etc.
* CSS - gives the HTML unique styling. A parser engine ensures that no two applications share the same CSS styles.
* javascript - runs when the window is created, setting it up. Programmers will be able to setup an endless amount of options, for example, the label text (name of window), the Status Bar text (footer of the window), what system buttons appear (menu, minimize, maximize, close), callbacks for Events (onKey, onResize, onClose, etc).
* PHP - runs when the window code file is parsed, allowing the application to access the DataBase and set itself up
* Ajax - javascript code that allows the Client-Side of an Application to talk to its own Server-Side (PHP). The Ajax engine of the Window has been fully wrapped, and it's a breeze interfacing your client-side code with your server-side code.
* Json - Preferred format for data interchange.

So, a single file allows us to define the structure of the windows (HTML+CSS), allows us to talk to the database (PHP) and allows us dynamic interactions on the User's machine (javascript).

Furthermore, two OS classes exist:
* A javascript OS class that wraps all of the operating system functions, like, creating a new window, logging on/off, listing a User's applications, managing the workspace, garbage collecting when a Window is closed, etc;
* ...and a PHP OS Class, that offers various help functions, like DataBase access, accessing a User's private data (in Mercury private data is valuable, and there will be filters so that the application cannot access your private data without clearance), management of Files (delete, move, rename), etc, etc, etc...

By the way, if you haven't figured it out by now, let me explain that, when you click over an Application in your App List, the system fetches everything related to that application via Ajax. This means that when you open the Mercury window, there is literally no applications present, and whatever the User requests, is fetched from the Server in a dynamic fashion.

Each application is "rendered on demand" via an Ajax engine, that fetches the application data from the Server, parses it, and then displays it on your Browser.

Mercury also has the concept of "processes". These are pieces of code that run on Mercury's operating system, mostly client-side (javascript therefore) but have no attached window. As an example of two processes, we have:
* p_Clock - Renders/Updates the system Clock
* p_UserActive - This process ensures the User has been active using Mercury for the past X minutes. If the User is absent, depending on it's configured Settings, the User may be logged out, or the screen saver might be activated. This ensures no one has access to your work area if you've gone out to lunch and forgot to log off.

There are also Server-Side Processes. These are attached to a CRON Wizard, and self-schedule at specific intervals to perform maintenance tasks. They are of course PHP-based.

I want as much abstraction, when writing a new Application, as possible. I want the programmer to have a really easy time coding in Mercury, and leting the OS worry about the mundane stuff, like, the Ajax engine, basic window interactions, etc. The programmer will have a bunch of User-Interface controls he can almost literally drag and drop onto the code that will make his application more fluid and atractive.

I'm also designing a module that will allow an application to be localized, by querying the browser's prefered language. In other words, if a User has set its browser to prefer French, and if an Application has a French localization table, then when the User calls up the Application, it will be instantly rendered in the User's prefered language, French.

The User will also be able to set his prefered language and other settings in Mercury's Config Panel. Everything, from prefered Date format, decimal symbol (comma or dot?), prefered Units (grams, pounds, meters, miles, inches, etc...).

Once those are set, the system will have enough intelligence to auto-translate text tags in forums and articles. If someone writes a cooking recipe in European units (grams, liters), the system will auto-convert the units to your preferred settings.

If you run the Treadmill App, to track your treadmill training sessions, and you're European, it will display the Units as Km/h and Kg. If you've set your preferences to Imperial, then you'll see miles/h and lbs.

If you open a diet forum and someone has written "I currently weight 110kg but this week I've ran 8km!", and your preferences are US/Imperial, what you'll actually read will be: "I currently weight 242lbs but this week I've ran 5miles!".

Much of all of this is already in a very, very advanced stage of completeness.

@Sneftel: Thanks for the tips, I'll really have to look into Google Gadgets and other similar pre-made applications. I'll try to add some sort of OpenID or LastPass to the system. People are really getting tired of so many passwords they have to juggle in their mind.

@marc40000: See above for your response. There will eventually be an open API yes, but that will also require a sandbox server. Programmers develop their apps there, and only after they've matured and are stable, they go through an approval procedure. This approval procedure isn't some form of Draconian control set up by me, no, not at all, it is all about the User and his privacy, therefore I must ensure that the Application's code obeys the API, accesses only the data it should access, and doesn't "leak" data.

In Mercury, quite unlike the trend in various current social sites, every data you create or resource you upload is Private, and can only/will only be shared after you specifically instruct Mercury to do so.

@rip-off: I'll do a video later this week if the time allows it, detailing the creation of a "DailyWeight" application, to track a User's weight throughout time, and have the ability to seamlessly create a graph chart showing Weight variations across time, using pChart, that has already been integrated into the PHP OS Class, and so with a few basic calls, you can have your graph dynamically generated, and then delivered to you via Ajax.

If you're thinking this all sounds really complex, the low amount of code required to achieve it will most assuredly impress you.

Please keep the feedback coming!
0

Share this post


Link to post
Share on other sites
Well done, but such web desktops are available now for quite some time, I have tried out some of them but could never get used to them, and there is always the problem that for security reasons I cannot use them for my job and not even for some personal stuff. Also when I'm sitting in front of a real desktop, I don't see any reason to use one imitated in a browser. Nothing stops me from opening every app into another browser window (or something like Mozilla Prism).
0

Share this post


Link to post
Share on other sites
@Kambiz:
* I've seen a few Web Desktops, and to me they all fail do to it correctly, for many reasons, but I'll list a few:
- Trying to support too many Browsers: why it is bad? Because simulating windows, doing drag'n'drop and all of the stuff you see in my video requires some nifty tricks to make it work, and the more you try to make it work with older browsers, the more convoluted it gets. And if you go down that road, the code just gets fugly. So no IE6 please.
- Not supporting enough Browsers. Really no reason why they can't support Opera, Safari and Chrome. The Web isn't just IE8 and Firefox.
- Trying too much to be a specific OS. Oh my, what's with the whole XP theme there? I don't want to run XP inside my browser, surprise me! Make it visually interesting, but don't just imitate another OS' complete visual.
- Trying too much to be just an OS. An OS environment is interesting, BUT you're working on a browser, so leverage that your advantage, Don't make it a boring environment just because your windows XP is boring.
- Just being a "Window Management System". An OS doesn't just manage your windows, no, it consists of many function calls to make various tasks easy and trivial. I don't want to code a sound manager myself just because I want some sound in my application, nor do I want to import extra javascript code to do this or that. Imagine if every application did that. Every time you open up an application it loads all your code, imagine if each app had its own huge baggage of code. No, the OS provides a standardized way of doing a *lot* of this stuff, so that neither your app, nor you, have to recode the wheel.
- Trying to do the impossible. Listen, some stuff is just not possible. Flash and other objects love disobeying z-ordering. This messes up your windows and your experience, because if window A contains flash, and then you focus on window B, and window B comes to the front, it's horrible if you can still the see the flash on window A, just because it isn't obeying z-ordering. This also happens with O3D and DivX. For now I just let it happen, but I'm going to add functionality to Mercury, so that whenever you have a window open that does not obey z-ordering the OS can manage it differently. Another pet peeve is iFrames. Try it in those web desktops. Open an iFrame of Google.com, and it will just "crash", because Google.com's code just takes over. So don't use iFrames. Don't be too clever for your own good.

So.... that's my view on that.

@evolutional: I had to google NaCl, do you mean this? Very very interesting, but it kind of falls into that "area", where you're just trying to push a camel through the eye of a needle.

I'm much more of a proponent for "Solid javascript", a new Web Language that would allow binary interaction between the server and client, is client-side compiled and saved, and has a client sandbox to save files and serve as a cache. I know that there are tools here and there that more or less do this, but you really want something integrated, where the new tech can talk to the old tech.

Another pet peeve is just the open aspect of javascript code. It's all text based, and it travels in text form, and so it's very open to be disassembled, studied, and then exploited. With some sort of code protection, perhaps more programmers would feel attracted to the browser.

There is a marked difference between the code being trustworthy (meaning, it doesn't mess up your machine), and it being completely open.
0

Share this post


Link to post
Share on other sites
Holy Cow! This is so cool! Now i'm sorry if i don't have anything smarter to say but can this be used(in the future) to test new technologies my old video card does not support? Like for instance play with nvidia optix? I think this would be rather cool!

EDIT:

Also it would be really neat to log into a group into the OS and share your processing power with other friends for specific tasks, like ray tracing or rendering.
0

Share this post


Link to post
Share on other sites
If I had written that, I'd use it as a portfolio piece accompanying a resume. Even though the big companies probably already have such a system in development, it would demonstrate that you have serious skills at web development.
0

Share this post


Link to post
Share on other sites
Quote:
Original post by ID Merlin
If I had written that, I'd use it as a portfolio piece accompanying a resume. Even though the big companies probably already have such a system in development, it would demonstrate that you have serious skills at web development.

Already done! Check the links on the YouTube videos, they link to a page with a small portfolio and my Resume.

@Deliverance: You do realize this is running in your browser, right? It runs with the same power your browser allows it to have, in other words, as smoothly as the javascript implementation of whatever browser you're using allows it.

There is no sharing of "processing power"... I don't even know how that would work... you could in theory code some stuff in javascript, have the browser chew on it, and upload any results to a central server, but that is like trying to do a screwdriver's job with a hammer...
0

Share this post


Link to post
Share on other sites
I know it's not exactly what you've done, but if that were a web development framework (or, addition to whatever you used), it would be immensely useful to Web 2.0 developers.

Also, good luck with the job hunt. You'd be the first person I interviewed, if my company were in Portugal and looking for a developer.
0

Share this post


Link to post
Share on other sites
Looks well executed, so kudos, but I just don't understand why. What's the purpose? Between cloud computing, virtual dedicated servers, and virtual network computing, I can't think of a single need such a thing would fill.
0

Share this post


Link to post
Share on other sites
Quote:
Original post by revomedia
Looks well executed, so kudos, but I just don't understand why. What's the purpose? Between cloud computing, virtual dedicated servers, and virtual network computing, I can't think of a single need such a thing would fill.


I see your point. In fact, I've been getting that a lot. I guess I fail at describing Mercury's strong points.

I'll try with a few examples if possible.

Imagine having a place, online, that you can access wherever you are. Imagine it using a simple but powerful User Interface. You can "install" whatever applications you want into your area. Do you exercise a lot? On the Wii? There is an app to track your progress, and share it online with your friends. TreadMill? There is another app that also allows you to compete with your friends, relatives, and even strangers, and it will map your progress and give you suggestions on how to better improve your times.

Want to share your pictures? Never been easier. Want to map out restaurants that you love? Or review restaurants online? There will be apps for all that.

Want to create a "journal of you", divided into whatever sections you want? Sure thing! I dislike the current trends, Tweeter, blogs, because I, as a person, have many interests. I can write about programming, photography, astronomy, family life, etc, and each person can read whatever section of the newspaper of "me" they want.

My family couldn't care less about my programming exploits, and my fellows programmers couldn't care less about that new restaurant I'm going to visit this next weekend, so things get neatly organized.

This online environment, where you can do anything there is an App for, and insta-share it with your social and work circles, is what I think makes Mercury unique. Unlike other sites, it doesn't limit itself to a single subject.

I hope this time I was able to better describe the vision I have for this Project.
0

Share this post


Link to post
Share on other sites
Prozak, Your app tries to store the entire internet inside of it.
You have browser then you use any site to access its features.

Docs? - Google Docs would do.
Social experience- facebook.

Why sould i need a window manager inside my browser?
You made a lot of work, but it's just exercise. You need to be really different from others OS-like environments inside a browser.

And other piont: there are a lot of allready existing apps that users own. They can't run in browser.
0

Share this post


Link to post
Share on other sites
Quote:
Original post by Prozak
Vision...


First I want to give you kudos for what looks like a really, really cool technical feat. What I see in the video is very nice and looks pretty. I couldn't do that.

I do have to say though that I'm also not really on board with the whole "Internet OS" thing. I would agree that it's a really great concept and you describe it very well. The thing is that your vision has already been realized; It's your web browser. Every single one of the things you mentioned is already something you can do with your web browser. Sure, you have to go to a different web site and probably sign in, but that's a minor inconvenience, especially since most people choose the "remember for next time" option when signing in, or ask the site to leave them logged in. But even after all of that, there will eventually be a federated sign-in/authentication service that will unify the logins for most popular sites. I think that is an eventual certainty. And all the apps are is web sites. Delicious keeps track of those for me, basically becoming my "Start menu" as it were. So, with the combination of a capable web browser (Chrome), persistent bookmarks (Delicious), and decent apps (Flickr, Google Docs, Gmail, GDNet, etc.), we already have our Web OS.
0

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0