Results 1 to 10 of 44

Thread: Linux Game Development and a Qt Developers Rage

Hybrid View

  1. #1
    Join Date
    Jun 2011
    Posts
    267

    Default Linux Game Development and a Qt Developers Rage

    This is in response to http://phoronix.com/forums/showthrea...Book-Pro/page3

    Quote Originally Posted by uid313
    What is that?
    Where can I find more information about it?

    First off I have been a Linux developer for as long as it has publicly existed Gtk "8 years" and Qt "to date" I am only pointing
    this out for when you ask your self is this possible to pull off?

    So what is this LiquidPixel thing!!!! Well its a Software Development Toolkit used to build applications like ..

    Photoshop or Gimp, Illustrator or Inkscape, Premiere, Audacity, Unity 3D,
    AfterEffects or NukeX, Mudbox or Mari, MotionBuilder, Milkshape 3D

    Using Qt.

    I know what your thinking GTFO not possible. Just hold on there and let me explain for a minute....

    The thing is not only is this possible but has been for quite a few years now, the only thing thats blocking us from having the type of
    application I just described is "Politics" and "Compromise" in the Linux community. We could literally end Microsoft, Apple, Oracle,
    Autodesk, The Foundry, Adobe, Unity3D ... In a years time "IF....IF" we would all just work together. But we are not going to and we
    won't do purely to "Politics" and "Compromise".


    The reason this thing is in toolkit form is because it seriously violates the GPL in a big way as a single application.


    The solution was to build it in toolkit form, with each plugin implementing a particular feature, none of which on there own would
    land me in any legal trouble. The application you see below is what you get, other than that you have to download all plugins via
    its embedded bittorrent client, thats setup to look kinda like an app store.

    Consequently I ended up in a "KISS", "Make Small Incremental Improvements/Commit Frequently" and "Do one thing and do it well" type situation.

    The 3D view you see below is code forked from an old Qt MilkeShape 3D clone called "Misfit Model 3D" that was abandoned years and years ago, we got the application to
    compile under Qt 4.8 and then ripped it piece by piece into Plugin form.

    So what you get is a Milkshape 3d plugin that can talk to and interact with every other plugin installed. "Note" We are using Embedded Lua in this Demo"




    Image Editing Filters The first place I started was with GraphicsMagick (MagickCore and Magick++) as it was the easiest to start with,
    combined with what apis I had there I also read the ImageMagick "scripting" page? And was able to figure out what functions I could combine to create
    other cool filters and effects. Naturally I ended up with just about every filter and effect both photoshop and gimp offered out of the box. But in plugin form!! Yaaaa.

    The cool thing is all you have to do is expose whatever library your wanting to implement as a plugin, and then using PythonQt add in the logic or you could just use C++

    Plane Qt Widget Example

    C++ Code
    Code:
        PythonQt::init(PythonQt::RedirectStdOut);
        PythonQtObjectPtr mainModule = PythonQt::self()->getMainModule();
    
        mainModule.addObject("minSatSlider", ui->minSatSlider);
        mainModule.evalFile(":colorPlugin.py");
    Python Code "colorPlugin.py"
    Code:
       minSatSlider.setValue(50)
    I took the Milkeshape 3D clone plugin and started working on adding OpenMesh for working with triangles. Here is what OpenMesh can do for "subdivision"
    ...
    Note: Only OpenMesh standard demos are shown.






    From there I started working on Projection Painting using a makehuman model... Note this is using Ptex and wouldnt for for Games

    Last edited by zester; 05-14-2013 at 10:40 PM.

  2. #2
    Join Date
    Jun 2011
    Posts
    267

    Default

    Lastly In regards to a Game Development Plugin we have "Horde3D, Bullet, Fmod, ..." Note at the time I used Lua for scripting I have to
    move this to Python but the Qt Widget/Plugin it done for the Renderer.

    Here is what the Lua code looked like
    Code:
    -- Create Window Object
    win = Window()
    win:init()
    win:openWindow(800, 600, 8, 8, 8, 8, 24, 0, 0) -- Open Window, Set Max Colors, Alpha, Depth, Stencel 
    win:setWindowTitle("Hydra Example v0.0.1a") -- Set Window Title
    win:clearColor(0.50, 0.0, 0.0, 1.0) -- Set Window RGBA background color
    
    -- Create GraphicsEngine Object
    graphics = GraphicsEngine()
    graphics:init()
    
    graphics:setOption(7, 1)
    graphics:setOption(5, 0)
    graphics:setOption(8, 0)
    graphics:setOption(4, 4)
    graphics:setOption(9, 2048)
    
    forwardPipeRes = graphics:addResource(9, "pipelines/forward.pipeline.xml", 0)
    knightres = graphics:addResource(1, "models/knight/knight.scene.xml", 0)
    logoMatRes = graphics:addResource(4,  "overlays/logo.material.xml", 0) 
    lightMatRes = graphics:addResource(4,  "materials/light.material.xml", 0) 
    envRes = graphics:addResource(1,  "models/platform/platform.scene.xml", 0) 
    skyBoxRes = graphics:addResource(1,  "models/skybox/skybox.scene.xml", 0) 
    
    graphics:loadResourcesFromDisk("../content") 
    
    cam = graphics:addCameraNode(1, "Camera", forwardPipeRes)
    graphics:setNodeTransform( cam, 10, 50, 200, 0, 0, 0, 1, 1, 1 )
    
    env = graphics:addNodes(1, envRes)
    graphics:setNodeTransform(env, 0, 0, 0, 0, 0, 0, 5, 5, 5)
    
    sky = graphics:addNodes(1, skyBoxRes)
    graphics:setNodeTransform(sky, 0, 0, 0, 2, 2, 2, 500, 500, 500)
    graphics:setNodeFlags( sky, 2, true )
    
    knight = graphics:addNodes(1, knightres )
    graphics:setNodeTransform( knight,  0, 0, 40, 0, 0, 0, 1, 1, 1 )
    
    light = graphics:addLightNode(1, "Light1", lightMatRes, "LIGHTING", "SHADOWMAP" )
    graphics:setNodeTransform( light, 0, 100, 50, -30, 0, 0, 10, 10, 10 )
    graphics:setNodeParamF( light, 501, 0, 200 )
    graphics:setNodeParamF( light, 502, 0, 90 )
    graphics:setNodeParamI( light, 505, 3 )
    graphics:setNodeParamF( light, 506, 0, 0.9 )
    graphics:setNodeParamF( light, 507, 0, 0.001 )
    graphics:setNodeParamF( light, 503, 0, 0.9 )
    graphics:setNodeParamF( light, 503, 1, 0.7 )
    graphics:setNodeParamF( light, 503, 2, 0.75 )
    
    graphics:setNodeParamI( cam, 609, 0 );
    graphics:setNodeParamI( cam, 610, 0 );
    graphics:setNodeParamI( cam, 611, 800 );
    graphics:setNodeParamI( cam, 612, 600 );
    graphics:setupCameraView(cam, 45.0, 800 / 600, 0.5, 2048.0);
    graphics:resizePipelineBuffers( forwardPipeRes, 800, 600 );
    
    
    -- Create 3D Sound Object
    sound = Sound()
    sound:init() -- Initalize it
    sound:createSound("../content/sounds/Scoldt-From_My_Guts.mp3") -- Load Music File
    sound:setMode(0) -- Set Mode
    sound:play() -- Play Music
    sound:upDateSystem() -- Update Sound System
    
    -- Create Network Client Object
    networkClient = NetworkClient()
    networkClient:init("testgame","1") -- Initalize it
    networkClient:setAddress("81.168.26.50") -- Set Network Address
    
    -- Start Game Loop
    i = 0
    while i == 0 do
    	win:clear(0) -- Clear Window
    
    	i = win:getKey(257) or win:getWindowParam(0) -- Get ESC and Window Close Button Click
    
    	-- Rendering code goes here --
    	graphics:render( cam )
    	graphics:finalizeFrame()
    	graphics:clearOverlays()
    
    	win:swapBuffers() -- Swap Graphic Buffers
    end
    Here is a screenshot of the above lua script running.


    Here are some screenshots of General Horde3D, Bullet Physics and Terrain Plugins. For those who have never seen Horde3D before




  3. #3
    Join Date
    May 2011
    Posts
    1,450

    Default

    Certainly looks interesting.

    Hit me up if you ever need any help. I've got time on my hands.

    Maybe a demo is in order?

  4. #4
    Join Date
    Jun 2011
    Posts
    267

    Default

    Quote Originally Posted by johnc View Post
    Certainly looks interesting.

    Hit me up if you ever need any help. I've got time on my hands.

    Maybe a demo is in order?
    Sure I just have to clean it up, right now i am have a nameing situation going on ...

    mainModule.addObject("checkbox", ui->checkBox);
    mainModule.addObject("nextButton", ui->nextButton);
    mainModule.addObject("backButton", ui->backButton);
    mainModule.addObject("stackedWidget", ui->stackedWidget);

    etc except 100 times worse lol.

  5. #5
    Join Date
    Jun 2011
    Posts
    267

    Default

    Now another plugin I want to add, this might be above my capabilities but being this thing is designed to eat plugins to add capabilities, even if I get primitives and shaders working someone else might be able to add in a sculpting tool or two or 10. Or some seriously Houdini like particle effects. Anyways ....

    http://pointclouds.org/

    Voxel Sculpting

    These are not dense at all but it show what Point Clouds are.


    Checkout 3DCoat to see what I am talking about
    http://3d-coat.com/


    I wonder if Point Clouds, FFTW, Bullet and some shaders would be a good start for a RealFlow like Plugin?
    Last edited by zester; 05-14-2013 at 10:58 PM.

  6. #6

    Default Where are you hosting your code at?

    What is the website for your liquid pixels?

Posting Permissions

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