I'll reply here but don't hesitate to create a new topic if you have any questions, it'll be easier for other people to find it if they have similar inquiries.
So yes, orx is heavily object-oriented and a lot of effort has been made to make that model both convenient with very little code to write (using extensively the config system) and efficient (batching of updates, etc...)
You're also right about the default display model: rectangle are used for displaying objects, with the optional possibility of applying custom fragment shaders per object.
You also have access to the full underlying API, including low level render/display calls and, even lower level, OpenGL/OpenGL ES, depending on the target platform.
Instead of writing the whole rendering code from scratch amid your update loop, I'd suggest using a regular object (either placed in the world or as a child of the camera, for example) and replace its default rendering.
To do so, you need to listen to the events of type orxEVENT_TYPE_RENDER. For each object, you'll get notified of orxRENDER_EVENT_OBJECT_START. When handling that event you can then issue all your own rendering commands using OpenGL or orxDisplay, depending on your needs and then return orxSTATUS_FAILURE which will notify orx that you do not want the default rendering for this object.
A small caveat: don't forget to backup/push all the OpenGL states you're going to modify and restore/pop them afterwards or all hell is going to break loose.
If you have any troubles, let me know as they aren't many examples around but I know of a few people having done it in the past for either custom UI rendering or special rendering (like a spline-shaped object or tiled background).
It's a thin C++ layer built on top of orx that brings a few interesting features (such as an integrated level editor, C++ class-orx object bindings, convenience wrapper including ScrollObject::OnRender() that makes the whole custom rendering easier to integrate than listening to an event).
Lastly (damn sorry for the spam!) I'd recommend using the svn version of orx and not the precompiled packages available for download as they're getting very very old.
Orx compiles out of the box on all platforms. Simply choose the "embedded dynamic" configurations (debug, release and profile).
Thanks again for this nice library in general, and specifically for the answer.
That's way more input than I can handle at 11:50pm on a weekday I'll do the proper digging tomorrow. Scroll sounds very interesting, as does the access to the low-level API when needed.
I'll start a dedicated thread in the help section if I have any further questions related to this, and I'll try to submit back if I end up having an example worth sharing. I'd really appreciate a quick answer while you're around though When you say OpenGL/OpenGL ES drawing, how do I access the OpenGL functions in ORX, should I just include gl.h? Is there a way to keep this platform independent, or should I suffer the #ifdef's if I want that much freedom? If the answer's going to be much longer than yes/no, please tell me, so I can do this properly in a dedicated thread as soon as possible.
Thanks for the tip about svn, I had to do it anyway, since my stupid anti-virus (McAfee) kept thinking that the pre-compiled orx.exe contained a virus and deleting it. Instead of meddling with it, I've simply compiled from source.
As for the OGL includes I'm afraid you'll have to suffer through #ifdefs for now.
But depending on your needs, if you simply want to generically push vertices+attributes for an object I can probably wrap this on the orxDisplay API itself at some point.
Thanks for the tip about svn, I had to do it anyway, since my stupid anti-virus (McAfee) kept thinking that the pre-compiled orx.exe contained a virus and deleting it. Instead of meddling with it, I've simply compiled from source.
That was the best call on your end, for sure.
I compressed all the exe in the packages aggressively with upx and that triggers alarm for about 40% of the antivirus out there. Last time I do that to save some kb.
I'm afraid you'll have to suffer through #ifdefs for now.
I guess that's OK,
iarwain wrote:
But depending on your needs, if you simply want to generically push vertices+attributes for an object I can probably wrap this on the orxDisplay API itself at some point.
but this would be awesome! I've also browsed the forum a bit, and I can see that it would make a few more people happy too
After days of trying different Game engines I'm ennding up on ORX with my friend Numael.
We certainly will work on common projects while fully motivated for creating mobile games!
Hello!
I decided to join in this great community of awesome game engine. That's what I searched for few years!
Until this moment I used ZenGL game engine. (Writen in pascal, but all my main code I write in Object Pascal (FPC))
Some days ago I decided to find something, that will help me to make game prototypes very fast, and I find ORX. For now, of course, I developing my big project with ZenGL, but next My creation I plan to make with ORX .
Sorry for my bad English, I am from Ukraine, 17 years old. :P
Heh, so... There is my first noob question. About coordinates.
How to change center of coordinatescamera... So. I have A screen with main camera. When i create a object "OBJ1" with pos 0;0 it apears in center of screen. Ok. I need this. I'll create a OBJ2 as a child of OBJ1. It apears in center of OBJ1. But what if I need to place it in top left corner of OBJ1. Yes, I can always write -0.5 ; -0.5 pos, but it is not comfortable for me. So, how I can change a center of coordinates ?
Hey, good to see you asking. Its always better to start a new thread while asking help for a particular thing. Anyway, I am answering it, you have to set Pivot for you graphic object. Where you define your Texture for your object. For your need you have to set it the following way, if you are creating an object named MyObject, then
[MyObject]
Graphic = MyGraphic
[MyGraphic]
Pivot = top | left
Pivot value is default to center, but you can set it to any of bottom,left,right,top or mix of any two, e.g. bottom | left or bottom | right etc.
Been following Orx on the sidelines for the last 1-2 years. Recently started digging into it a bit more. Checked out the repository so I can always build the latest version. Currently going through the tutorials to familiarize myself with the basic usage.
Going to use Orx for some personal one-man projects re: procedural sound (synthesis) and music in games. Orx seems to be well-written and designed. I'm looking forward to playing around with it, and I hope I can get some help here when running into problems.
First of all, thank you for your kind appreciation so far.
The tutorials have been clearly lagging compared to the new features that have been added over the last couple of years. If you have any questions, don't hesitate, I'm sure there'll always be someone here to answer in a timely manner.
As for procedural sound synthesis, that reminds me that I have a WIP project of simple 8bit-oriented synthesizer based on orx that is doing synthesis/FXs in real time modifying packets on the fly when they're sent to OpenAL.
I should probably find the time to write something about that feature one day.
What a lovely little community this is. I've been lurking for a short while and I love how helpful and friendly everyone is here. Haven't had a chance to sink my teeth into orx yet, but I plan to start making games with it very soon.
As we're talking about Z80, I still love the ZX Spectrum keyboard. It has its own "felling" I miss on the current keyboards :-/ Anyway, was beginning with development on ZX Spectrum.
Comments
I'll reply here but don't hesitate to create a new topic if you have any questions, it'll be easier for other people to find it if they have similar inquiries.
So yes, orx is heavily object-oriented and a lot of effort has been made to make that model both convenient with very little code to write (using extensively the config system) and efficient (batching of updates, etc...)
You're also right about the default display model: rectangle are used for displaying objects, with the optional possibility of applying custom fragment shaders per object.
You also have access to the full underlying API, including low level render/display calls and, even lower level, OpenGL/OpenGL ES, depending on the target platform.
Instead of writing the whole rendering code from scratch amid your update loop, I'd suggest using a regular object (either placed in the world or as a child of the camera, for example) and replace its default rendering.
To do so, you need to listen to the events of type orxEVENT_TYPE_RENDER. For each object, you'll get notified of orxRENDER_EVENT_OBJECT_START. When handling that event you can then issue all your own rendering commands using OpenGL or orxDisplay, depending on your needs and then return orxSTATUS_FAILURE which will notify orx that you do not want the default rendering for this object.
A small caveat: don't forget to backup/push all the OpenGL states you're going to modify and restore/pop them afterwards or all hell is going to break loose.
If you have any troubles, let me know as they aren't many examples around but I know of a few people having done it in the past for either custom UI rendering or special rendering (like a spline-shaped object or tiled background).
If you need to do compositing, orx supports it natively and there's a small example here: http://bitbucket.org/iarwain/compositing / http://orx-project.org/wiki/en/orx/tutorials/community/iarwain/compositing
Hope this helps!
It's a thin C++ layer built on top of orx that brings a few interesting features (such as an integrated level editor, C++ class-orx object bindings, convenience wrapper including ScrollObject::OnRender() that makes the whole custom rendering easier to integrate than listening to an event).
You can find more info in the wiki, in a tutorial section written by acksys: http://orx-project.org/wiki/en/orx/tutorials/community/acksys
Orx compiles out of the box on all platforms. Simply choose the "embedded dynamic" configurations (debug, release and profile).
Thanks again for this nice library in general, and specifically for the answer.
That's way more input than I can handle at 11:50pm on a weekday
I'll start a dedicated thread in the help section if I have any further questions related to this, and I'll try to submit back if I end up having an example worth sharing. I'd really appreciate a quick answer while you're around though
Cheers
Thanks for your appreciation of orx!
As for the OGL includes I'm afraid you'll have to suffer through #ifdefs for now.
But depending on your needs, if you simply want to generically push vertices+attributes for an object I can probably wrap this on the orxDisplay API itself at some point.
Have a good night!
That was the best call on your end, for sure.
I compressed all the exe in the packages aggressively with upx and that triggers alarm for about 40% of the antivirus out there. Last time I do that to save some kb.
I guess that's OK,
iarwain wrote:
but this would be awesome! I've also browsed the forum a bit, and I can see that it would make a few more people happy too
Good night!
After days of trying different Game engines I'm ennding up on ORX with my friend Numael.
We certainly will work on common projects while fully motivated for creating mobile games!
Cya
As we've already told Numael don't hesitate if you have any questions.
I decided to join in this great community of awesome game engine. That's what I searched for few years!
Until this moment I used ZenGL game engine. (Writen in pascal, but all my main code I write in Object Pascal (FPC))
Some days ago I decided to find something, that will help me to make game prototypes very fast, and I find ORX. For now, of course, I developing my big project with ZenGL, but next My creation I plan to make with ORX .
Sorry for my bad English, I am from Ukraine, 17 years old. :P
How to change center of coordinatescamera... So. I have A screen with main camera. When i create a object "OBJ1" with pos 0;0 it apears in center of screen. Ok. I need this. I'll create a OBJ2 as a child of OBJ1. It apears in center of OBJ1. But what if I need to place it in top left corner of OBJ1. Yes, I can always write -0.5 ; -0.5 pos, but it is not comfortable for me. So, how I can change a center of coordinates ?
Pivot value is default to center, but you can set it to any of bottom,left,right,top or mix of any two, e.g. bottom | left or bottom | right etc.
Thanks for opening another thread, I'm going to chime in there.
Been following Orx on the sidelines for the last 1-2 years. Recently started digging into it a bit more. Checked out the repository so I can always build the latest version. Currently going through the tutorials to familiarize myself with the basic usage.
Going to use Orx for some personal one-man projects re: procedural sound (synthesis) and music in games. Orx seems to be well-written and designed. I'm looking forward to playing around with it, and I hope I can get some help here when running into problems.
/ LG
First of all, thank you for your kind appreciation so far.
The tutorials have been clearly lagging compared to the new features that have been added over the last couple of years. If you have any questions, don't hesitate, I'm sure there'll always be someone here to answer in a timely manner.
As for procedural sound synthesis, that reminds me that I have a WIP project of simple 8bit-oriented synthesizer based on orx that is doing synthesis/FXs in real time modifying packets on the fly when they're sent to OpenAL.
I should probably find the time to write something about that feature one day.
Cheers!
You're right about the community, it's small albeit very helpful and friendly.
Don't hesitate if you have any questions, valuable info is scattered across the forum, the wiki and the dev list.
Cheers!
And I really liked how you described this community
After looking for a multiplatform game engine for a personal project, I have stopped my choice on Orx for its philosophy.
Welcome again (I should have replied here first! ^^) and don't hesitate if you have any questions.
Fairly new to game dev, but been coding for a few years, more than I care to think about. Hint, started in z80, when it was still bleeding edge ;-)
Expect me to be asking a few questions, but hopefully in time, I'll be able to contribute some answers too :-)
Regards and hopes
Jim
edit: I meant ZX Spectrum +