Just a quick update with a screen cap. Of code.
Actual shots coming this week ;-)
February 12, 2013
February 5, 2013
AGE 3 part 2
Hey again,
I'd like to tell something about the engine, current state and it's purpose of existence.
AGE, as you might know, is acronym of Autumn Graphics Engine and it is written in C++ on top of OpenGL and some other APIs. It is designed to become a close-to-edge engine with all the 'basic' features of current-gen engines - deferred rendering, shader-based pipeline and accompanied with "factory" shaders for HDR, tonemapping, bloom, normal mapping, shadow mapping, sub surface scattering, SSAO and others. I'm aiming on designing the shaders so, that I just enable features for an object and then automatically choose correct one to use. On the otherhand I could also write few super-shaders that have everything packed into them.
At this moment, I'm rewriting it's basic structure for the millionth time. Probably the only thing that hasn't changed is the math functions, such as vector, matrixe and euler classes. I have also the basic pipeline laid out so I can hopefully make quick iterations and extend the engine as freely as I want.
Why do this? Why not just use available engines and extend them or use Unity (or other package) to make games or learn stuff?
Welll... Mainly because I want to know how engines work. I'm like that. Give me a pen and it's in pieces after few seconds. Then I reassemble it. Repeat. Usually when I play games I'm constantly thinking how this and that was achieved. Without having working platform, I haven't been able to recreate them like I want to. Using existing engines or packages will limit what I can do and requires a certain learning curve to use. Luckily I learn things quickly, so I usually make prototypes and brainstorm using Unity.
So I'm making a graphics engine to be used for my personal experiements because I want to learn new things.
Next post will (hopefully) have screenshots too. Of spheres.
Wutata out.
I'd like to tell something about the engine, current state and it's purpose of existence.
AGE, as you might know, is acronym of Autumn Graphics Engine and it is written in C++ on top of OpenGL and some other APIs. It is designed to become a close-to-edge engine with all the 'basic' features of current-gen engines - deferred rendering, shader-based pipeline and accompanied with "factory" shaders for HDR, tonemapping, bloom, normal mapping, shadow mapping, sub surface scattering, SSAO and others. I'm aiming on designing the shaders so, that I just enable features for an object and then automatically choose correct one to use. On the otherhand I could also write few super-shaders that have everything packed into them.
At this moment, I'm rewriting it's basic structure for the millionth time. Probably the only thing that hasn't changed is the math functions, such as vector, matrixe and euler classes. I have also the basic pipeline laid out so I can hopefully make quick iterations and extend the engine as freely as I want.
Why do this? Why not just use available engines and extend them or use Unity (or other package) to make games or learn stuff?
Welll... Mainly because I want to know how engines work. I'm like that. Give me a pen and it's in pieces after few seconds. Then I reassemble it. Repeat. Usually when I play games I'm constantly thinking how this and that was achieved. Without having working platform, I haven't been able to recreate them like I want to. Using existing engines or packages will limit what I can do and requires a certain learning curve to use. Luckily I learn things quickly, so I usually make prototypes and brainstorm using Unity.
So I'm making a graphics engine to be used for my personal experiements because I want to learn new things.
Next post will (hopefully) have screenshots too. Of spheres.
Wutata out.
January 31, 2013
AGE 3
I noticed I hadn't ever experiemented with different rendering methods.. I guess I always thought forward rendering was the only feasible one. Oh well.
For those who don't know what I'm talking about - forward rendering is a pipeline that works per object-basis, while deferred rendering makes all shading in screen space - thus eliminating multiple writes per pixel. This allows more lights and effects to be put on scene, but has othter limitations, like no support for transparent objects and high GPU bandwidth requirement.
For a quick overview about these two, check this link out: Forward or Deferred?
I'm currently working on a bit more dynamic engine - it will have both forward and deferred rendering modes and I will include few kinds of shadow mapping methods. Most likely they'll be PCF , PSSM and PCSS + I'll try to make clear with SSSS - which will come handy with deferred rendering.
Other thing is that I'll be utilizing a lot what I've learned while I was working, so this version has very different structure - mainly to make it faster and even more extendable.
Of course the basic stuff will be there - LUA scripting, support for most mesh files, freeimage, glew, shaders, PAK, blender exporter...
So far I have established the basic structure and set footing for the new rendering pipeline. I'll also try to make the engine work with most GL versions via fallback system, but I'm still working on how to best make it.
I try to minimize copypasta so that I won't be depending on old architechture and can concentrate on the new one.
I'll keep ya posted.
For those who don't know what I'm talking about - forward rendering is a pipeline that works per object-basis, while deferred rendering makes all shading in screen space - thus eliminating multiple writes per pixel. This allows more lights and effects to be put on scene, but has othter limitations, like no support for transparent objects and high GPU bandwidth requirement.
For a quick overview about these two, check this link out: Forward or Deferred?
I'm currently working on a bit more dynamic engine - it will have both forward and deferred rendering modes and I will include few kinds of shadow mapping methods. Most likely they'll be PCF , PSSM and PCSS + I'll try to make clear with SSSS - which will come handy with deferred rendering.
Other thing is that I'll be utilizing a lot what I've learned while I was working, so this version has very different structure - mainly to make it faster and even more extendable.
Of course the basic stuff will be there - LUA scripting, support for most mesh files, freeimage, glew, shaders, PAK, blender exporter...
So far I have established the basic structure and set footing for the new rendering pipeline. I'll also try to make the engine work with most GL versions via fallback system, but I'm still working on how to best make it.
I try to minimize copypasta so that I won't be depending on old architechture and can concentrate on the new one.
I'll keep ya posted.
November 9, 2012
Current engine projects
I was crawling through my files and I noticed something interesting.
I have three projects running, instead of two. All are marked as graphics engines.
AGE - Autumn Graphics Engine, is the main project, it is for desktops and is build upon OpenGL 2.1, but as I have newer GPU now, I'll be rewriting it to use OpenGL 4.3. There will be short/medium break until I show anything interesting (other than simple spheres) because the architechture is very different to 2.1.
AGE for Android (AGE.A) is Java-based OpenGL engine for Android, it currently has _very_ basic abilities. I intend to get it working alongside other projects.
and then I found something awesome.
AGE.DS or AGE for Nintendo DS, which is C++ based OpenGL engine for NDS. There is no 3DS sdk afaik, so I can't divide it for that too. Also there are no cards that support .3ds files. It currently is in it's beginning phases, as I'm trying to understand how to best make use of the capabilities of the system. So far I can only draw to the top screen in 3D (or lower if I wanted to). I intend making AGE.DS my secondary project if I find motivation to keep swapping cards in and out of the handheld.
I will most likely (once I get my hands on one) make an engine for the new OUYA, because it has open API and development is directed at indies.
On related note, Unity is going to add export capability to OUYA, but I think the publishing pipeline won't be integrated, just like with iOS.
I have three projects running, instead of two. All are marked as graphics engines.
AGE - Autumn Graphics Engine, is the main project, it is for desktops and is build upon OpenGL 2.1, but as I have newer GPU now, I'll be rewriting it to use OpenGL 4.3. There will be short/medium break until I show anything interesting (other than simple spheres) because the architechture is very different to 2.1.
AGE for Android (AGE.A) is Java-based OpenGL engine for Android, it currently has _very_ basic abilities. I intend to get it working alongside other projects.
and then I found something awesome.
AGE.DS or AGE for Nintendo DS, which is C++ based OpenGL engine for NDS. There is no 3DS sdk afaik, so I can't divide it for that too. Also there are no cards that support .3ds files. It currently is in it's beginning phases, as I'm trying to understand how to best make use of the capabilities of the system. So far I can only draw to the top screen in 3D (or lower if I wanted to). I intend making AGE.DS my secondary project if I find motivation to keep swapping cards in and out of the handheld.
I will most likely (once I get my hands on one) make an engine for the new OUYA, because it has open API and development is directed at indies.
On related note, Unity is going to add export capability to OUYA, but I think the publishing pipeline won't be integrated, just like with iOS.
November 5, 2012
Back in Action - for a while
I'm back with the engine development for a while.
I'm most likely going to redo most of the engine structure based on what I've learned in the past 2 years I worked at Traplight. This means I'm going to reset the milestones and iterate from the beginning.
For the first few weeks I'm going to just play around with the base structure, so I can get the best out of it without making major changes when I add stuff.
This time I'm going to make Android engine in parallel with the PC engine and my attempt is to be able to make a few step ports of the games I make - using same scripting platform and asset system.
I'll try to keep the blog updated with other stuff too along the engine dev this time.
Over and out.
I'm most likely going to redo most of the engine structure based on what I've learned in the past 2 years I worked at Traplight. This means I'm going to reset the milestones and iterate from the beginning.
For the first few weeks I'm going to just play around with the base structure, so I can get the best out of it without making major changes when I add stuff.
This time I'm going to make Android engine in parallel with the PC engine and my attempt is to be able to make a few step ports of the games I make - using same scripting platform and asset system.
I'll try to keep the blog updated with other stuff too along the engine dev this time.
Over and out.
February 21, 2011
About hiatus
I was supposed to publish a lot of new information regarding the engine long time ago, but something, that I didn't ever could happen, happened.
I'm currently working full-time as a game developer, so I had to put engine on hold until I get my personal stuff together. I work at Traplight Games.
I will, however try to resume as quickly as I can. I'm close finishing new features and planning on doing multiple-engine visual testing.
These engines are currently in an undisclosed list as I'm not sure what I'll be working on when I get there.
As a side note, I'm also back on track with GameStudio A8 Commercial.
That's right, I'm making games for iPhone. I once hated Macs and boycotted iPhones.. Oh well.
I'm currently working full-time as a game developer, so I had to put engine on hold until I get my personal stuff together. I work at Traplight Games.
I will, however try to resume as quickly as I can. I'm close finishing new features and planning on doing multiple-engine visual testing.
These engines are currently in an undisclosed list as I'm not sure what I'll be working on when I get there.
As a side note, I'm also back on track with GameStudio A8 Commercial.
That's right, I'm making games for iPhone. I once hated Macs and boycotted iPhones.. Oh well.
December 16, 2010
Christmas drawing near
I've been working on school projects and AGE for a quite a while now. School projects are nearing completion, where AGE isn't even near.
I will now succumb to Christmas sleep and will return next year.
- - -
I will now succumb to Christmas sleep and will return next year.
- - -
December 2, 2010
Working on Boney Milestone
I've been very busy doing schoolwork and this. I've been working on primarily bones system, how to read them and how to implement them using IK and FK. I also have premature support for particles.
I will later on add shadow mapping and other fancy stuff.
I'm very sorry for the lack of updates. I will try to be more active and post more about the progress, but because of school and personal life I haven't made too much progress, even though AGE has most priority.
I will later on add shadow mapping and other fancy stuff.
I'm very sorry for the lack of updates. I will try to be more active and post more about the progress, but because of school and personal life I haven't made too much progress, even though AGE has most priority.
November 9, 2010
Milestone reached: now in HD(R)
Yes, I know it's a bad pun.
But seriously, I've been sick last week so I couldn't post stuff. I'm done with post processing and decided that I'll work good shaders before posting a shot.
I render to 16-bit floating point scene and then go through high pass, blur pass and tone mapping pass. To those who don't know what that means, it's the basic guideline of how you create HDR scenes. In reality, I'd need .hdr backdrops to make it stand out even more, but I did what I could with zero imagination and mediocore GLSL knowledge.
Currently implemented features:
Bloomy dwarf. The exposure is a bit overkill on purpose. The FPS (ranging between 95 and 120) is low because I don't like optimizing code before it works, and then I forget to do so (also I work on my laptop, but it's reasonably powerful). It's a prototype engine anyways, so I don't put stress in optimizing.
I'm currently working on better way to make use of HDR rendering capabilities.
But seriously, I've been sick last week so I couldn't post stuff. I'm done with post processing and decided that I'll work good shaders before posting a shot.
I render to 16-bit floating point scene and then go through high pass, blur pass and tone mapping pass. To those who don't know what that means, it's the basic guideline of how you create HDR scenes. In reality, I'd need .hdr backdrops to make it stand out even more, but I did what I could with zero imagination and mediocore GLSL knowledge.
Currently implemented features:
- Scenegraph GameObject/Component system
- Configuration files (config.ini)
- Meshes (all possible filetypes you can imagine, huge thanks to Assimp people)
- Cameras
- File management system
- Materials
- Textures
- Scripting (LUA)
- Shaders (GLSL)
- Post-Processing
- OpenGL®
- GLEW
- GLFW
- Assimp
- FreeImage
- SWIG
Bloomy dwarf. The exposure is a bit overkill on purpose. The FPS (ranging between 95 and 120) is low because I don't like optimizing code before it works, and then I forget to do so (also I work on my laptop, but it's reasonably powerful). It's a prototype engine anyways, so I don't put stress in optimizing.
I'm currently working on better way to make use of HDR rendering capabilities.
October 31, 2010
Miles T, One Reached.
Sorry for lack of updates, but I'm not sure if updating about "I'm having terrible time with LUA" is good advertisement. Statistical information is always fun though:
Anyways, scripting, done in LUA, is now fully implemented. All features (mostly) that any user should ever need to touch is enabled. Thanks to SWIG. Now I'll implement shader-based material pipeline and post processing.
Currently implemented features:
I have never before written a single line of LUA until now.
- Cups o' coffee consumed: 26
- Lines of code added: 812 (of which LUA script lines 76)
- Days past deadline: 3
- Nightmares: 0
- Origamis done while thinking what's wrong: 14
- Days spent learning the script language itself: 1
Anyways, scripting, done in LUA, is now fully implemented. All features (mostly) that any user should ever need to touch is enabled. Thanks to SWIG. Now I'll implement shader-based material pipeline and post processing.
Currently implemented features:
- Scenegraph GameObject/Component system
- Configuration files (config.ini)
- Meshes (all possible filetypes you can imagine, huge thanks to Assimp people)
- Cameras
- File management system
- Materials
- Textures
- Scripting (LUA)
- OpenGL®
- GLEW
- GLFW
- Assimp
- FreeImage
- SWIG
I have never before written a single line of LUA until now.
October 21, 2010
Third Milestone
What!? Already!? Nothing much to tell here though.
Anyways, as I mentioned before, the materials are loaded directly when loading the mesh. As I do this engine with minimum amount general purpose stuff, I have set purpose for each texture loaded, I support following types of textures:
Currently implemented features:
Anyways, as I mentioned before, the materials are loaded directly when loading the mesh. As I do this engine with minimum amount general purpose stuff, I have set purpose for each texture loaded, I support following types of textures:
- Diffuse
- Specular
- Ambient
- Normal map
- Lightmap
- Heightmap
Currently implemented features:
- Scenegraph GameObject/Component system
- Configuration files (config.ini)
- Meshes (all possible filetypes you can imagine, huge thanks to Assimp people)
- Cameras
- File management system
- Materials
- Textures
- (Cache, partially.)
- OpenGL®
- GLEW
- GLFW
- Assimp
- FreeImage
I add lighting later. (Models are courtesy of Assimp test models.)
I'm reporting also the fact that I added alpha blending as an extra. Honestly I didn't even remember such thing.
October 20, 2010
Second milestone revisited
Alright, the bug is fixed. Everything is coming along smoothly. Next up is materials. Luckily they are so close in terms of integration to the meshes (they are loaded at the same time as I load up the mesh) that it shouldn't take too long. Which means it'll take me at least 3 weeks because of some stupid bug.
Kidding aside, currently implemented features:
What's thisPokémon model!? (Models in this image are courtesy of Assimp test models)
I'm still awesome and I've used the same maths library almost unchanged for over a year.
Kidding aside, currently implemented features:
- Scenegraph GameObject/Component system
- Configuration files (config.ini)
- Meshes (all possible filetypes you can imagine, huge thanks to Assimp people)
- Cameras
- File management system
- (Cache, partially.)
- OpenGL®
- GLEW
- GLFW
- Assimp
- FreeImage (just some helper functions for now)
What's this
I'm still awesome and I've used the same maths library almost unchanged for over a year.
October 19, 2010
Second milestone
It seems the gods of all sense has forsaken me.
Apparently, loading three 4mb models imported to the engine takes almost a gigabyte of memory. Hmm... I think there's a problem.
Anyways, I've been busy working on this thing, and I'll be sure to get you pictures this weekend. I'll try to concentrate all my willpower not to post anything with spheres.
'G' in AGE means both Game and Graphics. I use Graphics more often just for the sake of clarity.
Apparently, loading three 4mb models imported to the engine takes almost a gigabyte of memory. Hmm... I think there's a problem.
Anyways, I've been busy working on this thing, and I'll be sure to get you pictures this weekend. I'll try to concentrate all my willpower not to post anything with spheres.
'G' in AGE means both Game and Graphics. I use Graphics more often just for the sake of clarity.
October 14, 2010
First milestone reached.
Hey!
As stated before, I'll be updating weekly, if not more often. More exactly, when I get a milestone done. I have my milestones in order from very beginning to the end. Meaning I write the code from scratch, sort of.
Current milestone was to get the Object/Component base up and working, but it also contained filesystem, renderer stuff, modifications to maths library, a lot of new enums and so on. You get the idea. That's done now, and I can finally start adding additively additive additions. Called features.
I'm reporting here also the fact that I'm awesome.
As stated before, I'll be updating weekly, if not more often. More exactly, when I get a milestone done. I have my milestones in order from very beginning to the end. Meaning I write the code from scratch, sort of.
Current milestone was to get the Object/Component base up and working, but it also contained filesystem, renderer stuff, modifications to maths library, a lot of new enums and so on. You get the idea. That's done now, and I can finally start adding additively additive additions. Called features.
I'm reporting here also the fact that I'm awesome.
October 9, 2010
Project AGE officially starting at 11.10.2010
(It's dd.mm.yyyy format, get used to it.)
Official project design and synopsis documents created and have been posted for verification. The AGE is getting huge jump in terms of dedication from now to winter. My aims are high, as I have lots of usable code to jump start it. Unofficially I have stuff done already, but let's not tell that to everyone.
I will report here weekly, if not more often, about the progress, as from now on AGE will be my second to top priority project. The other one is two school projects, but their dedication is limited to my time in school. This one isn't.
As a little hint what the end result will include, here's some API's I'll be using:
Official project design and synopsis documents created and have been posted for verification. The AGE is getting huge jump in terms of dedication from now to winter. My aims are high, as I have lots of usable code to jump start it. Unofficially I have stuff done already, but let's not tell that to everyone.
I will report here weekly, if not more often, about the progress, as from now on AGE will be my second to top priority project. The other one is two school projects, but their dedication is limited to my time in school. This one isn't.
As a little hint what the end result will include, here's some API's I'll be using:
- OpenGL®
- OpenAL
- Bullet
- AssImp
- XInput (Windows-only)
September 23, 2010
News! AGE!
Hey,
AGE's rewrite (of a rewrite of a rewrite) is coming on nicely, I can't say sure when I get it working enough to get you screenshots, but fear not, it's going to be amazing. Or not.
I'm moving on fully on GameObject-Component architecture and I'll use scenegraph as rendering method. This allows me to develop and implement features on the go, without extending or modifying existing classes too much.
AGEngine can be considered multiplatform in all aspects except controllers as XInput is intefiering with it. Linux and Mac versions just don't support PSx/Xbox-type controllers (as GLFW's input system does not understand POV or triggers too well and well, XInput).
AGE's rewrite (of a rewrite of a rewrite) is coming on nicely, I can't say sure when I get it working enough to get you screenshots, but fear not, it's going to be amazing. Or not.
I'm moving on fully on GameObject-Component architecture and I'll use scenegraph as rendering method. This allows me to develop and implement features on the go, without extending or modifying existing classes too much.
AGEngine can be considered multiplatform in all aspects except controllers as XInput is intefiering with it. Linux and Mac versions just don't support PSx/Xbox-type controllers (as GLFW's input system does not understand POV or triggers too well and well, XInput).
August 7, 2010
Back from Kilke
I've been away for two weeks, as I was attending the VI Finnjamboree Kilke. Because of it another delay arose.
Now I'm home again and I can work almost full time with my projects, with biggest priority put on AGE. I hope I can get you guys something in near days!
Now I'm home again and I can work almost full time with my projects, with biggest priority put on AGE. I hope I can get you guys something in near days!
July 20, 2010
UPDATE! OMG.
Hai,
First things first: no screenshots yet nor big updates to engine, except the following:
File formats
----
I'm using .ini configurations file, .py scripting and will also include support to many formats, including Collada (.dae), 3DS Max (.3ds), Wavefront Object (.obj), LightWave (.lwo), TrueSpace (.cob/.scn) and (for 3dgs users) MDL 7 (.mdl) and Heightmaps (.hmp) plus many other ones. I will also support Blender format through custom exporting to models and PAKs (yes, the importer is working).
Graphics
----
I will use a semiprogrammable shader pipeline, which means you can either tap up shading features and materials or you can use custom .frag / .vert files. Please note that using custom files will cause loss of some features. The engine used shaders are named like "bloom.age.frag" "bloom.age.vert", so you can directly modify the native features, this isn't recommended though.
Other
---
I haven't thought about physics or audio yet, but will probably use Bullet and OpenAL for them. Also support for Linux/OS-X is still not quaranteed (you will lose at least support for XInput controllers, though I believe there's a workaround in other OS's.)
Anyways, I will update later with my progress on getting you a picture time.
First things first: no screenshots yet nor big updates to engine, except the following:
File formats
----
I'm using .ini configurations file, .py scripting and will also include support to many formats, including Collada (.dae), 3DS Max (.3ds), Wavefront Object (.obj), LightWave (.lwo), TrueSpace (.cob/.scn) and (for 3dgs users) MDL 7 (.mdl) and Heightmaps (.hmp) plus many other ones. I will also support Blender format through custom exporting to models and PAKs (yes, the importer is working).
Graphics
----
I will use a semiprogrammable shader pipeline, which means you can either tap up shading features and materials or you can use custom .frag / .vert files. Please note that using custom files will cause loss of some features. The engine used shaders are named like "bloom.age.frag" "bloom.age.vert", so you can directly modify the native features, this isn't recommended though.
Other
---
I haven't thought about physics or audio yet, but will probably use Bullet and OpenAL for them. Also support for Linux/OS-X is still not quaranteed (you will lose at least support for XInput controllers, though I believe there's a workaround in other OS's.)
Anyways, I will update later with my progress on getting you a picture time.
June 27, 2010
Delayed, again.
Currently, there are two reasons for no updates lately.
First one is that I'm doing some other stuff (some that give me cash, others don't), which consume my time and dedication away from AGE.
The other one is that I noticed most of the bugs in my engine are caused by old protocode, that is everywhere. I have no other choice than to rewrite most of the code. This gives me also an opportunity to remodel my object and data handling pipeline to fit my todo-needs. On the other hand, it takes time.
Also, irc channel, BAM. #agengine @ irc.FreeNode.net
First one is that I'm doing some other stuff (some that give me cash, others don't), which consume my time and dedication away from AGE.
The other one is that I noticed most of the bugs in my engine are caused by old protocode, that is everywhere. I have no other choice than to rewrite most of the code. This gives me also an opportunity to remodel my object and data handling pipeline to fit my todo-needs. On the other hand, it takes time.
Also, irc channel, BAM. #agengine @ irc.FreeNode.net
June 23, 2010
GRAAH
PAK importer is almost done, just one or two bugs left to solve. Also as midsummer coming around, I probably won't update this weekend.
Damn sorry that I can't post anything cool as of yet.
Damn sorry that I can't post anything cool as of yet.
Subscribe to:
Posts (Atom)


