Looking at the forum, not much since 2014! Just a lack of interest?
Looking at the forum, not much since 2014! Just a lack of interest?
Yep this part is dead for a certain time. At least it was fun while it lasted
I was very excited by the project and some people worked hard on getting it together but there were large disparities in skill level that were I factor I think - the seasoned engine devs difference in opinions aside, there was so much to do and so much to plan and design before it reached a level where there was something for every skill level to contribute to.
It would of been a tiny handful of people working on an engine for ages - a tiny handful who already had engine project of their own.
So the experienced drifted away onto their already working engine projects - the less experienced drifted away because there wasn't much for them to do other than learn how to make game engines - which is what they were doing anyway.
I think upon reflection the project needed a working and established engine core to build around, some part of that engine developed enough that there were jobs for people to do at any skill level and somebody to maintain a list of tasks that people could pick up according to size and skill.
In effect we needed gamification of the process of creating a game engine.
When the moon hits your eye like a big pizza pie - that's an extinction level impact event.
You see the main idea of PGDCE was not to take an existing engine and then build upon it but to start creating a new engine from start (that also includes engine core) in order to provide from start to end learning experience for everyone involved.
What PGDCE lacked or should I say is still lacking is a proper design documentation which is written in such way that even those without any prior experience in game engine development would be able to understand it.
But that was never made. The closest that we got were just a few text documents suggesting the basic class structure. Wile design document outlining the basic class structure might be enough for experienced game engine developers to start working on a game engine that definitely isn't enough for people who have no prior experience on game engine development to start any work. Why? Because they probably won't be able to visualize relation of these different classes and therefore understand their role in the game engine as a whole.
That is why (if your remember) I suggested that we instead start making a mind graph which will at the beginning outline all planned modules (the idea was for PGDCE to have modular structure) and which could then later be further extended with more detailed information about each specific module and their mutual relations. But for some reason there was no interest in my idea about creating mind graph as part of documentation.
Any way the second reason why people lost interest in the creation of PGDCE is that at the time when we were still in the process of creating documentation the Castle Engine was published. So many people would rather go making new games on existing engine rather than making the engine itself.
Also at the time user masonwheeler offered a chance to help him continue development of his own partially made engine named The TURBU engine instead.
That is a strong point, especially by this day and age where game engine like Unity and Unreal exists.Any way the second reason why people lost interest in the creation of PGDCE is that at the time when we were still in the process of creating documentation the Castle Engine was published. So many people would rather go making new games on existing engine rather than making the engine itself.
Many people doesn't care anymore about what is under the hood.
I don't advocate for these tools, but it is a reality.
Strong point until you find out that those engines does not support features that your require. At that point you realize that adding needed features to such engine can be a verry hard task.
Not to mention that you might be stuck with some bugs that come with those engines.
Engine like Unity may actually have so many more features than we can ever imagine re-creating. On top of that they have Microsoft, Google and others as platform dev partners. Direct support for VR, latest graphics card features and so on. Same project running on Win, Linux, Mac, Android, iPad without code changes... At best the own engine is a thing that helps participants to learn about game engines, but it's like tasking 10 people to build a skyscraper when it comes to engine fitting for modern games.
A while back we released this Unity game https://www.youtube.com/watch?v=_fe2KDt7MYE , which had 1 artist, 1 level designer and 1 other programmer besides me. Physics, animations, graphics with shadows and all were trivial to do compared to how i could even imagine accomplishing on a custom made engine. Even something like making a skeleton explode and bones drop on the ground colliding all over the place. And no, nxPascal i code is nowhere near capable of doing any of those. What i really liked about was the animating that's really powerful. The engine allows you to write your own shaders, but what's even more impressive is the user support of thousands of people whenever you don't know how to do something by yourself. You get answer within minutes in most cases.
That's the point though - full design documentation requires a design that is at least in it's most primitive form - complete. No matter which way you spin it, be it extensive design documentation or a solid platform on which to build - experienced engine devs are still doing a lot of work for quite some time before anybody that doesn't yet have the experience - can start.
Take the imaginary Jane - Jane loves making games and wants to learn how to create a modern 3D engine so she can realise her dream of a game where you play a Amish assassin taking out scientists at CERN.
Jane has created 2D games/demos and has also started to play around with some OpenGL examples and has started to get a handle on 3D projections and piping data to the graphics card.
With all the will in the world, Jane can't yet sit down and write a shader/material sorting rendering pipeline - she doesn't know enough including why sorting by material is a good idea.
She could sit down and start writing an object orientated scene graph and it would work eventually - however her work wouldn't anticipate the hundreds of quirks and uses that the scene-graph must contend with then lots of people start creating new node/entity types that don't run into issues on their own - then one day it's discovered that feature X needs a different approach to handling the scene graph and BOOM all the dependencies and the graph itself have to be refactored.
Emily bleeds in binary and breathes in triangle strips - she could come along and create a scene graph design that anticipates most of it's usage patterns and major refactoring isn't required.
Emily would have to teach Jane an awful lot of stuff before Jane could come up with an informed design.
So does Emily take the months to teach Jane how to do it, holding up everything and everybody that depends on it - or does Emily just write it herself?
Either a base-code, complete design documentation or teaching everybody requires already experienced engine devs - it took me years to know what I know and I'd still be more comfortable consulting other engine devs before I settle on designs.
I think a base-code (it doesn't have to be massive) is the best approach - it ensures a solid design and good practices which will filter down by example to the rest of the engine - anybody that doesn't know about some part that is in the base-code can always learn it and they've got the people that wrote it right there in the team to answer questions - also an existing base-code means that Jane can jump right in and apply what she already knows.
Even in large commercial environments - engines are rarely the product of one or two devs - you have people that specialise in certain things - coders that support artist requirements will be masters with shaders and skinning/animation code, somebody will be a mathematics whizz and they'll be handling more complex things such as BSP processing, optimized culling routines etc
For the project to carry on living - it needs active devs of all levels working on it - 20 devs is great but if only 3 of them can do anything for weeks/months, be it creating design documents, base-code or teaching somebody else how to do those things - then the project is going to fizzle out and die.
With a simple basecode then there's loads of tasks for all skill levels - anybody can choose anything they like - if they want to spend months learning what the experience devs are doing and join them? they can - the source is there, they can ask questions, watch it evolve - but if they just want to contribute and learn *somthing* they can do that too - we need a plugin to load a given model format just as much as we need a scene graph.
When the moon hits your eye like a big pizza pie - that's an extinction level impact event.
I see us two have a different opinion of effective learning process.
I'm guessing you are more oriented toward traditional learning where you are simply told what to do and what it "best" approach to do it.
Well I'm more oriented toward exploratory learning approach where you tell people which approaches doesn't work at all and also show them as many possible approaches that work and let them decide which approach is "best".
You might have noticed that I always write best in double quotes. I do this because in programming there is no best solution that would fit everyone. Best solution actually depends on many things like compatibility with existing code and coding style, current programming level of individual etc.
I'm willing to bet that if us two get into discussion of how base code should look we will both have different ideas for it. Why? Because each of us is probably thinking about different scenarios to use that base code in not to mention that each of us probably have its own preferred coding style.
Only by working together could we design base code that would be most suitable for both mine and yours usage scenarios. Same goes if we want to make this base code to me best suitable for everyone.
That is why I feel we should allow everyone interested (even those with no prior experience of game engine development) to also be part of the base code development even thou they might be just watching it being built.
Whatever happened to the community engine?
The same thing that happens to the community in general plus it was way to ambitious, I should have listened more to the feedback, there was no clear plan in place before we started which resulted in a lot of discussions about what we should and should not include and why, much of which was very technical meaning understanding it was beyond the capabilities of many of those who may have sought to be involved, including me.
The intentions of the project were good, but implementation/management was bad and that's partly down to me.
However, going back to the first point... the same thing that happens to the community in general...
I wrote a huge response to this thread yesterday but ended up feeling it was a very negative rant so I figured I'd ditch it, sleep on it and have a go this morning, unfortunately it's still going to come across as negative.
Take a look at the articles section of the site... the last thing in there was published in 2014 and it was a tutorial I wrote. We have no quick start guides, we've not had an interview in ages and there have been no tutorials. Why?
Because in my view people are unwilling to set aside a small amount of their time to create content, to give back. It's that simple. Unfortunately, some of those people then complain about a lack of content, which really annoys me and it's not just the current users, this has been an on-going problem almost since the start (I had so many chats with Jason about this and over the years he tried many times to kick start things, just as I have, unfortunately we always end up in the same situation - very little or no user created content). If every regular visitor wrote one article a year (two would be better), we'd have bags of content, but I would say 99% of people have NEVER volunteered to do anything (which is why I'm eternally grateful to the moderators who keep things ticking over while I'm not around, you guys deserve a huge round of applause from everyone).
So how does this tie in with the community engine?
My feeling was that if we could produce an engine for the community it would yield many possibilities for content. Like tutorials on the various elements, what they do, how they work, how they can be optimised for specific scenarios, documentation, examples, hell maybe even a competition based around the engine and all of that content would provide a valuable learning resource for those of us who want to learn and understand the advanced techniques required in a modern 3D engine.
Alas, for the reasons above (I think mainly because it was overly ambitious meaning helping was beyond the capabilities of many users, including me, and we didn't have a clear end goal) it died a death. I think 3 people committed anything to the repository and ultimately it was one person who contributed the most.
In reality what we should have done was fixed some basic goals... 2D, OpenGL, support Delphi and FreePascal, target Android, iOS, MacOSX and Windows (and please don't tell me that this isn't possible from a single codebase because it is), including sound, shader support for effects, a basic GUI library, platform specific helpers and a set of tools for creating top down tile maps, side scroll maps and other utilities. Just imagine how much content we could create around that... tutorials on sound formats, shaders, font packing, collision detection, basic physics, the list goes on. And whilst this is going on, the people capable of more could write articles and tutorials about some of the advanced concepts required for a 3D engine so that those of us who need to learn the basics (I for one have no clue what some of the stuff that was talked about in the community engine forum is, what it does, why it's needed etc.).
Do I think we would complete that project? I honestly don't know. I think we could, but people would have to put aside their egos and desire to prove how tech savvy they are and accept that this would be a less than optimal solution because (a) it's likely to be more generic than building for a specific idea and (b) because it will need to be simpler so those of us who aren't so clued up can understand it. But here's the thing... you could always write a tutorial on optimising a particular element, why the optimisation works and when to apply it.... more content!
I'm happy to facilitate anything like this, the community just needs to let me know what you want and I'll get it sorted (as long as it doesn't cost money). For those of you that don't know, I'm no longer a professional software engineer, I am instead a self-employed electrical contractor because my last job destroyed me (suffice to say, when you have two people, both directors of the company, think they are better than you despite not having as much wider industry experience as you, you are likely to be faced with a never ending torrent of negativity around your work, your ideas, the way you do things and eventually it will destroy you). I haven't written anything of note since the end of 2014 because inside I was (and still am to an extent), devoid of the confidence I once had that I could make sensible decisions about the software I am writing, and so last year I took the plunge and got out of an industry I'd been in for nearly 21 years and honestly, it broke my heart.
The upside is I'm my own boss and consequently I have the benefits that come with that, like a lot more freedom and a lot less stress (yes, believe it or not, I find major electrical work is a lot less stressful than writing software). The downside to this decision is that I have practically no money because I'm just starting out and I don't have a steady stream of work yet. Unfortunately the hosting contract for PGD is up for renewal and I've been asking myself what to do about it. With no major projects, no competitions, no regular flow of content (aside from forum activity), I've been contemplating moving the site to my own server to save money. That will mean slower page serve times and the possibility of bandwidth caps.
So I guess my question to the community is this... would you be happy with that? If the answer is yes, then I guess that means we won't be getting any new content... no competitions, tutorials, interviews, quick start guides, community projects. If the answer is no, you're not happy about that possibility, then what are we, the community, going to do about it?
Now, I'm starting to work on a new game... well actually, it's not new, it is a reboot of our 2006 Annual competition entry... there is scope for a huge amount of content in my view, just from my one project, and I've thought about what articles I might write, and I've had several ideas for articles in the time I've not been around much, but I've never followed through and actually written them. Why? Because I think to myself why should I? Why should I give up more of my time to benefit a community where so few people give back by spending a little of their time generating some content? Why should I do anything more than I do already (host it, keep it running, pay for it) when in over 2 years, there have been no volunteers to do anything, practically no substantial content and no donations?
One article a year from each regular visitor and we could have a nice steady stream of new content. You don't have to write it all yourself, you could work with others and if you're worried that what you're saying is wrong, have someone else proof read it, send them example code to make sure it works... you could do an interview with someone in the industry, you could write a tutorial about something, you could write a quick start guide for getting going with a framework, you could write a post-mortem about a project. Hell, you could even just post links to interesting content (like the couple I posted about the render pipeline breakdowns). There are so many possibilities and yet so little content.
Delphi is enjoying a resurgence in popularity and I want this place to be buzzing, I want this place to be the place to go to for advice and information when it comes to making games with Pascal, but I'll be honest, I'm out of ideas on how to achieve that without help. If I spent all my spare time writing content, how much fun would that be for me? I'd never have any time to work on my own projects, I'd have no time to learn new stuff and ultimately I'd run out of things to write about. And then, we'd be back to square one, the content stream would dry up as it has done on so many previous occasions through the history of the site.
So I'm asking you guys... what do you want? What would you like to see here? What kind of events would you like to see PGD run? Do you want a community project to get involved in? If so, what? What sort of tutorials would you like to see? Who would you like to interview if you could? Would you like to have a PGD team enter say Ludum Dare? And most importantly what are you going to do to help make that a reality? If the answer to the last part is nothing, then that sums up the problem and I see no way things will improve, so if you'd answer that, what would make you do something for the community? And if you don't want to share you views, thoughts etc. publicly, PM me. But really, I need to know what you guys want and what it would take for you to give back to the community, because I just don't know what to do about it?