Just made a plugin for myself and thought to share, it’s pretty simple, shows up in “Windows”->”Gdx Setup-App”. It simply downloads libgdx setup application jar and runs it, directly from Overlap2d. So that you can easily create new projects without “leaving overlap2d” hope it might be useful, currently bundled in latest download of overlap2d, will […]
So.. I am trying to start moving toward releasing the new runtime. But it’s pretty hard. And I need your help with ideas.
You see it’s not like one swipe motion and it’s done, here is why:
1) There is this OLD Editor version 0.0.7 that is super old and bad, and there this NEW Editor 0.1.0 That is completley different and re-written, and it’s good, but might have some stupid glitches.
2) Front page features both editors, old one as “stable” new one as “latest build” so I imagine people download them 50%/50%
3) Now there is also old runtime (0.0.9) that is currently latest master on githubs and new runtime (0.1.1) that is not on githubs but is in maven as a snapshot…
4) Old runtime only works with files generated by old editor, and new runtime only works with files generated by new editor.
Now you probably already feel the nightmare that is.
But there is more.
5) Old runtime is a piece of crap. It build an entire game using actors and stage that is made for UI, and so it is super slow and wrong, and limited.
6) But the new runtime is NEW. problem of it being, it’s untested, and even more it lacks some obvious functionality like – putting click listeners on things.
7) Entire documentation on the website is made for old runtime, so that all has to be ditched or upgraded, and then I need to make a one big tutorial for new runtime.
8) There are also some awesome videos, well that one I cannot edit. I should make new ones. probably delete old ones to avoid confusing?
Now my question is. Given this super complex task. How do I switch the old rutnime to new runtime, and avoid people being confused all over the place?
Please help with your wise word!
It’s been a LONG LONG ride. But we finally pushed latest version of overlap2D into the githubs.
Jumping from 0.0.8 directly to 0.1.0 this is a big update. You can call it a complete source rewrite of sorts.
This version is not officially a release so if you are making a game do not use it, because the corresponding runtime is not pushed to maven yet.
At this point my hope is to get as much testing and bugfixing done as possible from our awesome community. And when we feel it’s stable, I mark it as a release and move forward!
Main highlights of this version:
- Complete code rewrite.
- New architecture based on puremvc.
- Editor uses new runtime which is based on Ashley entity framework.
- Ditched Physics Editor, instead added real time mesh editing directly on screen, and physics property box on right panel.
- Support for world units. 1px is no longer 1px. Setup any custom world size for your project.
- Better Zoom-ing
- A lot better undo/redo using command pattern, works like a charm.
- Library Items are now part of a project, not a scene.
Let me know what you guys think, and PLEASE, help us out: http://overlap2d.com/contributing-to-overlap2d-editor/
I was thinking about UI. a lot. On how we do it now, and what can be done better.
As I work on Overlap2D, UI kinda matters for me.
Because it’s a topic worth debating about, I made a blogpost, and also put it up on reddit
to get some opinions on this matter. It’s going to be a long post though, so bring up popcorn.
In particular we are going to talk about how we make UI for video games. Not websites or enterprise software,
but Games. As there is a difference in what game developer needs more frequently compared to others.
And just to clarify, when we say Game UI, we usually mean things like: Main menu, dialogs, buttons, progress bars, scroll bars, inventory tables, hud’s and so on.
There are many ways people approach making UI:
a) Absolute Positioning – The most terrible and obviously unpopular
1) Easy to make, just put things up where you want them to be.
2) Things don’t end up where you didn’t plan, and behavior is very predictable.
1) Not good for when you don’t know the size of your container (Screen or other). Which results in inability to resize without stretching, and to support multiple screen aspect ratios. (terrible for mobile games)
b) Relative Layouts and Tables – current most popular.
This method includes doing most of things with list and tables. That resize to their parent. Aligning things and such.
1) Works great for any aspect ratio or screen or container (big plus)
1) Time consuming – you have to setup an entire layout hierarchy.
2) Unpredictable – while mostly things end up the way they should, in real life it takes hours of tweaking and trying to understand why this thing ended up on top of the other. In short – there is no way to describe to layout “exactly what you want” it usually takes several trial and error iterations, and building up a good intuition. I experienced it. You experienced it. While it seems that most problems come from not
understanding well the UI system, it actually is more deeper then that.
For me the main problem of this system is the – domino effect. So many things are depending on each other, that if you move just one
it all falls apart. Tables changing their row widths depending on content, that changes entire table size, that changes other in table item positions and so on. Yes sometimes you want exactly that. But in MOST cases you don’t. And in my opinion UI system should work well with things that are common, saving up on precious developer time.
I Also noticed so many people using tables, where they are not necessary. The most common one is “the form” case.
You know when you have to make this “form” for user to fill. ask for login and password. First row goes for login, and second for password.
left column for label, and right column for input boxes. We already talk in rows and columns It just so makes perfect sense to
put it up in 2×2 table right? WRONG. Think about it. What you actually try to achieve is to have an imaginary central line,
labels on the left, input boxes on the right. that’s it, no other fancy table self aligning/resizing functionality is required here.
Yet so many of us end up making tables for this simple scenario, suffering the side effects and wasting time.
As a matter of fact, the only case where table is actually really required, is a grid views with dynamic content – see things like inventory and such. In most cases. your UI content is not dynamic. But container size is. So how can we better serve the “most cases”
(While previous was just an observation of current reality, what goes next is completely made up and could be plain stupid. I warned ya :-P):
The alternative should be an approach that takes pros from both previous approaches, and tries to avoid cons. Obviously.
Take some good ideas from “web world”, a bit from absolute positioning, and a bit from layouts.
Here are some core base rules:
1) UI is hierarchical, it has containers that have containers inside, then they finally have items.
2) Sizes of items (including container items) is either based on their parent container size (percents), or is fixed.
5) Positions can be magnetized directly to any side of container
6) Positions can be aligned relative to container
7) Positions can be also offset from their current position by fixed size.
That’s all. This should be enough to visually describe almost any UI situation. Having things positioned in predictable manner,
While still keeping the rubber logic for different container sizes.
The following rules can be made into so called “mutators” that are set to an item, and apply to it in a set order on every iteration.
(example: width 50%, magnet to horizontal center with right edge, offset left by 10 pixels)
With this method. You can make up very responsive widgets like progress bars and buttons.
While keeping practical process similar to absolute positioning. As in: you will be just drag and dropping things. It will result
in “mutator list” that apply to items, and make them be where they have to be, no matter the container size.
Based on this it is possible to make a data structure to save. and a editing environment to easily build.
Let me know what you guys think in the comments. I am trying to figure out if this all makes sense or not, and would love to actively participate in discussion :)
Thanks for reading till the end. Means you care.
Time for a small update on what is going on right now, and what is coming up next very soon.
We’ve been hard working on things we thought are mandatory before we move any forward, so here is the list of things we are nearing the completion and that are going to be pushed soon.
Total Re-factoring in favor of MVC pattern
Yes, there is a branch somewhere in githubs, And what we did, is fully re-factored the hell out of overlap2d in favor of model view controller system. And it works so much better now. It will make future code developments much easier, and I regret not choosing this path at the beginning when we were just starting, but it is never late. Things are better structured, and ready for big features. We plan to be done with this in a week, and I am a bit resistant to merge existing pull requests you guys will do till then, because it will create pretty much unsolvable code conflicts at this moment.
Btw, big thanks goes to @saqsun for making it all happen.
UI facelift and switching the UI to widgets
When we started first it was a cool idea to use overlap2d itself to create it’s own UI and toolbars. But we are realizing how in game ui and software ui is very different in it’s core. With overlap2d future UI systems we want to choose a very different unique path that will in my opinion soon become the better way of doing it for games.
Meanwhile for software UI, I think layout system is the best way to go, so we will be switching (and are already done switching in the mvc branch) o2d outer shell and toolbars to classic libgdx layout.
Recently we found this: https://github.com/kotcrab/VisEditor/wiki/VisUI It’s a library built on top of libGDX widgets system, and is amazing. (It is created by @kotcrab – very talented guy, he also has an editor for it, so check it out, it’s pretty neat)
And we thought it is great to use this for our toolbars and such.
With having such a flexible outer shell, we are also checking entire look and feel to more professional one, so thing is going to look good. And for me, it is very important when things look good. It creates the right working environment for this who will use it.
New runtime with entity framework
Yes, we are going to get a brand new runtime soon. The one that is build not only on top of libGDX but also on Ashley. So this in favor of entity frameworks – rise your hands! :) Plus it will be a lot better runtime in many sense, because we learned a lot from previous one. For some time we are going to keep both runtimes, old and new, to make sure you guys have a choice, and don’t have “transition” issues. The ashley runtime is not yet ready, but @gevorg-kopalyan is working on it, and I’ve seen it run, and it was awesome!
Where are we standing now?
All of the above is almost done, and is more in testing finalizing stage. So the wait is not going to be long. And we are going to jump in version numbers a bit, for this occasion when things are done.
So as you can see, because so much is going on I am a little bit passive on fixing existing bugs from issue tracker. But, we’ll get back to it.
Thoughts? Please do share!
So yeah, that are the news for today, after intense re-factoring, we are finally ready to give Overlap2D sources to our fantastic community!
Github URL: https://github.com/UnderwaterApps/overlap2d
From now on, you will be able to fix or add anything and for everyone.
We are going to see tons of new features in near time, starting from bug proof editor with performance improvements and finishing with crazy addons like terrain editor, custom shaders, polygons, advanced asset manager and much more. With so much going on, you may be asking yourself – how can I help?
And seriously, we really need your help.
So, here are some ideas you can try out if you feel generous:
- Tell your friends about Overlap2D, and that it is open source!
- Follow us on twitter so we can be more vocal: https://twitter.com/Overlap2D (with 6000 people aware of o2d, we have only 282 followers :( )
- Tweet about us with hashtag #overlap2d
- Blog about us, help us write documentation or make text/video tutorials! (And let me know if I can help you out in doing that)
- Report issues in our tracker: https://github.com/UnderwaterApps/overlap2d/issues
- Code some awesomeness and make pull requests: https://github.com/UnderwaterApps/overlap2d (Many of you were interested, so here you go!)
- Up-vote this on reddit to make it a big news:
- Or on hacker news:
We hope this will make editor better, and that in turn will enable you to make amazing 2D games!
Head to github, fork us, explore the code and make some pull requests!
Hi, many of you reported that Ovelrlap2D is not running on your Windows 8 machines, and I was already downloading today the OS, in order to figure this out, but then got email from Joshua McNeil who figured this all out!
So to the point, the problem is, it appears Windows 8 does not have opengl 2.0 and is using opengl 1.1 instead. and well Overlap2D uses libGDX, and requires opengl 2.0 ( I will add a proper error message )
Unfortunately it is not an easy fix for you, it kinda depends on what video card you have, you have to google for driver so it will have opengl2.0 on windows 8.
Here are some links:
Let me know if this helps! And again, thanks to Joshua, for finding this for us!
Is there any game devs attending Game developers conference in San Francisco, who are using/planning to use Overlap2D or are generally just curious about it? I will be here all week, and would love to meet up, help out, and answer any questions, see how Overlap2D can help you in making your game! ping me on azakhary [-at-] underwaterapps.com
Hello there, and welcome to our developer’s blog. This is where we’ll be posting news and notes about Overlap2D game level and UI editor, as well as introducing use cases and projects created with our product. Hope you’ll find useful information here.