GUCE & GUCEF (Application infrastructure)

A place to show off your latest screenshots and for people to comment on them. Only start a new thread here if you have some nice images to show off!
Post Reply
User avatar
liberator
Greenskin
Posts: 117
Joined: Mon Jan 24, 2005 2:27 pm
Location: Sillicon Valley, California
Contact:

GUCE & GUCEF (Application infrastructure)

Post by liberator »

Intro
I know most of you usually expect fancy gfx in the Showcase forum but I thought you might be interested to learn that my GUCEF project has released 0.1 Beta.

We all know that Ogre is a rendering engine and as such it does not include things like networking, which is a good thing from a architectural standpoint. It is however nice to have the other common components as well in a framework and on top of that an integrated engine to rapidly develop our applications. This is where my framework and engine projects come in.

My aim is to build an entire product family and not one-shot-products. In order to do that the way I envisioned I require an expansive infrastructure which will scale up trough the different development phases of the GU product family. Hopefully this infrastructure is useful for the rest of the Ogre community as well saving you the effort that I had to put into it.

GUCEF

Galaxy Unlimited Client Engine Framework. It is intended to be a cross-platform framework for RAD purposes. Allowing developers to quickly put together applications using the desired GUCEF modules.

gucefCORE
This is the basic and most central platform module. All other modules (except gucefMT) are build ontop of gucefCORE. It has all the implementations for generic systems like design pattern implementations. It houses the event system you name it. As long as the functionality is a simpel logical building block not specific to any POI/ROI it can most likely be found in the gucefCORE module

gucefMT
This simple module houses treading functionality. Because of widespread problems with threading issues this set of code has been made available separate from the rest of the platform. It is the only GUCEF module that does not link to gucefCORE. It is considdered to be at the same level as gucefCORE but available as a seperate binary for practical purposes.

gucefIMAGE
This module houses image manipulation and encode/decode facilities. It is meant to grow into a fully extensible image manipulation suite.

gucefINPUT
This module houses input handling facilities for the keyboard, mouse and variable axis/value input devices. It allows you to handle input devices in a O/S independent manner.

gucefCOMCORE
This module provides basic communication facilities. Basic meaning TCP/IP support and interfaces to computer communication hardware and settings.

gucefCOM
This module provides implementations within the context of networking using standardized protocols such as HTTP, FTP, MySQL etc. This provides any developer with easy to use and officially supported networking capabilities that are 100% compatible with the platform architectural and design requirements. This module is build ontop of gucefCOMCORE functionality.

gucefDRN
This module facilitates RAD networking. DRN stands for Data Replication Network. It is capable of supporting peer-to-peer connections as well as client-server connections. The choice between client-server or peer-to-peer or a hybrid form is no longer made at the networking sub-system layer but at a higher application definition layer allowing your application to adapt its networking capabilities to its runtime needs. The DRN system provides cross-environment per-link notification which can be used for IPC or to build a vast network over the internet, its up to you. Authentication, encryption, version control, ect,.. it is all provided by the DRN system.
Two methods for data exchange are provided. The first is a simple stream concept and the second is data groups. Data groups are a key-value based system where the data is made persistant in a data group.

gucefPATCHER
This module facilitates RAD updating/patching/content distribution. Combined with a GUI frontend this module can best be compared to a tool like Blizzard Entertainment's update tool for World of Warcraft. It's multi phase system allows you to manage a list of patchsets which can be stored in other locations. A patchset contains a list of the content status (names/size/hash etc) and where it can be retrieved by the patch engine.

gucefGUI
Abstraction library that provides a unified facade for GUI backend's. If you build your GUI interaction using these classes you can easely swicth to a different UI backend. This tends to be a relevant feature for open-source development projects given the vast array of operating systems and the ratio of GUI projects that become stagnent or grind to a halt.

gucefMULTIPLAY
This module facilitates RAD development of a multiplayer capability for a game oriented environment. It provides support for server lists, filtering and master servers and eventually a standardized multiplayer bolt-in capability independant of any specific product. It will feature automatic content distribution. This module compared with a GUI front-end can best be compared to Valve's Steam platform (without the encryption).

GUCE

Galaxy Unlimited Client Engine. The GUCE project aims to provide an engine that can be used for multimedia applications. At first mainly targeted at game development. The affiliated GUCEF project is used as the main platform upon which GUCE is build. GUCE ties in Ogre as it's rendering sub-system.

Here is the mandatory screenshot:

Image

It's a rather dull screenshot of the console in the GUCE reference application. Like I said in the intro, my main focus is on the infrastructure at the moment and not on fancy gfx.

guceCORE
This module provides the main engine hub if you will. It ties in the different sub-systems to form an integrated whole which includes Ogre.

guceGUI
This module provides the default GUI facilities that one almost always needs for any sort of engine.

Current status

Both GUCE and GUCEF are now open-source and available under the LGPL licence. They can both be found at sourceforge. These projects and others are hosted over at http://www.VanvelzenSoftware.com (My website).

GUCEF is at version 0.1 Beta
GUCE is at version 0.05 Alpha

You can download the GUCEF 0.1.0.0 Beta source package HERE

Please note that when browsing the code you may encounter a couple shamefull legacy classes which where re-introduced when I recovered part of the code-base from a crashed HD and then merged what I saved with an old backup. Such code is labeled with an @deprecated and will be removed in the near future. So if you see this tag be sure to cover your eyes or you might go blind.

GUCE is only available trough the SourceForge archive at the moment.

Note that the only supported build at the moment is when using VS2005 on MS Windows. Premake support does mean you can generate project files for other compilers but they are not officially supported at this point. More platforms will also be supported in the future as per the GUCEF roadmap.

I will update this section as new releases become available.

Support

If you are so kind as to give the code a review or are brave enough to give it a try then feel free to post your remarks/suggestions on my website's forums: http://www.vanvelzensoftware.com

You can also post here of course but bug reports are preferred on the forums of my website which helps me keep track of everything.

You can find a recruitement topic for my projects on the Ogre forums as well HERE

I hope you find my ramblings and code usefull.
Last edited by liberator on Mon Jul 16, 2007 3:08 pm, edited 1 time in total.
User avatar
Aladrin
Orc
Posts: 465
Joined: Fri Mar 10, 2006 10:22 pm

Post by Aladrin »

Most everyone around here has probably figured out that I -really- want to get into game programming as a hobby, but simply haven't got the time. Your framework seems -really- well thought out, and seem like it'll be perfect. I look forward to spending some time playing with it, since I'll be able to try some of my ideas rather quickly, rather than dealing with all the low-level stuff.

I notice a couple things missing, though... Sound and physics. Do you plan to provide framework elements to integrate any of the popular sound and physics engines? Of particular interest to me are OpenAL and Newton or Physx.
User avatar
liberator
Greenskin
Posts: 117
Joined: Mon Jan 24, 2005 2:27 pm
Location: Sillicon Valley, California
Contact:

Post by liberator »

Sound, Physics and GUI at the GUCEF level will be de dealt with by providing a platform compatible interface but no actual implementation. You will then be able to choose which backend you want to use while still be able to use it in the platform style presented by GUCEF.

The items that are most usefull at this time are the CORE functionality and everything related to networking in some way or another. Be sure to check the roadmap PDF in the archive to get an idea of what will be available when.

Sound and physics weren't that big a priority since they are features you can live without for a while. A multiplayer game without networking capabilities on the other hand is a no-go.

The modules you mentioned can also be used directly in the short term and later when the abstraction layer from GUCEF becomes available they can be ported with relative ease.
User avatar
PolyVox
OGRE Contributor
OGRE Contributor
Posts: 1316
Joined: Tue Nov 21, 2006 11:28 am
Location: Groningen, The Netherlands
x 18
Contact:

Post by PolyVox »

This looks very interesting! Can you say how it compares to other projects such as http://www.yake.org/ and http://www.opengameengine.org/ ?

For the physics stuff it sounds like you have ideas similar to http://ox.slug.louisville.edu/~o0lozi01 ... /Main_Page
User avatar
liberator
Greenskin
Posts: 117
Joined: Mon Jan 24, 2005 2:27 pm
Location: Sillicon Valley, California
Contact:

Post by liberator »

Both Yake and OGE seem to focus on making a game engine while I make it a point to meet my architectural targets above all else. I do not tolerate any context contamination in my software systems and have various methods of providing firewalls. One such firewall is the fact that each Point Of Interest is a seperate module with it's own mandate from which it is not allowed to deviate.

GUCEF started out as a simple game engine years ago but evolved into a platform and it has outgrown its original name. It is meant to be my toolbox for developing my own applications whatever such applications may be.
A game server for example doesn't need rendering but it does need networking and perhaps database interaction so you would use only those modules related to your Region Of Interest. The same applies for any other type of application.

I haven't yet looked into OPAL. If it meets my architectural requirements and most of my design requirements that I would favor cancelling the gucefPHYSICS module in favor of such a library. I that case OPAL would tie in at the GUCE level. GUCEF is not allowed to have any dependencies on anything but the O/S and even that is minimal. But like I said I haven't looked into it yet so I might end up making gucefPHYSICS afterall.

I should also note that those projects focus more on eyecandy while I do not. I want to get all the non-visual infrastructure up and running first. This is not a very popular aproach among developers because you don't have much to show for your work after putting in a lot of effort. This is also the main reason why it tends to be neglected. I have no doubt I can polish the gfx and have lots of fun later but I want to get the serious stuff out of the way first.
Last edited by liberator on Mon Jul 16, 2007 5:07 pm, edited 1 time in total.
User avatar
Chris Jones
Lich
Posts: 1742
Joined: Tue Apr 05, 2005 1:11 pm
Location: Gosport, South England
x 1

Post by Chris Jones »

your project looks good, and quite interresting
I should also note that those projects focus more on eyecandy while I do not. I want to get all the non-visual infrastructure up and running first.
we are doing the same with OGE, one of our demos is just a robot on a black screen for the moment, creating a solid framework is much more important

good luck :wink:
User avatar
liberator
Greenskin
Posts: 117
Joined: Mon Jan 24, 2005 2:27 pm
Location: Sillicon Valley, California
Contact:

Post by liberator »

Chris Jones wrote:creating a solid framework is much more important
Glad to hear someone else say that. Everyone always tends to forget about the 'foreplay' :D
Good luck with your project as well.
User avatar
jacmoe
OGRE Retired Moderator
OGRE Retired Moderator
Posts: 20570
Joined: Thu Jan 22, 2004 10:13 am
Location: Denmark
x 179
Contact:

Post by jacmoe »

I checked out a copy of GUCE and GUCEF on my local hard disk some time ago, and have been following your very interesting project since then! :)

Today I will start looking a bit closer.

I am curious what architectural decisions you have made.

Will ask questions later. :wink:

I am glad that we have another Ogre based framework to choose from.
The best of luck with it - looking forward to following you more! :)
/* Less noise. More signal. */
Ogitor Scenebuilder - powered by Ogre, presented by Qt, fueled by Passion.
OgreAddons - the Ogre code suppository.
User avatar
liberator
Greenskin
Posts: 117
Joined: Mon Jan 24, 2005 2:27 pm
Location: Sillicon Valley, California
Contact:

Re: GUCE & GUCEF (Application infrastructure)

Post by liberator »

After a hiatus of some time due to developing a personal life I'm back at it.

Since this topic was started I moved from The Netherlands to the USA and I'm now engaged to the best woman in the world. Long story short I have found a way to work on GU related projects AND have a personal life :D

Anywayz,...
The reason for this post, is to alert people to the fact that GU related projects are alive again and in active development. Additionally I'd like to note that I posted up a tool I developed as part of the GUCEF codebase to generate CMakeLists.txt files as the first fruit of my revived labor.
I created a separate topic for the tool here:
http://www.ogre3d.org/forums/viewtopic.php?f=1&t=54842
Post Reply