Page 1 of 18 12311 ... LastLast
Results 1 to 10 of 179

Thread: nxPascal

  1. #1

    nxPascal

    I'm in process of renewing my game engine, started as Next3D here:
    http://www.pascalgamedevelopment.com...hp?5722-Next3D
    Next3D was reserved name even though i don't think it was at 2007. Anyway nxPascal hit no search results.

    nxPascal is a free game engine that tries to remain lightweight and portable. It is compilable under latest Lazarus on possibly all operating systems, and at least Delphi 7. So far this covers:
    - 2D and 3D OpenGL graphics.
    - Demos on most features, for both Lazarus and Delphi.
    - 2D, 3D and much of gaming supporting math.
    - Particle engine.
    - Pathfinding with own rough but fast algorithm.
    - Network class supporting TCP and UDP.
    - Optional sound wrappers for OpenAL and BASS.
    - Class for handling and rendering a user interface with buttons, listboxes etc.

    Basically, they are all building blocks, separate units. You might choose to just want to use part of the features presented here, if you wish to use another graphics engine or something else. nxGL supports custom window creation, so you can do all that different way, but still being able to use even graphics features of this engine.

    Project home: https://github.com/Zaflis/nxpascal

    Old links:
    code.google.com http://code.google.com/p/nxpascal/
    Change log: http://code.google.com/p/nxpascal/source/list
    Downloads: http://code.google.com/p/nxpascal/downloads/list
    Wiki-help: http://code.google.com/p/nxpascal/wiki/Introduction
    Attached Images Attached Images
    Last edited by User137; 13-05-2015 at 06:42 PM.

  2. #2
    PGDCE Developer Carver413's Avatar
    Join Date
    Jun 2010
    Location
    Spokane,WA,Usa
    Posts
    206
    I was wondering what happened to your site and if you had decided to move on to something else. I was considering adapting your gui to a framework I've been working on for a while this would require some big changes do to the design I have in mind.

  3. #3
    I suppose these are in good shape again I updated all the demos again, there is 5 for each lazarus and delphi.
    nx_src.zip http://www.sendspace.com/file/p9odle
    nx_demos.zip http://www.sendspace.com/file/rqualg

    Texture demo should now look like this:

    With most processes down i got that massive 13000 fps with lazarus compiled version. Delphi got to "over 9000" too, lol.

    So i got the render settings wrapped up with new features SubBlend that can be used for very cool dark flames, and front/back face culling (visibility). New 5th demo is about custom window creation, and basically how you can integrate nxPascal with other graphics libs. That is handled by new compiler directive in nxGL.pas

  4. #4
    PGDCE Developer Carver413's Avatar
    Join Date
    Jun 2010
    Location
    Spokane,WA,Usa
    Posts
    206
    Thanks for sharing, I had a little trouble getting the demos to work. first the version of dglOpenGL you are using would not compile with lazarus/linux. I downloaded the newest version and that fixed that problem. second problem required me to add ReadOpenGLCore to the CreateGlWindow code. I only got about 60 - 120 fps guess my gfx card is too wimpy. I think that more demo's would be quite helpful in getting others to make use of your work.

  5. #5
    Have you a compiled demos archive too ?
    Current (and lifetime) project: FAR Colony
    https://www.farcolony.com/

  6. #6
    Have you a compiled demos archive too ?
    Demos are still working (and i wish to add more of them in the future), but i don't include compiled executables in packages. Would you have an idea for additional demo?

    Finally got myself coding again, and the result is new nxSound.pas
    It is using Noeska OpenAL header, for which i'm not sure how to give proper credit to... It is compiling and running fine with Lazarus and Delphi, like other units.

    It is simplified OOP approach, and its autocreating/destroying itself by just adding nxSound in uses list. Like OpenAL, this supports multiple buffers and sources with 3D positional sound. Buffers and sources are separately stored, essentially letting multiple sources use same buffer, the sound file.

    This is a simple example that plays ding sound:
    Code:
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      sound.AddSource('ding', sound.AddWAV('ding.wav'));
      if nxError<>'' then showmessage(nxError);
    end;
    
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      sound.source[0].Play;
    end;
    In other news GL UI is able to drag its windows with mouse...

    I'll update the engine packages and download links if there is interest to.
    Last edited by User137; 26-06-2011 at 09:17 PM.

  7. #7
    Added all file links again, this time i also added compiled demos, they include media files needed to run them. Both Lazarus and Delphi versions for source code.

    Latest addition is framebuffer class of which 1 demo is about. A rotating cube which faces are showing the same screen of rotating cube which faces contain rotating cubes and... lol

    What else.. hmm i forgot to make a demo about nxSound, but you can see brief example in above message, it is at that simple level.

    The future:
    - Researching more on OBJ file format i discovered that it not only supports triangles but loading must also be able to use polygons. This was a setback to my 3D model code which i have to reorganize fundamentally. Something along the lines of TPolyModel and TTriModel would be still for triangles only. For gaming use, vertexarrays etc all must be triangles. Internal code will convert polygon models into triangle models and use normal generation where needed.
    (Knowing that i updated my old 3D editor for being able to load all OBJ models now, just nxEngine itself can't yet.)
    - UIEditor: I still have plans to make the component editing more like designing forms is in Delphi. Meaning you could select many items, drag them or change multiple properties at the time. I'm also not pleased with the layout.
    (- Possibly article of making simple program or game... make you know more about the engine )

    edit: I still don't know how i'd add musics. Looked into OpenAL playing but didn't get anything working. Tips?
    Last edited by User137; 05-08-2011 at 07:02 PM.

  8. #8
    Quote Originally Posted by User137 View Post
    edit: I still don't know how i'd add musics. Looked into OpenAL playing but didn't get anything working. Tips?
    OpenAL was designed to work with raw sound files like WAV. It doesn't have support for music files like MP3 or OGG. We should code the player... Fortunately Ivo Steinmann did this work for us. The project Mundo uses it. There is two units, ogg.pas and vorbis.pas, you can find it at http://gamemundo.svn.sourceforge.net...nk/src/client/

  9. #9

    How to show image with fade-in and fade-out effect?

    Can you tell me how to show fade-in and fade-out effect with nxPascal?

  10. #10
    I just got a weird theory to optimize texture memory... There are times when you just need textures that are not power of 2, for example odd 300x200 image. nxPascal can currently load that as either scaled to nearby size (256x256 in this case) or pixel-perfectly unaltered but fit in 512x256 "frame". However the "frame" will in this case waste alot of unused memory.

    What i came up with (as just idea so far), is that i'd have 2 integer (word) variables per texture: XPart, YPart. The loader would calculate perfect fit for image that is divided in 1, 2 or 4 subtextures. That 300x200 would be divided in 2 parts to make as whole a 320x256 "frame", because the height cannot be split in 2:
    256x256, 64x256

    If i count memory saving for RGBA image:
    300x200 originally as 512x256 "frame" needs 524288 bytes.
    2 subtextures need 262144 + 65536 = 327680 bytes
    which is 62.5% of memory that would normally be reserved.

    Obviously this will need draw functions to adapt to subtextures but it shouldn't be problem. 3D model surface would be unable to use this well, but models should always use the scaling option anyway for repeatability.
    Edit: Actually it is big problem if want to support patterned drawing... I'd propably disable/ignore patterns when this is used.

    Also, i just got BASS musics working with Lazarus so that's what i'll be using. Need to make a class wrapper to it to ease the procedural DLL header unit.
    Last edited by User137; 13-10-2011 at 04:57 PM.

Page 1 of 18 12311 ... 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
  •