PDA

View Full Version : Phoenix 2013 - Now with tutorials!



Andreaz
27-10-2013, 07:29 AM
Hello Everyone,

I've spent a lot of time this summer to tidy up the source of Phoenix and also create tutorials and a brand new site. This should mean that my library is more stable then ever and should be a lot easier to get started with. I have also removed all fixed pipeline rendering witch should give even better performance and device compatibility.

The project is also renamed to Phoenix Game Framework as it is more a set of helpful classes with source for making games then a game engine and 2D is also dropped as it is possible to make 3D games as well (even though the focus is still 2D)

I have dropped Delphi 7 support through as I'm, among other things are using operator overloading and record functions for vector math (it makes the code alot easier to read and use). All the editors are written in XE2 but all demos has Lazarus projects available.

Among the new features is a reworked input support, audio engines (OpenAL and BASS, OpenAL might need some more testing through), loading content from zip archives among others.

There is also a brand new sprite engine, its a bit easier to use then the previous one, but still have support for advanced stuff like physics via Box2D and destructable terrains.

Physic sprites
http://phoenixlib.net/wiki/lib/exe/fetch.php?media=screenshots:screenshot03.png

Platformer demo (conversion of a DelphiX demo by Alexander Rosendal):
http://phoenixlib.net/wiki/lib/exe/fetch.php?media=screenshots:platformer.png

The tutorials are available here:

http://phoenixlib.net/wiki/doku.php?id=tutorial:index

And downloads can be found below:

http://phoenixlib.net/wiki/doku.php?id=start&#downloads

The library is released under MPL and is, as ever fully open source.

What is missing is Android support (witch should be fully doable as the input and rendering is done via plugins) as well as a conversion of the full blown gui engine that was available in the previous version.

The library is not fully feature complete, and that is why I'm posting here, if you feel like it download and play around with it, try the tutorials and post me feedback. (Note that the stuff in the Addons folder are purely experimental)

And, as always, many thanks to Cezar Wagenheimer for the invaluable testing and feedback!

drezgames
27-10-2013, 02:50 PM
Nice update bro. Respect!

AirPas
27-10-2013, 04:44 PM
looks pretty nice , whats the minimum system/hardware requirement , because none of the demos works in my laptop (win7-32bit , Ati-X1300), only empty windows .

wagenheimer
27-10-2013, 08:43 PM
I gave a lot of suggestions of Demos and Things Nice to Implement and Andreaz always kindly implemented all of them! =)

Andreaz always helped a lot since the begining, and in all my games (even when I was using other engines) always had tons of code which Andreaz helped me to create and all my game contains a good portions of Phoenix Engine on it!

I'm happy you released these new version of Phoenix, I know it have lot of my suggestions on it,and I recommend to everyone take a look on it there is a lot of nice things on it! =)

Once more, thanks for everything Andreaz, and keep on the awesome work! =)

Andreaz
28-10-2013, 07:59 AM
looks pretty nice , whats the minimum system/hardware requirement , because none of the demos works in my laptop (win7-32bit , Ati-X1300), only empty windows .

It requires OpenGL 2.0 but your card only supports 1.20 (Look for the "GLSL Version: 1.20" below)

http://www.ozone3d.net/gpu/db/index.php?id=23061

I don't feel that this is a unreasonable requirement, that card is quite old, but it would be possible to write a provider targeting OpenGL 1.2 instead.

Andru
28-10-2013, 08:54 AM
It requires OpenGL 2.0 but your card only supports 1.20 (Look for the "GLSL Version: 1.20" below)
GLSL is an OpenGL Shading Language, this is not an OpenGL itself. GLSL was introduced like an extension in OpenGL 1.4, and later available like a core of OpenGL 2.0. ATI x1xxx cards support OpenGL 2.0+

klanpaia
11-02-2014, 07:51 AM
What version of Delphi use with phoenix?
What are supported? Thank u :3

Andreaz
11-02-2014, 03:38 PM
I have only tested it with XE2, but everything above 2010 as well as Freepascal/lazarus should work.

gcarreno
07-07-2014, 10:52 PM
I have only tested it with XE2, but everything above 2010 as well as Freepascal/lazarus should work.

Humm, now for the "...as well as Free Pascal/Lazarus should work."

I'm, in no category, a records with methods knowledgeable fellow, but I'm trying to compile phoenix_2013-10-15 with Ubuntu 14.04 64b, Lazarus 1.2.2 and FCP 2.6.4 and it's tripping a "function header does not match previous declaration..." error on TMatrix3f.Zero, TMatrix3f.Identity, TMatrix4f.Zero, TMatrix4f.Identity, TMatrix4f.Multiply and it stopped there after 5 errors.

So, what is needed to have records withs methods playing nice on FPC?

Many thanks in advance!

Cheers,
Gus

gcarreno
07-07-2014, 11:23 PM
Hey Andreaz,

Looking at the Demos/_Binary folder, there are quite a few .dll files there.

It would be nice to have a section on the documentation about the packages that need to be installed.

OpenGL is the most obvious, but looks like FreeImage, SDL(_image), glfw, libpng and Lua are also some pre requisites for the entirity of the Engine to operate.

I can provide Ubuntu/Debian packages how to, but will have to get over the error I've reported before (BTW, went on Google Code issue tracker and added it, #144).

Any help is greatly thanked, in advance ;-)

Cheers,
Gus

Andreaz
05-08-2014, 07:03 AM
Humm, now for the "...as well as Free Pascal/Lazarus should work."

I'm, in no category, a records with methods knowledgeable fellow, but I'm trying to compile phoenix_2013-10-15 with Ubuntu 14.04 64b, Lazarus 1.2.2 and FCP 2.6.4 and it's tripping a "function header does not match previous declaration..." error on TMatrix3f.Zero, TMatrix3f.Identity, TMatrix4f.Zero, TMatrix4f.Identity, TMatrix4f.Multiply and it stopped there after 5 errors.

So, what is needed to have records withs methods playing nice on FPC?

Many thanks in advance!

Cheers,
Gus

All the demos compiles and runs using Lazarus 1.2.4 with FPC 2.6.4 on my windows machine (although with some warnings), the {$mode delphi} compiler define is quite important though, but that is included in phxConfig.inc.

Is it the demos/tutorials that gives the error or is it a custom application?


Hey Andreaz,

Looking at the Demos/_Binary folder, there are quite a few .dll files there.

It would be nice to have a section on the documentation about the packages that need to be installed.

OpenGL is the most obvious, but looks like FreeImage, SDL(_image), glfw, libpng and Lua are also some pre requisites for the entirity of the Engine to operate.

I can provide Ubuntu/Debian packages how to, but will have to get over the error I've reported before (BTW, went on Google Code issue tracker and added it, #144).

Any help is greatly thanked, in advance ;-)

Cheers,
Gus

All the dll files are all optional, they are included depending on what plugins you're using.

If you add phxGraphics_FreeImage to the uses class FreeImage.dll is used for texture loading, theese are the supported graphics librarys. If you only use phoenix images you don't need any of the following.

phxGraphics_FreeImage - FreeImage.dll
phxGraphics_Vampyre - Vampyre Imaging Lib (In search path)
phxGraphics_SDL - SDL_Image.dll
phxGraphics_DDS - native DDS support (No external requirement)

For the rendering these are the variants:

phxOpenGL_SDL - OpenGL32.dll + SDL.dll
phxOpenGL_GLFW - OpenGL32.dll + GLFW.dll
phxDraw - OpenGL32.dll + VCL

phxDirect3D9_SDL - D3D9 + SDL.dll (Experimental).

You can create your own version of the above by extending the TPHXOpenGL_Renderer class to add a own window framework.

You might also require lua if you use the scripting:

phxScripting - Lua51.dll

gcarreno
06-08-2014, 10:42 PM
All the demos compiles and runs using Lazarus 1.2.4 with FPC 2.6.4 on my windows machine (although with some warnings), the {$mode delphi} compiler define is quite important though, but that is included in phxConfig.inc.

Is it the demos/tutorials that gives the error or is it a custom application?

Because it's in phxTypes.pas, it really doesn't matter, but to be specific, I've tried to compile demo 00_Template and 01_Canvas.
Now, because you mention {$mode delphi} and phxConfig.inc, I went back and made sure my Lazarus was finding phxConfig.inc.
I had no issues with that because, as is, all is fine. Since you have ../../Source on the path, all's good.
So I'm now baffled on how you can compile phxTypes.pas on a windows machine and I'm stuck on a Linux machine.
It really doesn't make sense to me, since the error reported is an interface to implementation mismatch.
I've read somewhere that Delphi and FPC record implementations differ a bit, but this is not the case. You are using the same, or close, versions I'm using and getting awkward different results.



All the dll files are all optional, they are included depending on what plugins you're using. ...

Thank you so much for this, it makes perfect sense now :)
Since I'm on Linux, some don't apply, and the ones that do, I can quickly find the libs.

Andreaz
07-08-2014, 06:05 AM
Because it's in phxTypes.pas, it really doesn't matter, but to be specific, I've tried to compile demo 00_Template and 01_Canvas.
Now, because you mention {$mode delphi} and phxConfig.inc, I went back and made sure my Lazarus was finding phxConfig.inc.
I had no issues with that because, as is, all is fine. Since you have ../../Source on the path, all's good.
So I'm now baffled on how you can compile phxTypes.pas on a windows machine and I'm stuck on a Linux machine.
It really doesn't make sense to me, since the error reported is an interface to implementation mismatch.
I've read somewhere that Delphi and FPC record implementations differ a bit, but this is not the case. You are using the same, or close, versions I'm using and getting awkward different results.


This is strange indeed, i downloaded the version from the homepage just to be shure i hadnt modified it, compiled out of the box. It might have to do with the static directive on the functions, it should not be needed to add it to the implementation but that might be the solution. I will check into it.



Thank you so much for this, it makes perfect sense now :)
Since I'm on Linux, some don't apply, and the ones that do, I can quickly find the libs.

Any time.