Java-Gaming.org    
Featured games (79)
games approved by the League of Dukes
Games in Showcase (476)
Games in Android Showcase (106)
games submitted by our members
Games in WIP (533)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
   Home   Help   Search   Login   Register   
  Show Posts
Pages: [1]
1  Java Game APIs & Engines / Android / Math game review request: AppleQuest for Android on: 2011-10-25 23:32:17
Hello,

I'm an indie games developer, my new game
AppleQuest is all about practicing math and having fun while doing it.
I'd be delighted if you would take the time to review it.
The big idea is that instead of dreadful homework, short gamework sessions would achieve similar effect but be fun and draw students to practice more than they "have to".

The prime target platform for the game is Android tablets, we have
ambitious goals and plan to expand to other platforms in the future.

Market link of the game:
https://market.android.com/details?id=com.pandaknows.applequestfull

Full version of the game:
www.panda-knows.com/files/AppleQuest.zip

YouTube Video:
http://www.youtube.com/watch?v=5poES2yJNbI

Thank you for your time!

About the tech: The game is written in Java using the Cosmic Engine (has an OpenGL ES renderer written in Java). The IDE used is Netbeans, with the NBAndroid plug in.  On the desktop side of the project the Java OpenGL bindings are done via JOGL and the OpenAL audio bindings are done via LWJGL (with some additional libraries for ogg file format support).

Note: There is no music yet and the sound effects are placeholders! (made with sfxr)
2  Java Game APIs & Engines / JOGL Development / Re: JOGL shutdown issues on Mac on: 2010-02-08 17:15:10
We are using mtgame and a newer version of project wonderland's avatar animation system.

Could you please link us to the fixes? There are multiple forums Smiley
3  Java Game APIs & Engines / JOGL Development / Re: JOGL shutdown issues on Mac on: 2010-02-06 04:24:40



RenderManager:

    /**
     * This call causes the renderer to cleanly exit.  It cannot
     * be called from a render callback.
     */
    public void quit() {
        renderer.quit();
    }


Renderer:

    void quit() {
        done = true;
        while (!finished) {
            try {
                Thread.sleep(333, 0);
            } catch (InterruptedException e) {
                System.out.println(e);
            }
        }
    }


    public void run() {
        long processTime = -1;
        long frameStartTime = -1;
        long renderTime = -1;
        long totalTime = -1;
        int statCount = 0;
        long updateTime = 0;
        long frameRenderTime = 0;
        long commitTime = 0;
        
                    
        initRenderer();  
        while (!done) {
            // Pause running if flag is set
            while (!running) {
                try {
                    Thread.sleep(333, 0);
                } catch (InterruptedException e) {
                    System.out.println(e);
                }            
            }
            
            // Snapshot the current time
            frameStartTime = System.nanoTime();

            processInternalUpdates();
              
            // Ready to update and render.  
            bufferController.startFrame(jmeRenderer);
            if (bufferController.anyBuffers()) {
                currentScreenBuffer = bufferController.getCurrentOnscreenBuffer();
                if (currentScreenBuffer != null &&
                    currentScreenBuffer.makeCurrent(displaySystem, jmeRenderer)) {
                    /**
                     * Let the processor manager notify processors of any LOD changes
                     */
                    worldManager.getProcessorManager().updateProcessorComponentLODs(currentScreenBuffer.getCameraComponent().getCamera());

                    /*
                     * This block of code handles calling entity processes which are
                     * locked to the renderer - like the current camera.
                     */
                    runProcessorsTriggered();
                    
                    /**
                     * This allows anyone that needs to do some updating in the render
                     * thread be called
                     */
                    processRenderUpdates();

                    /**
                     * Process the RenderComponent LOD's.  Do it here, so any changes
                     * can take effect this frame.
                     */
                    processRenderComponentLODs(currentScreenBuffer.getCameraComponent().getCamera());

                    synchronized (jmeSGLock) {
                        processJMEUpdates(totalTime / 1000000000.0f);
                    }
                    runPhysicsSystems(totalTime / 100000000.0f);

                    updateTime = System.nanoTime();
                    //System.out.println("Update Time: " + (updateTime - frameStartTime)/1000000);
                    // Finally, render the scene
                    bufferController.renderScene(displaySystem, jmeRenderer, this);
                    bufferController.endFrame(jmeRenderer);
                    frameRenderTime = System.nanoTime();
                    //System.out.println("Render Time: " + (frameRenderTime - updateTime)/1000000);
                    currentScreenBuffer.release();
                }
            }
            /*
             * Now we track some times, and process the commit lists
             */
            
            // Snapshot the time it took to render
            renderTime = System.nanoTime() - frameStartTime;
            //Calculate the amount of time left to process commits
            processTime = desiredFrameTime - renderTime;
            
            // Process the commit list

            if (bufferController.anyBuffers()) {
                currentScreenBuffer = bufferController.getCurrentOnscreenBuffer();
                if (currentScreenBuffer != null &&
                    currentScreenBuffer.makeCurrent(displaySystem, jmeRenderer)) {

                    synchronized (pickLock) {
                        processCommitList(processTime);
                        if (processTime < 0) {
                            //System.out.println("NEED TO ADAPT TO NEGATIVE PROCESS TIME");
                        }
                    }
                    currentScreenBuffer.release();
                }
            }

            commitTime = System.nanoTime();

            // Let the processes know that we want to do a frame tick
            renderManager.triggerNewFrame();

            //System.out.println("Max Memory: " + Runtime.getRuntime().maxMemory());
            //System.out.println("Total Memory: " + Runtime.getRuntime().totalMemory());
            //System.out.println("Free Memory: " + Runtime.getRuntime().freeMemory());
          
            // Decide if we need to sleep
            totalTime = System.nanoTime() - frameStartTime;
//                            System.out.println("-----------------------------------------------");
//                System.out.println("Desired FR: " + desiredFrameRate);
//                System.out.println("Update Time: " + (updateTime - frameStartTime)/1000000);
//                System.out.println("Render Time: " + (frameRenderTime - updateTime)/1000000);
//                System.out.println("Commit Time: " + (commitTime - frameRenderTime)/1000000);
//                System.out.println("Total Time: " + totalTime/1000000);
//                System.out.println("Desire Time: " + desiredFrameTime/1000000);
            if (totalTime < desiredFrameTime) {
                // Sleep to hit the frame rate
                try {
                    int sleeptime = (int)(desiredFrameTime - totalTime);
                    int numMillis = sleeptime/1000000;
                    int numNanos = sleeptime - (numMillis*1000000);
                    //System.out.println("Sleeping for " + numMillis + ", " + numNanos);
                    Thread.sleep(numMillis, numNanos);
                } catch (InterruptedException e) {
                    System.out.println(e);
                }
            }

            if (frameRateListener != null) {
                listenerCountdown--;
                if (listenerCountdown == 0) {
                    long currentTime = System.nanoTime();
                    long elapsedTime = currentTime - listenerStarttime;
                    float flTime = elapsedTime/1000000000.0f;
                    float framerate = ((float)frameRateListenerFrequency)/flTime;
                    frameRateListener.currentFramerate(framerate);

                    listenerCountdown = frameRateListenerFrequency;
                    listenerStarttime = currentTime;
                }
            }
        }
        // Clear out some updates
        processInternalUpdates();
        finished = true;
    }

    /**
     * Add a RenderUpdater to the list of objects to update in the render thread.
     */
    void addRenderUpdater(RenderUpdater ru, Object obj, boolean wait) {
        if (finished) {
            return;
        }

        if (wait && Thread.currentThread() == this) {
            ru.update(obj);
        } else {
            RenderUpdaterOp ruop = new RenderUpdaterOp(ru, obj, wait);
            synchronized (renderUpdateList) {
                renderUpdateList.add(ruop);
            }
            if (wait) {
                while (!ruop.done  && !done) {
                    try {
                        Thread.sleep(10);
                    } catch (InterruptedException e) {
                        System.out.println(e);
                    }
                }
            }
        }
    }

4  Java Game APIs & Engines / JOGL Development / Re: JOGL shutdown issues on Mac on: 2010-02-06 04:24:25
Thanks for the help Smiley

mtgame WorldManager:

    public void shutdown() {
        physicsManager.quit();      // we are not using that one
        processorManager.quit();
        renderManager.quit();
    }




ProcessorManager:

    /**
     * The main run loop
     */
    public void run() {
        ProcessorComponent[] runList = null;
        
        initController();
        while (!done) {
            
            // Pause running if flag is set
            while (!running) {
                try {
                    Thread.sleep(333, 0);
                } catch (InterruptedException e) {
                    System.out.println(e);
                }
            }
            
            // Gather the list of processor components to execute
            // This includes any chained processors
            runList = waitForProcessorsTriggered();
            dispatchTasks(runList);
            
            // Now, let the renderer complete the commit phase
            worldManager.runCommitList(runList);
            armProcessors(runList);
        }

        for (int i=0; i<processorThreads.length; i++) {
            processorThreads.quit();
        }
    }

    void quit() {
        done = true;
    }





ProcessorThread:

    synchronized void quit() {
        done = true;
        notify();
    }

    public void run() {
        ProcessorComponent pc = null;
        
        initProcessor();
        while (!done) {            
            // This synchonized method will block until there's something to do.
            pc = getNextProcessorComponent();
            if (pc == null && done) {
                break;
            }
            
            // Now compute this process and all of it's chains.
            try {
                pc.compute(pc.getCurrentTriggerCollection());
            } catch (Exception e) {
                System.out.println("MTGame: Exception Caught in Processor compute: " + e);
                e.printStackTrace();
            }

            pc = pc.getNextInChain();
            while (pc != null) {
                try {
                    pc.compute(pc.getCurrentTriggerCollection());
                } catch (Exception e) {
                    System.out.println("MTGame: Exception Caught in Processor compute: " + e);
                    e.printStackTrace();
                }
                pc = pc.getNextInChain();
            }
        }
    }

synchronized ProcessorComponent getNextProcessorComponent() {
        ProcessorComponent pc = null;
          
        if (queue.isEmpty() && !done) {
            waiting = true;
            processorManager.notifyDone(this);
            while (queue.isEmpty() && !done) {
                try {
                    wait();
                } catch (InterruptedException e) {
                    System.out.println(e);
                }
            }
        }
        if (!done) {
            pc = queue.removeFirst();
        }
        return (pc);
    }


5  Game Development / Game Mechanics / Re: Java port of Bullet Physics Library on: 2010-01-25 17:04:52
Anyone considered wrapping jBullet in a java PAL interface port?
Pages: [1]
 

Add your game by posting it in the WIP section,
or publish it in Showcase.

The first screenshot will be displayed as a thumbnail.

pw (22 views)
2014-07-24 01:59:36

Riven (20 views)
2014-07-23 21:16:32

Riven (17 views)
2014-07-23 21:07:15

Riven (20 views)
2014-07-23 20:56:16

ctomni231 (48 views)
2014-07-18 06:55:21

Zero Volt (44 views)
2014-07-17 23:47:54

danieldean (35 views)
2014-07-17 23:41:23

MustardPeter (38 views)
2014-07-16 23:30:00

Cero (53 views)
2014-07-16 00:42:17

Riven (52 views)
2014-07-14 18:02:53
HotSpot Options
by dleskov
2014-07-08 03:59:08

Java and Game Development Tutorials
by SwordsMiner
2014-06-14 00:58:24

Java and Game Development Tutorials
by SwordsMiner
2014-06-14 00:47:22

How do I start Java Game Development?
by ra4king
2014-05-17 11:13:37

HotSpot Options
by Roquen
2014-05-15 09:59:54

HotSpot Options
by Roquen
2014-05-06 15:03:10

Escape Analysis
by Roquen
2014-04-29 22:16:43

Experimental Toys
by Roquen
2014-04-28 13:24:22
java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!