Hexara -- work in progress

Interesting. That’s the first Windows complaint. Are you by chance using Java 8? The Mac computers that were having troubles are all Java 8.

I wonder what it means when a program has a single thread freeze like that. Maybe there is something going in the multithreading or concurrent processing where the spec has changed slightly. Classically, there is either an infinite loop occurring or a deadlock. I wrote this to make no use of Synchronization, though. I guess there could be a Swing conflict?

Something similar happened once before during version upgrades, in the audio: it used to be you could create an AudioInputLine from an InputLine in Java 6. Then, there was a slight change in how underlying lines where ordered or something obscure like that and the code “broke” in Java 7. Actually, it didn’t exactly break, the test for “Markability” just started to fail where it hadn’t in practice before, and a lot of us didn’t know audio line input often isn’t 'markable".

I did a search earlier on java 8 mac bugs. I’ll try searching on Java 7 to 8 transition bugs.

[EDIT: not finding anything suggestive. But maybe it is time to download Java 8. I guess I could run it separately, rather than out-and-out replace Java 7 just yet.]

@pjt33 Good suggestions! I like the text you wrote. May I use it or a slightly edited version? I used to have a menu bar with the ability to “RESET” a puzzle or give up. It may be time to bring the bar back, and include an instruction screen as well as choices for abandoning. I was thinking a Menu bar could also allow a way to load additional puzzles (sell a set of 24 or 48 at your choice of difficulty level for $1 or 0.50 cents or something). or maybe just have a row of buttons along the bottom. You are the second person to request the additional highlighting–I probably should go ahead and do it.

Happy Thanksgiving! (to those who celebrate it)

I actually am. I could try to install Java 7 tomorrow to see if that fixes it.

y u no use java 7

I concur. The clicking on a line thing isn’t something I discovered by just playing the game.

I’ve solved all but a couple of gold ones in 20 minutes.

That’s always a problem with puzzle game development. (And with most game development, in fact).

Instructions are a good first step until you have time to work on a detailed walk-the-player-through-the-level tutorial. I would say something like:

Each vertical banner contains a sequence of tiles which must be present somewhere on the board. The sequence may be present in a straight line, or bend all over the place. Arrange the tiles so that all six sequences are present.

I haven’t had problems with sound dropping out. One feature that I would prioritise is a way to give up on a level and go back to the list of levels. I’d also add the text “Choose a level” to the level selection screen, because it’s not immediately obvious that it’s a level selection screen. I thought at first that it was just a splashscreen. And I would find it helpful to be able to hover over a tile on a banner and see the other instances of that tile, rather than just getting that highlight when I hover over a tile on the board.

Interesting. That’s the first Windows complaint. Are you by chance using Java 8? The Mac computers that were having troubles are all Java 8.

I wonder what it means when a program has a single thread freeze like that. Maybe there is something going in the multithreading or concurrent processing where the spec has changed slightly. Classically, there is either an infinite loop occurring or a deadlock. I wrote this to make no use of Synchronization, though. I guess there could be a Swing conflict?

Something similar happened once before during version upgrades, in the audio: it used to be you could create an AudioInputLine from an InputLine in Java 6. Then, there was a slight change in how underlying lines where ordered or something obscure like that and the code “broke” in Java 7. Actually, it didn’t exactly break, the test for “Markability” just started to fail where it hadn’t in practice before, and a lot of us didn’t know audio line input often isn’t 'markable".

I did a search earlier on java 8 mac bugs. I’ll try searching on Java 7 to 8 transition bugs.

[EDIT: not finding anything suggestive. But maybe it is time to download Java 8. I guess I could run it separately, rather than out-and-out replace Java 7 just yet.]

@pjt33 Good suggestions! I like the text you wrote. May I use it or a slightly edited version? I used to have a menu bar with the ability to “RESET” a puzzle or give up. It may be time to bring the bar back, and include an instruction screen as well as choices for abandoning. I was thinking a Menu bar could also allow a way to load additional puzzles (sell a set of 24 or 48 at your choice of difficulty level for $1 or 0.50 cents or something). or maybe just have a row of buttons along the bottom. You are the second person to request the additional highlighting–I probably should go ahead and do it.

Happy Thanksgiving! (to those who celebrate it)

I actually am. I could try to install Java 7 tomorrow to see if that fixes it.

y u no use java 7

Sure.

Sure.

An Oracle website has a time line where they have scheduled discontinuing Java 7 updates in April 2015. That’s coming up pretty quick.
http://www.oracle.com/technetwork/java/eol-135779.html

@Longarmx – Are you using Eclipse, too? I always hesitate to jump forward to a new release. I’m still using Juno. Seems like it is time for Kepler + Java 8.

New theory on the crashes: I may be exposing myself to Swing multithreading problems, and these are more likely to go off on Java 8 than 7 for some reason. I am rereading about scheduling things on the EDT. (Book is open right next to me.) Have generally been kind of relaxed about this, as cluttering the EDT hurts performance, and haven’t ever gotten in trouble prior to this.

An Oracle website has a time line where they have scheduled discontinuing Java 7 updates in April 2015. That’s coming up pretty quick.
http://www.oracle.com/technetwork/java/eol-135779.html

@Longarmx – Are you using Eclipse, too? I always hesitate to jump forward to a new release. I’m still using Juno. Seems like it is time for Kepler + Java 8.

New theory on the crashes: I may be exposing myself to Swing multithreading problems, and these are more likely to go off on Java 8 than 7 for some reason. I am rereading about scheduling things on the EDT. (Book is open right next to me.) Have generally been kind of relaxed about this, as cluttering the EDT hurts performance, and haven’t ever gotten in trouble prior to this.

I never used Juno…I skipped straight from Indigo to Kepler. :wink:

I never used Juno…I skipped straight from Indigo to Kepler. :wink:

Speaking of Eclipse, Mars is out ;D

Speaking of Eclipse, Mars is out ;D

Java 8 installed, along with Eclipse LUNA.
I copied Hexara and PFAudio in, and yes, they are crashing (the audio is working fine, its the Swing stuff that seems to be crashing in test programs written for PFAudio).

And that is good news. Something to debug!

[EDIT: And the bad news is, it seems to be due to a bug in the Java 8 implementation of ConcurrentSkipListSet, a vital piece of the audio scheduling system. There is a bug listed:
http://bugs.java.com/bugdatabase/view_bug.do?bug_id=8060435

Now what? Maybe will have to try and program a work-around.

Stuff like that isn’t supposed to break!!]

[EDIT #2: embarrassment. The error was with a faulty compare method I wrote implementing the Comparable used by the ConcurrentSkipListSet.]

Java 8 installed, along with Eclipse LUNA.
I copied Hexara and PFAudio in, and yes, they are crashing (the audio is working fine, its the Swing stuff that seems to be crashing in test programs written for PFAudio).

And that is good news. Something to debug!

[EDIT: And the bad news is, it seems to be due to a bug in the Java 8 implementation of ConcurrentSkipListSet, a vital piece of the audio scheduling system. There is a bug listed:
http://bugs.java.com/bugdatabase/view_bug.do?bug_id=8060435

Now what? Maybe will have to try and program a work-around.

Stuff like that isn’t supposed to break!!]

[EDIT #2: embarrassment. The error was with a faulty compare method I wrote implementing the Comparable used by the ConcurrentSkipListSet.]

Am ready to try again. I am pretty confident the bug that caused hangs has been identified and fixed. The following two programs should work with Java7 or Java8, on Mac or PC or Linux.

http://www.java-gaming.org/user-generated-content/members/27722/hexara141130.jar
http://www.java-gaming.org/user-generated-content/members/27722/hexarasoundtester141130.jar

There is a collection that I was relying on: ConcurrentSkipListSet, for scheduling audio events. I used a “>=” where there should have been a “>” in a compareTo method, and while it worked in Java 7, a new implementation of the collection exposed the sloppy compareTo and would start to spin in place. Had I been more rigorous in the compareTo, following the requirements in the JavaDoc, this would never have happened. :frowning:

Anyway…it will be nice getting back to making progress instead of fixing broken things.

It will be a little difficult taking the time to “finish” the game. Am going to try and stick with it, especially after having been given some good suggestions. But a lot of my brain is occupied with wanting to test out the implementation of more game scoring techniques with the audio library. And there is a little matter of pending contract work that needs to be done to pay the rent.

I can confirm that it now works!

Am ready to try again. I am pretty confident the bug that caused hangs has been identified and fixed. The following two programs should work with Java7 or Java8, on Mac or PC or Linux.

http://www.java-gaming.org/user-generated-content/members/27722/hexara141130.jar
http://www.java-gaming.org/user-generated-content/members/27722/hexarasoundtester141130.jar

There is a collection that I was relying on: ConcurrentSkipListSet, for scheduling audio events. I used a “>=” where there should have been a “>” in a compareTo method, and while it worked in Java 7, a new implementation of the collection exposed the sloppy compareTo and would start to spin in place. Had I been more rigorous in the compareTo, following the requirements in the JavaDoc, this would never have happened. :frowning:

Anyway…it will be nice getting back to making progress instead of fixing broken things.

It will be a little difficult taking the time to “finish” the game. Am going to try and stick with it, especially after having been given some good suggestions. But a lot of my brain is occupied with wanting to test out the implementation of more game scoring techniques with the audio library. And there is a little matter of pending contract work that needs to be done to pay the rent.