Tessellate

Thread in 'Discussion' started by ryanheise, 6 Dec 2008.

  1. ryanheise

    ryanheise Unregistered

    Something like this?

    Feel free to play around with the settings as I would be interested in adding something like this to my website. As you can see, I don't have any option to change the fade counters of already existing pieces, so to get around that, I set the fade counter for the first section to 50 seconds so that these pieces would begin to disappear as you approached section two. Also, I selected the rotation system with floor kicks, added a hold piece and 3 preview pieces, just to help the player a little more.
     
  2. Nice job on this engine. It's pretty nice because it's stable as well as modular.
    I've been looking into writing my own Tetris game in Java. How long did it take you to code this?
     
  3. Muf

    Muf

    Only as stable as the JRE it runs on though... [​IMG]
     
  4. ryanheise

    ryanheise Unregistered

    You can build a basic tetris game in 2 hours, although I probably spent about 1000 hours trying to make it flexible and modular, and especially, to make the emulation for other games very precise.

    If you want your Java game to work cross-platform, you will unfortunately need to be aware of some operating system bugs (or features...). For example:

    - On WINDOWS, there is an unfortunate bug which makes the system clock run faster if you try to use the high resolution timer in certain situations. I have also noticed the system clock slow down on rare occasions. This is something which absolutely must be worked around if you want to measure the player's time for ranking purposes.

    - On the X-Window System (UNIX), the underlying system that generates application-level keyboard events always generates a continuous stream of keyPressed/keyReleased events on autorepeat. This behaviour is different from windows where a keyReleased event is only generated when you finally release the key. If you want to develop your game in a platform independent way, you must be aware of this slight difference in the way keyboard events happen.
     
  5. Muf

    Muf

    Java doesn't set/unset the timer granularity or expose an interface to do so yourself? As far as I know, using timeBeginPeriod() and timeEndPeriod() is the way to deal with high precision timers in Win32.
     
  6. ryanheise

    ryanheise Unregistered

    By default, Java uses a 10ms resolution (for efficiency), and will only switch to a 1ms resolution when your program uses Java's timer API with an interval that is not a multiple of 10. When your program switches into this mode, Java will automatically call timeBeginPeriod() and when it goes out of that mode, it will call timeEndPeriod(). The Windows operating system itself will also automatically switch the resolution to the highest resolution required by any of the currently running applications. When you switch in and out frequently (which may even happen outside of your Java applet's control since it could be triggered by other applications currently running -- timer resolution is a global setting under Windows) this Windows bug will be triggered.

    The solution is to force Java to use the 1ms resolution for the entire duration of the running applet by triggering a long sleep for an even larger duration that is not a multiple of 10. In my game, I do this by executing the Java instruction { Thread.sleep(Integer.MAX_VALUE); } in a background thread when the game is initialised.
     
  7. ryanheise

    ryanheise Unregistered

    Hi peeps,

    Here are the most exciting of the new features that can be found in the latest release:

    • Rewritten to work in Full-Screen Exclusive Mode.
    • Extremely fast input handling (goodbye Java lag!)
    • The loading architecture is completely rewritten to support a Cache. It is as if the game is installed locally, except that new versions will be automatically updated, and you will have the benefit of being connected to the web highscores
    All of these features require you to go to your profile page first, and set the "cache directory" option. There might be some quirks with these new features at first while I'm ironing out the bugs, so please let me know if you notice anything like that.

    Please note that if you use Linux, you must make sure the files in /dev/input have read access. Also, it is best to disable XINERAMA if you have it turned on, otherwise only a fake Full-Screen mode will be used instead of true FSEM.

    As well as this, I made some other changes which, as yet, have not been documented in this thread:

    • Plenty of new garbage patterns added.
    • A quite accurate implementation of the DTET rotation system
    • New gimmick called "vanish clip" which, at the beginning of the level to which it applies, clips the vanish timeouts of all existing blocks in the well.
    DTET looks like a really interesting game, so I plan to add more of its features in the future.

    These will be added to the Tessellate Simulation Settings page when ready.
     
  8. ryanheise

    ryanheise Unregistered

    Fixed.
     
  9. ryanheise

    ryanheise Unregistered

    As mentioned before, I recently developed a new feature to speed up keyboard response time for Java. The new technique should result in speeds that are comparable to native programs like Texmaster.

    I say "should", because I accidentally didn't realise that this new feature was somehow not being switched on for Windows users.

    I believe I have fixed it now, and, assuming you have enabled it (see above), you can press F9 in the game to see if the feature was actually enabled (you should see the word "Direct" displayed).

    Note for LINUX users:

    When this is running on Linux, Tessellate tries (if possible) to directly read files in the /dev filesystem (specifically /dev/input/*) for direct access to the keyboard. However, most distributions do not have the permissions set up to allow this. You can chmod 666 these files but udev will not remeber that after restart. Instead, I recommend adding a rules file to /etc/udev/rules.d with the following rule:

    Code:
    KERNEL=="event[0-9]*", MODE="0666"
     
  10. ryanheise

    ryanheise Unregistered

    New feature: Custom games "bookmarks"

    This feature makes it easy to save your custom games or training tools that you want to use regularly:

    [​IMG]

    There is no limit on the number of custom games that you can add. You can also share games by sending someone a link and letting them add it to their own index.

    Here is the basic idea:

    Step 1. Design your custom game, or just take an existing one from here and modify it to your liking.
    Step 2. Edit the preferences for that game, and set the "Custom game name". This will add the game to your list, as shown above.

    Here is an example of how you can make a "T.A. Death Trainer" mode. First, grab the settings for T.A. Death from here, scroll down to the bottom, and change the lock delay for every step to some large number like 3000. Click "Test Game", then click on "Preferences", and then set the game name to something like "Death Trainer".

    ---------------------------------------------------------------------------------------------------------------

    P.S. As you might have guessed, I will not be adding games like T.A. Death to the public index of games. While there are good arguments that this is legal, I do not have a legal department. But I feel confident enough to defend publishing a game engine, and publishing some numbers.
     
  11. ryanheise

    ryanheise Unregistered

    Oops, I had accidentally made those pages internal! i.e. only visible to logged in users. If you try again, the pages should now be public.
     
  12. Works for me, no problems.

    Anyway, ryan. I like the concept of this game engine, it looks promising. Looking at the first page you mentioned something about using Texmaster sounds and (animated) backgrounds.
    Some problems. I copied the sample config you posted and put in my Texmaster datafolder named as theme.spec, but I couldn't figure out how to point Tessellate to that folder/file. I'm on ubuntu if it matters.
    About the font.ttf, should I just go to any font website such as http://www.dafont.com/ and look up a nice one and put in the Texmaster datafolder? Could you recommend a (free) font that would look good for the TGM experience?

    Lastly, is there a way to customize the controls? I need to have the movekeys on the left side and rotation on the right. I cannot play otherwise. [​IMG]
    Thanks.

    EDIT: Never mind I guess, found preferences link once I registered. [​IMG]

    EDIT: Preferences won't save, if I set 'wasd' for moving it still uses arrow keys after I save.
     
  13. ryanheise

    ryanheise Unregistered

    As a good starting point, take a look at the new "beyond" theme, which uses lee_n's background pack. In this theme, I have included a bgOverlay which renders the well border and other displays in a similar style to Texmaster. It is possible (from the themes page), to download this theme and grab the resources from it.

    [​IMG]
     
  14. Works great, thanks. [​IMG]

    EDIT: But if I click one of those configurations from the Wiki, for example Death. -> Then I click preferences and change controls + theme.. It won't load the theme and it won't use my custom controls.

    EDIT: Oh, I see the problem now. It doesn't like Opera. If I change the preferences in Firefox once then it will work.
     
  15. I got an error when trying to embed a replay on my website (a test to see if it worked)
    Code:
    Java Plug-in 1.6.0_10
    Anvnder JRE-version 1.6.0_10 Java HotSpot(TM) Client VM
    Anvndarens hemkatalog = /home/burbruee
    
    
    
    
    ----------------------------------------------------
    c: tm systemfnster
    f: slutfr objekt i slutfringsk
    g: skrpinsamling
    h: visa det hr hjlpmeddelandet
    l: dumpa classloader-lista
    m: skriv ut minnesfrbrukning
    o: utlsarloggning
    p: ladda proxykonfiguration p nytt
    q: dlj konsol
    r: ladda policykonfiguration p nytt
    s: dumpa system- och distributionsegenskaper
    t: dumpa trdlista
    v: dumpa trdstack
    x: tm classloader-cache
    0-5: ange sprningsnivn till <n>
    ----------------------------------------------------
    
    java.lang.reflect.InvocationTargetException
     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
     at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
     at Blox.<init>(Blox.java:129)
     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
     at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
     at java.lang.Class.newInstance0(Class.java:355)
     at java.lang.Class.newInstance(Class.java:308)
     at AppletLoader.init(Unknown Source)
     at sun.applet.AppletPanel.run(AppletPanel.java:424)
     at java.lang.Thread.run(Thread.java:619)
    Caused by: java.lang.NoClassDefFoundError: net/java/games/input/Component$Identifier$Key
     at JK.<init>(JK.java:51)
     ... 14 more
    Caused by: java.lang.ClassNotFoundException: net.java.games.input.Component$Identifier$Key
     at sun.applet.AppletClassLoader.findClass(AppletClassLoader.java:194)
     at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
     at sun.applet.AppletClassLoader.loadClass(AppletClassLoader.java:127)
     at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
     at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
     ... 15 more
    Event queue access allowed
    COMPONENT RESIZED
    Copyright 2007 Ryan Heise
    Loading theme...
    name = bg_0_00.jpg
    name = bg_0_01.jpg
    ibxm alpha 51 (c)2008 mumart@gmail.com
    blockSize = 17
    viewPort=java.awt.Rectangle[x=10,y=7,width=680,height=510]
    viewPort43=java.awt.Rectangle[x=10,y=7,width=680,height=510]
    0.0
    java.lang.reflect.InvocationTargetException
     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
     at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
     at Blox.<init>(Blox.java:129)
     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
     at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
     at java.lang.Class.newInstance0(Class.java:355)
     at java.lang.Class.newInstance(Class.java:308)
     at AppletLoader.init(Unknown Source)
     at sun.applet.AppletPanel.run(AppletPanel.java:424)
     at java.lang.Thread.run(Thread.java:619)
    Caused by: java.lang.NoClassDefFoundError: net/java/games/input/Component$Identifier$Key
     at JK.<init>(JK.java:51)
     ... 14 more
    Caused by: java.lang.ClassNotFoundException: net.java.games.input.Component$Identifier$Key
     at sun.applet.AppletClassLoader.findClass(AppletClassLoader.java:194)
     at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
     at sun.applet.AppletClassLoader.loadClass(AppletClassLoader.java:127)
     at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
     at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
     ... 15 more
    Event queue access allowed
    Copyright 2007 Ryan Heise
    Waiting for graphics context...
    COMPONENT RESIZED
    Exception in thread "AWT-EventQueue-3" java.lang.NullPointerException: String is null
     at sun.java2d.SunGraphics2D.drawString(SunGraphics2D.java:2744)
     at Blox.paint(Blox.java:2035)
     at Blox.update(Blox.java:2015)
     at sun.awt.RepaintArea.updateComponent(RepaintArea.java:239)
     at sun.awt.X11.XRepaintArea.updateComponent(XRepaintArea.java:43)
     at sun.awt.RepaintArea.paint(RepaintArea.java:216)
     at sun.awt.X11.XComponentPeer.handleEvent(XComponentPeer.java:688)
     at java.awt.Component.dispatchEventImpl(Component.java:4577)
     at java.awt.Container.dispatchEventImpl(Container.java:2081)
     at java.awt.Component.dispatchEvent(Component.java:4331)
     at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
     at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
     at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
     at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
     at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
    Exception in thread "AWT-EventQueue-3" java.lang.NullPointerException: String is null
     at sun.java2d.SunGraphics2D.drawString(SunGraphics2D.java:2744)
     at Blox.paint(Blox.java:2035)
     at sun.awt.RepaintArea.paintComponent(RepaintArea.java:248)
     at sun.awt.X11.XRepaintArea.paintComponent(XRepaintArea.java:56)
     at sun.awt.RepaintArea.paint(RepaintArea.java:224)
     at sun.awt.X11.XComponentPeer.handleEvent(XComponentPeer.java:688)
     at java.awt.Component.dispatchEventImpl(Component.java:4577)
     at java.awt.Container.dispatchEventImpl(Container.java:2081)
     at java.awt.Component.dispatchEvent(Component.java:4331)
     at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
     at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
     at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
     at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
     at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
    Loading theme...
    name = electronic.jpg
    ibxm alpha 51 (c)2008 mumart@gmail.com
    blockSize = 25
    viewPort=java.awt.Rectangle[x=0,y=0,width=700,height=525]
    viewPort43=java.awt.Rectangle[x=0,y=0,width=700,height=525]
    java.lang.NullPointerException
     at o.a(PieceSet.java:193)
     at o.<init>(PieceSet.java:78)
     at I.<init>(PieceFamily.java:11)
     at Blox.t(Blox.java:1669)
     at Blox.o(Blox.java:675)
     at Blox.n(Blox.java:626)
     at Blox.run(Blox.java:2826)
     at java.lang.Thread.run(Thread.java:619)
    java.lang.InterruptedException: sleep interrupted
     at java.lang.Thread.sleep(Native Method)
     at Blox.runLoad(Blox.java:872)
     at Blox.run(Blox.java:2828)
     at java.lang.Thread.run(Thread.java:619)
    java.lang.InterruptedException: sleep interrupted
     at java.lang.Thread.sleep(Native Method)
     at Blox.runLoad(Blox.java:872)
     at Blox.run(Blox.java:2828)
     at java.lang.Thread.run(Thread.java:619)
    java.lang.reflect.InvocationTargetException
     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
     at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
     at Blox.<init>(Blox.java:129)
     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
     at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
     at java.lang.Class.newInstance0(Class.java:355)
     at java.lang.Class.newInstance(Class.java:308)
     at AppletLoader.init(Unknown Source)
     at sun.applet.AppletPanel.run(AppletPanel.java:424)
     at java.lang.Thread.run(Thread.java:619)
    Caused by: java.lang.NoClassDefFoundError: net/java/games/input/Component$Identifier$Key
     at JK.<init>(JK.java:51)
     ... 14 more
    Caused by: java.lang.ClassNotFoundException: net.java.games.input.Component$Identifier$Key
     at sun.applet.AppletClassLoader.findClass(AppletClassLoader.java:194)
     at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
     at sun.applet.AppletClassLoader.loadClass(AppletClassLoader.java:127)
     at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
     at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
     ... 15 more
    Event queue access allowed
    COMPONENT RESIZED
    Copyright 2007 Ryan Heise
    Exception in thread "AWT-EventQueue-4" java.lang.NullPointerException: String is null
     at sun.java2d.SunGraphics2D.drawString(SunGraphics2D.java:2744)
     at Blox.paint(Blox.java:2035)
     at Blox.update(Blox.java:2015)
     at sun.awt.RepaintArea.updateComponent(RepaintArea.java:239)
     at sun.awt.X11.XRepaintArea.updateComponent(XRepaintArea.java:43)
     at sun.awt.RepaintArea.paint(RepaintArea.java:216)
     at sun.awt.X11.XComponentPeer.handleEvent(XComponentPeer.java:688)
     at java.awt.Component.dispatchEventImpl(Component.java:4577)
     at java.awt.Container.dispatchEventImpl(Container.java:2081)
     at java.awt.Component.dispatchEvent(Component.java:4331)
     at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
     at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
     at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
     at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
     at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
    Loading theme...
    name = bg_0_00.jpg
    name = bg_0_01.jpg
    name = bg_1_00.jpg
    name = bg_1_01.jpg
    name = bg_2_00.jpg
    name = bg_2_01.jpg
    name = bg_3_00.jpg
    name = bg_3_01.jpg
    name = bg_4_00.jpg
    name = bg_4_01.jpg
    name = bg_5_00.jpg
    name = bg_5_01.jpg
    name = bg_6_00.jpg
    name = bg_6_01.jpg
    name = bg_7_00.jpg
    name = bg_7_01.jpg
    name = bg_8_00.jpg
    name = bg_8_01.jpg
    name = bg_9_00.jpg
    name = bg_9_01.jpg
    ibxm alpha 51 (c)2008 mumart@gmail.com
    blockSize = 17
    viewPort=java.awt.Rectangle[x=10,y=7,width=680,height=510]
    viewPort43=java.awt.Rectangle[x=10,y=7,width=680,height=510]
    0.0
    1.0
    2.0
    3.0
    4.0
    5.0
    6.0
    7.0
    8.0
    9.0
    java.lang.reflect.InvocationTargetException
     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
     at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
     at Blox.<init>(Blox.java:129)
     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
     at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
     at java.lang.Class.newInstance0(Class.java:355)
     at java.lang.Class.newInstance(Class.java:308)
     at AppletLoader.init(Unknown Source)
     at sun.applet.AppletPanel.run(AppletPanel.java:424)
     at java.lang.Thread.run(Thread.java:619)
    Caused by: java.lang.NoClassDefFoundError: net/java/games/input/Component$Identifier$Key
     at JK.<init>(JK.java:51)
     ... 14 more
    Event queue access allowed
    Copyright 2007 Ryan Heise
    Waiting for graphics context...
    COMPONENT RESIZED
    Loading theme...
    name = bg_0_00.jpg
    name = bg_0_01.jpg
    name = bg_1_00.jpg
    name = bg_1_01.jpg
    name = bg_2_00.jpg
    name = bg_2_01.jpg
    name = bg_3_00.jpg
    name = bg_3_01.jpg
    name = bg_4_00.jpg
    name = bg_4_01.jpg
    name = bg_5_00.jpg
    name = bg_5_01.jpg
    name = bg_6_00.jpg
    name = bg_6_01.jpg
    name = bg_7_00.jpg
    name = bg_7_01.jpg
    name = bg_8_00.jpg
    name = bg_8_01.jpg
    name = bg_9_00.jpg
    name = bg_9_01.jpg
    ibxm alpha 51 (c)2008 mumart@gmail.com
    blockSize = 17
    viewPort=java.awt.Rectangle[x=10,y=7,width=680,height=510]
    viewPort43=java.awt.Rectangle[x=10,y=7,width=680,height=510]
    0.0
    1.0
    2.0
    3.0
    4.0
    5.0
    6.0
    7.0
    8.0
    9.0
    java.lang.reflect.InvocationTargetException
     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
     at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
     at Blox.<init>(Blox.java:129)
     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
     at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
     at java.lang.Class.newInstance0(Class.java:355)
     at java.lang.Class.newInstance(Class.java:308)
     at AppletLoader.init(Unknown Source)
     at sun.applet.AppletPanel.run(AppletPanel.java:424)
     at java.lang.Thread.run(Thread.java:619)
    Caused by: java.lang.NoClassDefFoundError: net/java/games/input/Component$Identifier$Key
     at JK.<init>(JK.java:51)
     ... 14 more
    Event queue access allowed
    Copyright 2007 Ryan Heise
    Waiting for graphics context...
    COMPONENT RESIZED
    Exception in thread "AWT-EventQueue-6" java.lang.NullPointerException: String is null
     at sun.java2d.SunGraphics2D.drawString(SunGraphics2D.java:2744)
     at Blox.paint(Blox.java:2035)
     at sun.awt.RepaintArea.paintComponent(RepaintArea.java:248)
     at sun.awt.X11.XRepaintArea.paintComponent(XRepaintArea.java:56)
     at sun.awt.RepaintArea.paint(RepaintArea.java:224)
     at sun.awt.X11.XComponentPeer.handleEvent(XComponentPeer.java:688)
     at java.awt.Component.dispatchEventImpl(Component.java:4577)
     at java.awt.Container.dispatchEventImpl(Container.java:2081)
     at java.awt.Component.dispatchEvent(Component.java:4331)
     at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
     at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
     at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
     at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
    Loading theme...
     at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
    name = bg_0_00.jpg
    name = bg_0_01.jpg
    name = bg_1_00.jpg
    name = bg_1_01.jpg
    name = bg_2_00.jpg
    name = bg_2_01.jpg
    name = bg_3_00.jpg
    name = bg_3_01.jpg
    name = bg_4_00.jpg
    name = bg_4_01.jpg
    name = bg_5_00.jpg
    name = bg_5_01.jpg
    name = bg_6_00.jpg
    name = bg_6_01.jpg
    name = bg_7_00.jpg
    name = bg_7_01.jpg
    name = bg_8_00.jpg
    name = bg_8_01.jpg
    name = bg_9_00.jpg
    name = bg_9_01.jpg
    ibxm alpha 51 (c)2008 mumart@gmail.com
    blockSize = 17
    viewPort=java.awt.Rectangle[x=10,y=7,width=680,height=510]
    viewPort43=java.awt.Rectangle[x=10,y=7,width=680,height=510]
    0.0
    1.0
    2.0
    3.0
    4.0
    5.0
    6.0
    7.0
    8.0
    9.0
    
    Step 1
    spawn:  18
    clearSpawn:14
    das:   10
    lock:   30
    clear:  12
    gravity: 20
    moveSpeed: 1
    softSpeed: 1
    gravDenom: 1
    
    Level 1
    next:   1
    hold:   false
    ghost:  false
    garbage: 0
    gimmick: 0
    cols:   10
    rows:   20
    javax.sound.sampled.LineUnavailableException: Audio Device Unavailable
     at com.sun.media.sound.HeadspaceMixer.nResume(Native Method)
     at com.sun.media.sound.HeadspaceMixer.implOpen(HeadspaceMixer.java:346)
     at com.sun.media.sound.AbstractMixer.open(AbstractMixer.java:286)
     at com.sun.media.sound.AbstractMixer.open(AbstractMixer.java:323)
     at com.sun.media.sound.AbstractDataLine.open(AbstractDataLine.java:103)
     at com.sun.media.sound.MixerSourceLine.open(MixerSourceLine.java:39)
     at com.sun.media.sound.AbstractDataLine.open(AbstractDataLine.java:399)
     at com.sun.media.sound.MixerSourceLine.open(MixerSourceLine.java:39)
     at p.run(IBXMPlayer.java:111)
     at java.lang.Thread.run(Thread.java:619)
    game over frame = 3070
    java.lang.reflect.InvocationTargetException
     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
     at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
     at Blox.<init>(Blox.java:129)
     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
     at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
     at java.lang.Class.newInstance0(Class.java:355)
     at java.lang.Class.newInstance(Class.java:308)
     at AppletLoader.init(Unknown Source)
     at sun.applet.AppletPanel.run(AppletPanel.java:424)
     at java.lang.Thread.run(Thread.java:619)
    Caused by: java.lang.NoClassDefFoundError: net/java/games/input/Component$Identifier$Key
     at JK.<init>(JK.java:51)
     ... 14 more
    Event queue access allowed
    COMPONENT RESIZED
    Copyright 2007 Ryan Heise
    Loading theme...
    name = bg_0_00.jpg
    name = bg_0_01.jpg
    name = bg_1_00.jpg
    name = bg_1_01.jpg
    name = bg_2_00.jpg
    name = bg_2_01.jpg
    name = bg_3_00.jpg
    name = bg_3_01.jpg
    name = bg_4_00.jpg
    name = bg_4_01.jpg
    name = bg_5_00.jpg
    name = bg_5_01.jpg
    name = bg_6_00.jpg
    name = bg_6_01.jpg
    name = bg_7_00.jpg
    name = bg_7_01.jpg
    name = bg_8_00.jpg
    name = bg_8_01.jpg
    name = bg_9_00.jpg
    name = bg_9_01.jpg
    ibxm alpha 51 (c)2008 mumart@gmail.com
    blockSize = 17
    viewPort=java.awt.Rectangle[x=10,y=7,width=680,height=510]
    viewPort43=java.awt.Rectangle[x=10,y=7,width=680,height=510]
    0.0
    1.0
    2.0
    3.0
    4.0
    5.0
    6.0
    7.0
    8.0
    9.0
    java.lang.reflect.InvocationTargetException
     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
     at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
     at Blox.<init>(Blox.java:129)
     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
     at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
     at java.lang.Class.newInstance0(Class.java:355)
     at java.lang.Class.newInstance(Class.java:308)
     at AppletLoader.init(Unknown Source)
     at sun.applet.AppletPanel.run(AppletPanel.java:424)
     at java.lang.Thread.run(Thread.java:619)
    Caused by: java.lang.NoClassDefFoundError: net/java/games/input/Component$Identifier$Key
     at JK.<init>(JK.java:51)
     ... 14 more
    Event queue access allowed
    Copyright 2007 Ryan Heise
    Waiting for graphics context...
    COMPONENT RESIZED
    Exception in thread "AWT-EventQueue-8" java.lang.NullPointerException: String is null
     at sun.java2d.SunGraphics2D.drawString(SunGraphics2D.java:2744)
     at Blox.paint(Blox.java:2035)
     at sun.awt.RepaintArea.paintComponent(RepaintArea.java:248)
     at sun.awt.X11.XRepaintArea.paintComponent(XRepaintArea.java:56)
     at sun.awt.RepaintArea.paint(RepaintArea.java:224)
     at sun.awt.X11.XComponentPeer.handleEvent(XComponentPeer.java:688)
     at java.awt.Component.dispatchEventImpl(Component.java:4577)
     at java.awt.Container.dispatchEventImpl(Container.java:2081)
     at java.awt.Component.dispatchEvent(Component.java:4331)
     at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
     at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
     at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
     at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
     at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
    Exception in thread "AWT-EventQueue-8" java.lang.NullPointerException: String is null
     at sun.java2d.SunGraphics2D.drawString(SunGraphics2D.java:2744)
     at Blox.paint(Blox.java:2035)
     at Blox.update(Blox.java:2015)
     at sun.awt.RepaintArea.updateComponent(RepaintArea.java:239)
     at sun.awt.X11.XRepaintArea.updateComponent(XRepaintArea.java:43)
     at sun.awt.RepaintArea.paint(RepaintArea.java:216)
     at sun.awt.X11.XComponentPeer.handleEvent(XComponentPeer.java:688)
     at java.awt.Component.dispatchEventImpl(Component.java:4577)
     at java.awt.Container.dispatchEventImpl(Container.java:2081)
     at java.awt.Component.dispatchEvent(Component.java:4331)
     at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
     at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
     at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
     at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
     at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
    Loading theme...
    name = bg_0_00.jpg
    name = bg_0_01.jpg
    name = bg_1_00.jpg
    name = bg_1_01.jpg
    name = bg_2_00.jpg
    name = bg_2_01.jpg
    name = bg_3_00.jpg
    name = bg_3_01.jpg
    name = bg_4_00.jpg
    name = bg_4_01.jpg
    name = bg_5_00.jpg
    name = bg_5_01.jpg
    name = bg_6_00.jpg
    name = bg_6_01.jpg
    name = bg_7_00.jpg
    name = bg_7_01.jpg
    name = bg_8_00.jpg
    name = bg_8_01.jpg
    name = bg_9_00.jpg
    name = bg_9_01.jpg
    ibxm alpha 51 (c)2008 mumart@gmail.com
    blockSize = 17
    viewPort=java.awt.Rectangle[x=10,y=7,width=680,height=510]
    viewPort43=java.awt.Rectangle[x=10,y=7,width=680,height=510]
    0.0
    1.0
    2.0
    3.0
    4.0
    5.0
    6.0
    7.0
    8.0
    9.0
    java.lang.reflect.InvocationTargetException
     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
     at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
     at Blox.<init>(Blox.java:129)
     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
     at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
     at java.lang.Class.newInstance0(Class.java:355)
     at java.lang.Class.newInstance(Class.java:308)
     at AppletLoader.init(Unknown Source)
     at sun.applet.AppletPanel.run(AppletPanel.java:424)
     at java.lang.Thread.run(Thread.java:619)
    Caused by: java.lang.NoClassDefFoundError: net/java/games/input/Component$Identifier$Key
     at JK.<init>(JK.java:51)
     ... 14 more
    Event queue access allowed
    Copyright 2007 Ryan Heise
    Waiting for graphics context...
    COMPONENT RESIZED
    Waiting for graphics context...
    Exception in thread "AWT-EventQueue-8" java.lang.NullPointerException: String is null
     at sun.java2d.SunGraphics2D.drawString(SunGraphics2D.java:2744)
     at Blox.paint(Blox.java:2035)
     at sun.awt.RepaintArea.paintComponent(RepaintArea.java:248)
     at sun.awt.X11.XRepaintArea.paintComponent(XRepaintArea.java:56)
     at sun.awt.RepaintArea.paint(RepaintArea.java:224)
     at sun.awt.X11.XComponentPeer.handleEvent(XComponentPeer.java:688)
     at java.awt.Component.dispatchEventImpl(Component.java:4577)
     at java.awt.Container.dispatchEventImpl(Container.java:2081)
     at java.awt.Component.dispatchEvent(Component.java:4331)
     at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
     at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
     at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
     at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
     at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
    Exception in thread "AWT-EventQueue-8" java.lang.NullPointerException: String is null
     at sun.java2d.SunGraphics2D.drawString(SunGraphics2D.java:2744)
     at Blox.paint(Blox.java:2035)
     at Blox.update(Blox.java:2015)
     at sun.awt.RepaintArea.updateComponent(RepaintArea.java:239)
     at sun.awt.X11.XRepaintArea.updateComponent(XRepaintArea.java:43)
     at sun.awt.RepaintArea.paint(RepaintArea.java:216)
     at sun.awt.X11.XComponentPeer.handleEvent(XComponentPeer.java:688)
     at java.awt.Component.dispatchEventImpl(Component.java:4577)
     at java.awt.Container.dispatchEventImpl(Container.java:2081)
     at java.awt.Component.dispatchEvent(Component.java:4331)
     at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
     at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
     at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
     at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
     at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
    Loading theme...
    name = bg_0_00.jpg
    name = bg_0_01.jpg
    name = bg_1_00.jpg
    name = bg_1_01.jpg
    name = bg_2_00.jpg
    name = bg_2_01.jpg
    name = bg_3_00.jpg
    name = bg_3_01.jpg
    name = bg_4_00.jpg
    name = bg_4_01.jpg
    name = bg_5_00.jpg
    name = bg_5_01.jpg
    name = bg_6_00.jpg
    name = bg_6_01.jpg
    name = bg_7_00.jpg
    name = bg_7_01.jpg
    name = bg_8_00.jpg
    name = bg_8_01.jpg
    name = bg_9_00.jpg
    name = bg_9_01.jpg
    ibxm alpha 51 (c)2008 mumart@gmail.com
    blockSize = 17
    viewPort=java.awt.Rectangle[x=10,y=7,width=680,height=510]
    viewPort43=java.awt.Rectangle[x=10,y=7,width=680,height=510]
    0.0
    1.0
    2.0
    3.0
    4.0
    5.0
    6.0
    7.0
    8.0
    9.0
    setting useReplaySeed = true
    
    Step 1
    spawn:  18
    clearSpawn:14
    das:   10
    lock:   30
    clear:  12
    gravity: 20
    moveSpeed: 1
    softSpeed: 1
    gravDenom: 1
    
    Level 1
    next:   1
    hold:   false
    ghost:  false
    garbage: 0
    gimmick: 0
    cols:   10
    rows:   20
    javax.sound.sampled.LineUnavailableException: Audio Device Unavailable
     at com.sun.media.sound.HeadspaceMixer.nResume(Native Method)
     at com.sun.media.sound.HeadspaceMixer.implOpen(HeadspaceMixer.java:346)
     at com.sun.media.sound.AbstractMixer.open(AbstractMixer.java:286)
     at com.sun.media.sound.AbstractMixer.open(AbstractMixer.java:323)
     at com.sun.media.sound.AbstractDataLine.open(AbstractDataLine.java:103)
     at com.sun.media.sound.MixerSourceLine.open(MixerSourceLine.java:39)
     at com.sun.media.sound.AbstractDataLine.open(AbstractDataLine.java:399)
     at com.sun.media.sound.MixerSourceLine.open(MixerSourceLine.java:39)
     at p.run(IBXMPlayer.java:111)
     at java.lang.Thread.run(Thread.java:619)
    
    Step 2
    spawn:  14
    clearSpawn:8
    das:   10
    lock:   26
    clear:  6
    gravity: 20
    moveSpeed: 1
    softSpeed: 1
    gravDenom: 1
    
    Level 2
    next:   1
    hold:   false
    ghost:  false
    garbage: 0
    gimmick: 0
    cols:   10
    rows:   20
    
    Step 3
    spawn:  14
    clearSpawn:8
    das:   9
    lock:   22
    clear:  6
    gravity: 20
    moveSpeed: 1
    softSpeed: 1
    gravDenom: 1
    
    Level 3
    next:   1
    hold:   false
    ghost:  false
    garbage: 0
    gimmick: 0
    cols:   10
    rows:   20
    
    Step 4
    spawn:  8
    clearSpawn:8
    das:   8
    lock:   22
    clear:  6
    gravity: 20
    moveSpeed: 1
    softSpeed: 1
    gravDenom: 1
    
    Level 4
    next:   1
    hold:   false
    ghost:  false
    garbage: 0
    gimmick: 0
    cols:   10
    rows:   20
    
    Step 5
    spawn:  7
    clearSpawn:7
    das:   6
    lock:   15
    clear:  5
    gravity: 20
    moveSpeed: 1
    softSpeed: 1
    gravDenom: 1
    
    Level 5
    next:   1
    hold:   false
    ghost:  false
    garbage: 0
    gimmick: 0
    cols:   10
    rows:   20
    game over frame = 13664
    inlsning: klassen .class finns inte.
    java.lang.ClassNotFoundException: .class
     at sun.applet.AppletClassLoader.findClass(AppletClassLoader.java:194)
     at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
     at sun.applet.AppletClassLoader.loadClass(AppletClassLoader.java:127)
     at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
     at sun.applet.AppletClassLoader.loadCode(AppletClassLoader.java:640)
     at sun.applet.AppletPanel.createApplet(AppletPanel.java:785)
     at sun.plugin.AppletViewer.createApplet(AppletViewer.java:2302)
     at sun.applet.AppletPanel.runLoader(AppletPanel.java:714)
     at sun.applet.AppletPanel.run(AppletPanel.java:368)
     at java.lang.Thread.run(Thread.java:619)
    
    It mentions something about not finding a .class file.
    Is it not supposed to work yet?

    Also will the theme be loaded when embedding? (beyond in this case)
    Will it use the
    a) default theme
    b) the theme set by the user logged in when copying the embed code or
    c) the theme used by the user which the record belongs to?
     
  16. ryanheise

    ryanheise Unregistered

    The embed feature isn't implemented for tessellate yet. I'll get on it [​IMG]
     
  17. That's good. (that it wasn't an error on my end [​IMG] )
     
  18. ryanheise

    ryanheise Unregistered

    Hopefully the embed feature is now working for tessellate. Replays will be played using the theme of the person who set the record.
     
  19. It works! [​IMG]
     

Share This Page