Page 1 of 2 12 LastLast
Results 1 to 10 of 133

Thread: So whatever happened to the whole PGDCE thing?

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Quote Originally Posted by pitfiend View Post
    we decided to drop generics because we planned to bring the engine to developers on older delphi with no generics.
    I see. Personally I wouldn't have bothered with trying to support versions that old, but that's just me. I mean, if you can't afford a newer Delphi version, why wouldn't you just use FPC/Lazarus instead? I'd rather quit programming forever than have to use Delphi 7 in this day and age...

    Quote Originally Posted by turrican View Post
    You are wrong... Today is still usable and stable. But need developers to mantain it! I think we need to focus on this framework because is simple and very strong.
    It's an abandoned project (the developer seems to have just vanished) built ENTIRELY around outdated OpenGL functionality. I don't doubt you get 60 FPS in what are probably relatively simple 2D sprite games, but that's just your CPU brute-forcing the immediate-mode rendering. If you tried to scale ZenGL up to anything relatively complex you would hit a brick wall, trust me.
    Last edited by Akira13; 09-06-2017 at 04:41 AM.

  2. #2
    Quote Originally Posted by Akira13 View Post
    It's an abandoned project (the developer seems to have just vanished) built ENTIRELY around outdated OpenGL functionality. I don't doubt you get 60 FPS in what are probably relatively simple 2D sprite games, but that's just your CPU brute-forcing the immediate-mode rendering. If you tried to scale ZenGL up to anything relatively complex you would hit a brick wall, trust me.
    Yes, simple 2D games are my focus now. No CPU usage at all (2%) with more than 800 sprites at screen. What modern framework do you recommend me to have the same functionity?

  3. #3
    Quote Originally Posted by Akira13 View Post
    It's an abandoned project (the developer seems to have just vanished) built ENTIRELY around outdated OpenGL functionality. I don't doubt you get 60 FPS in what are probably relatively simple 2D sprite games, but that's just your CPU brute-forcing the immediate-mode rendering. If you tried to scale ZenGL up to anything relatively complex you would hit a brick wall, trust me.
    With ZenGL you can render >10 000 animated sprites with transformations on 10y old hardware without any problems, it uses sprite batching etc. If there is any bottleneck so it's management or structure of game objects and their dynamics adding and removing - so rather Pascal language performance problems. Also internal ZenGL gameloop have some gaps in performance and it does a lot.
    Last edited by JC_; 09-06-2017 at 03:27 PM.

  4. #4
    PGD Community Manager AthenaOfDelphi's Avatar
    Join Date
    Dec 2004
    Location
    South Wales, UK
    Posts
    1,245
    Blog Entries
    2
    Edited:-

    If you are experiencing performance issues with Pascal, I would suggest that the problem is perhaps yours and not the language. Achieving maximum performance takes skill in the form of a thorough understanding of what's slow, what's fast and what's going on when your code is actually executed. It also requires patience. I spent 12 months optimising the server for my first publicly released game and it showed because performance wise it blew away a lot of the competition and included the capability to scale to handle lots of users. I learned a lot doing it and have since applied that learning to more commercial products for some past employers and I have frequently been able to beat 'the best tools for the job' using Delphi.

    Engines are ultimately written for a purpose. I'm in the process of starting a new game development project. Am I going to use an engine that already exists? No, because the ones that are out there won't do what I want in the way I want them to so I'm planning on rolling my own. There is one engine out there that would do what I want, but the chances of me getting my hands on it are nil! If it takes me a couple of years, so be it, if it takes me longer, again so be it. Along the way, I'll learn some neat stuff, have fun and be a better developer at the end of it.

    Now my original post was driven by some of the posts before it are simply rubbishing our attempts to try and create something for the community. Part of the problem with a lot of the frameworks that exist currently is that they are written by one person! Life gets in the way and the project dies a death and then people complain. Well here's a radical idea... you want to know why good shit exists for other languages Because lots of people come together to work on them! It's that simple! One of the key problems this site has experienced through out it's life is this unwillingness of the community to get in there and help out and give back. Now if you've volunteered your services in response to some of my rantings on this subject, thank you it is much appreciated... I know I have one article to review that I've just been a bit busy to get around to (and if you think this is a cop out, screw you, I'm busy trying to build a business from the ground up in an area where I have no commercial contacts or pre-existing customers and it's hard going).

    Maybe, just maybe, if the community had volunteered to help some of these earlier projects they wouldn't have died a death. Maybe, just maybe.

    I keep banging on about this, and I'm going to continue until either everyone that does this leaves or people stop complaining about what exists for this language. The reason it doesn't exist is because people don't give up their time for the benefit of others and those that do are normally called out because 'this is wrong with the engine', 'the documentation sucks', 'there's no examples'. If you're that kind of person, keep your negative comments to yourself about the endeavours of people who have genuinely tried to help this community by trying to bring tools to it that enable the vast majority to do what this site is about... make games.

    My original post was a far more personal attack and I'm sorry about that but the last few posts pushed me over the edge.

    Pascal is an amazing language and simply lacks the community support that exists for other languages. You want more for the language you (we) need to do more, to create more, to share more.
    :: AthenaOfDelphi :: My Blog :: My Software ::

  5. #5
    I honestly have no idea how we got onto this particular tangent about APIs/ZenGL/C++/e.t.c to begin with, but I certainly agree with what AthenaOfDelphi said above. Also, on a more general note, there are two specific things I've noticed in the sources of various dead Pascal game engines I've browsed through that seem to crop up consistently and are likely part of what contributed to the death of the engines in question, that I thought I'd outline here as "things to be avoided" for any future Pascal game engine devs:

    1) They all try to "reinvent the wheel" when there's absolutely no reason for them to do so.

    By this, I mean: they have their own "System" or "Core" or some similar name units where they redefine all of their own keyboard codes/mousebutton codes/e.t.c, and re-implement already-existing basic things like string handling functions, file system handling functions, and so on and so forth. 99% of the time these functions are objectively worse/slower/buggier than the Delphi RTL or FPC RTL equivalent. The overall point being: Design your engine around the existing, established "Object Pascal" RTL core shared by Delphi/FPC. I promise you that your handwritten string routines aren't as good as you think they are. Also, your redefinition of all the keyboard codes is both utterly pointless and incredibly inconvenient. Just use the "VKs"!

    2) They attempt to implement their own image loading/handling code instead of using established image libraries that actually work.

    I cannot count the number of times I've encountered some utterly broken low-level behemoth of an OpenGL texture loading routine, full of pointers getting typecasted to integers and other stupidity that won't even come close to working in anything other than 32-bit applications compiled in ancient products like Delphi 6 or 7. Every time I encounter methods like this I just replace them with the same less-than-twenty-line BGRABitmap-based loading routine I use in every project, and immediately everything works perfectly! The overall point, for this one, being: if you were the sort of developer who wrote useful, high-quality image-related code, you would already know it. The rest of us should just pull the libraries written by those people into our own projects!
    Last edited by Akira13; 11-06-2017 at 12:03 AM.

  6. #6
    PGD Community Manager AthenaOfDelphi's Avatar
    Join Date
    Dec 2004
    Location
    South Wales, UK
    Posts
    1,245
    Blog Entries
    2
    And I absolutely agree with those two points.
    :: AthenaOfDelphi :: My Blog :: My Software ::

  7. #7
    The problem is that you should Write Games, Not Engines (bold intended). Even if a hobby developer(s) have the appropriate software engineering background with an actual work experience (many of developers of hobby engines don't) to be able to come up with a "not so horrible" architectural design eventually, without any well-thought objectives and reasons behind the developed engine in question, it still won't be very useful even for original developer itself.

    So my suggestion would be, just stop making any new engines - not for your own projects, not even as a learning experience. If you want to learn, just make an actual game, maybe a very simple one, you don't need an engine for that: just a TCanvas, TBitmap and its magical Scanline property are the only ones you would need. If you want to learn an API like OpenGL, then just learn it, but without any helpers such as SDL, GLFW or similar, which distract you from learning what's actually happening behind the scenes. Just my two cents...

  8. #8
    PGD Community Manager AthenaOfDelphi's Avatar
    Join Date
    Dec 2004
    Location
    South Wales, UK
    Posts
    1,245
    Blog Entries
    2
    Quote Originally Posted by LP View Post
    The problem is that you should Write Games, Not Engines (bold intended). Even if a hobby developer(s) have the appropriate software engineering background with an actual work experience (many of developers of hobby engines don't) to be able to come up with a "not so horrible" architectural design eventually, without any well-thought objectives and reasons behind the developed engine in question, it still won't be very useful even for original developer itself.

    So my suggestion would be, just stop making any new engines - not for your own projects, not even as a learning experience. If you want to learn, just make an actual game, maybe a very simple one, you don't need an engine for that: just a TCanvas, TBitmap and its magical Scanline property are the only ones you would need. If you want to learn an API like OpenGL, then just learn it, but without any helpers such as SDL, GLFW or similar, which distract you from learning what's actually happening behind the scenes. Just my two cents...
    Performance wise, it's not going to be great using TCanvas and TBitmap etc. And as for learning OpenGL, if you're just starting out, it can be a bit daunting.

    When I first joined this site there were quite a few nice little frameworks that worked out of the box and allowed people to make games easily. Many of these are not developed anymore and as a consequence there is a lack of some basic functionality that allows people to create games with decent graphical performance.

    So whilst I fundamentally agree, writing games is the ultimate goal, for those that have a great idea in terms of gameplay but lack some of the finer technical skills to make it work when it comes to the graphics etc. what can they do? Some people may simply never be able to develop the skills required to build even the basics because it's beyond them, but give them a tool chain that facilitates their ideas and hey presto, they may be able to make a game. There are enough skilled people on this site to be able to do this, I'd like to see a well documented engine focusing on say 2D for now, created and maintained by the community for the community so that those people who simply want to make games without having to focus on the technical aspects of OpenGL etc. can do so.
    :: AthenaOfDelphi :: My Blog :: My Software ::

  9. #9
    PGDCE Developer Carver413's Avatar
    Join Date
    Jun 2010
    Location
    Spokane,WA,Usa
    Posts
    206
    Quote Originally Posted by Akira13 View Post
    I honestly have no idea how we got onto this particular tangent about APIs/ZenGL/C++/e.t.c to begin with, but I certainly agree with what AthenaOfDelphi Also, your redefinition of all the keyboard codes is both utterly pointless and incredibly inconvenient. Just use the "VKs"!
    written by those people into our own projects!
    I like Being able to use a single case statement for keyboard or mouse input but I don't believe that is possible with VKs
    Code:
    case vMessage.Input.CombineButton of
      CK_CONTROL or CK_MOUSE1          :begin
                                        end;
      CK_CONTROL or CK_Alt or CK_MOUSE1:begin
                                        end;
      CK_MOUSE2                        :begin
                                         end;
    end;
    Code:
    case vMessage.Input.CombineKey of
      CK_Alt or CK_S   :begin
                        end;
      CK_Shift or CK_S :begin
                        end;
    end;
    also BGRABitmap is one of those reinvented wheels that you so greatly discourage. and kind of a bulky solution just to get a texture into video memory

  10. #10
    Quote Originally Posted by Carver413 View Post
    I like Being able to use a single case statement for keyboard or mouse input but I don't believe that is possible with VKs
    Code:
    case vMessage.Input.CombineButton of
      CK_CONTROL or CK_MOUSE1          :begin
                                        end;
      CK_CONTROL or CK_Alt or CK_MOUSE1:begin
                                        end;
      CK_MOUSE2                        :begin
                                         end;
    end;
    Code:
    case vMessage.Input.CombineKey of
      CK_Alt or CK_S   :begin
                        end;
      CK_Shift or CK_S :begin
                        end;
    end;
    also BGRABitmap is one of those reinvented wheels that you so greatly discourage. and kind of a bulky solution just to get a texture into video memory
    You can definitely use VKs with case statements. Not sure why you would think otherwise.

    Code:
    procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
    begin
      case Key of
        VK_UP:
          ShowMessage('Up!');
        VK_DOWN:
          ShowMessage('Down!');
        VK_LEFT:
          ShowMessage('Left!');
        VK_RIGHT:
          ShowMessage('Right!');
      end;
    end;
    Also BGRABitmap is not what I would call a "reinvented wheel", nor is it a game engine. It's also written by someone who actually knows what they're doing! I'd much rather use it and be able to handle all major image formats in a single short method than have to write my own thousand-plus line unit with a separate BMP loading routine, PNG loading routine, TGA loading routine, e.t.c.
    Last edited by Akira13; 11-06-2017 at 10:50 PM.

Page 1 of 2 12 LastLast

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •