BerryBots pre-release testing help

Jump to navigation Jump to search
Revision as of 12 March 2013 at 04:15.
The highlighted comment was created in this revision.

BerryBots pre-release testing help

Edited by author.
Last edit: 05:47, 8 March 2013

Hey dudes - I'm gearing up to release BerryBots v1.1.0 with a full GUI for Mac/Linux/Windows. If any of you would be willing to grab this release candidate and test it on your systems, I would be super duper grateful! I mainly just want to know it launches and runs battles ok, but obviously any/all feedback is also welcome.

    Voidious04:19, 6 March 2013

    I just downloaded the windows version. It is launching and running battles alright, so far.

    I'll also add that it has a very nice, simplistic interface.

      Sheldor12:38, 6 March 2013

      Awesome, thanks Sheldor!

        Voidious14:46, 6 March 2013
         

        I get the following error with the Linux 64 bit version:

        [andrew@host-110-86 berrybots]$ ./bbgui ./bbgui: error while loading shared libraries: libpng12.so.0: cannot open shared object file: No such file or directory [andrew@host-110-86 berrybots]$ sh berrybots.sh ./bbgui: error while loading shared libraries: libpng12.so.0: cannot open shared object file: No such file or directory

          AW15:21, 6 March 2013

          Great, thanks for testing this! What Linux distro/version is this?

          I think the cleanest solution is probably just to ask people to install libpng (and/or check that it's installed from an install or run script first). Maybe testing a few other distros to figure out what needs installing would be a good idea before release. I know it doesn't require anything on the last two Ubuntu's.

            Voidious15:42, 6 March 2013
             

            Sweet, was able to duplicate this on Mageia 2. Will try to either get to the bottom of it or maybe just building it on non-Ubuntu will solve the problem. Right now looking to test on Ubuntu / Mageia / Fedora - still curious to hear what you're using.

              Voidious16:10, 7 March 2013
               

              Oops, I forgot I didn't say. I'm using fedora 18. I installed libpng, but then hit more libraries that I was missing. I'll try it on Windows today.

                AW16:35, 7 March 2013
                 

                After some research, I think the problem is that you have a newer version of libpng (like libpng14 or libpng15), not that you don't have libpng at all. My Mageia 2 install has libpng15. I know what libpng is but this whole problem is pretty new to me, so I have to figure out what's the right way to address it.

                Thanks man!

                  Voidious16:42, 7 March 2013
                   

                  Versions after libpng12 broke compatability with libpng12 in notable ways. For this reason, libpng12 still has maintnance release, and many distributions (i.e. Arch Linux, Ubuntu, Debian, and after checking, Fedora 18 too) have pakages for both libpng12 and the newst version of libpng, which can be installed simuntaneously without conflict.

                  AW: You should be able to install a "libpng12" package from your package manager I believe.

                    Rednaxela17:05, 7 March 2013

                    I have no attachment to any libpng versions, so I guess the best move is to compile against whichever version works most commonly across default installs of Ubuntu / Mageia / Fedora, probably libpng14. Is that what you'd recommend?

                      Voidious18:01, 7 March 2013
                       

                      No clue about Mageia, but Fedora and Arch provide both libpng15 and libpng12 (libpng12 isn't installed by default, but should be easy to install). Ubuntu and Debian however only provide libpng12. To me libpng12 looks like the safest for binary releases of software for now. Well, safer still is statically linking libpng, but yeah.

                        Rednaxela18:43, 7 March 2013
                         

                        Thanks Rednaxela, this has been really helpful. If installing libpng12 is simple on most distros that don't ship with it, that sounds like the way to go.

                        I could still have a problem, though. wxWidgets will dynamically link to GTK, which dynamically links to system libpng. So I could then be linking to libpng12 and libpng15, which seems bad, but maybe it's not. I'll do some tests. Maybe I just have to build a separate binary release for Ubuntu/Debian and Fedora/Arch/Mageia, which isn't really a big deal.

                          Voidious19:47, 7 March 2013
                           

                          Yeah, I installed libpng 1.2 and now I need libGLEW 1.8 (fedora's package mannager only has 1.7) It runs fine on Windows though!

                            AW21:58, 7 March 2013
                             

                            Cool, thanks AW! Funny, Windows was the platform I was most worried about. :-) Btw are you on Windows 7?

                            I guess offering binaries compiled on several common Linux distros is probably a fairly safe way to go. Packaging as an RPM may help in defining/managing these dependencies, too, though.

                              Voidious23:13, 7 March 2013
                               

                              It works here as well. But does seem to have an unused console window. Windows tends to be fairly straight forward once you know what it needs to have. Namely dlls.

                              On a side note, I have noticed random bot hitting itself with its own laser shots.

                                Chase04:11, 8 March 2013
                                 

                                Woot, thanks! And yeah, he's dumb like that. Chaser's even worse. :-)

                                  Voidious04:12, 8 March 2013
                                   

                                  Compiled on Fedora 18 64-bit, if you want it: [1] (It does give a harmless warning about receiving unicode text input that I am not sure I can fix.)

                                  But hopefully I can figure out a way not to have to offer per-distro Linux binaries...

                                    Voidious01:43, 8 March 2013

                                    Bah, I'm not finding much to indicate I can make this any easier than separate binaries for a few major Linux distros and providing source / good build instructions (which I have) for anyone else to compile it themselves.

                                    Still very open to advice from any resident Linux gurus tho. :-)

                                      Voidious04:11, 8 March 2013
                                       

                                      Mainly what I have seen lately is many programs have moved to being managed by a package manager. I have opinions on that. But other programs such as audacity offer a few different packages for a few major distro's and the source code.

                                        Chase04:22, 8 March 2013
                                         

                                        If you statically link libpng and libglew, I'd expect that to work better across distros probably Voidious.

                                          Rednaxela17:35, 8 March 2013
                                           

                                          Aren't the odds high that those each link to the system specific version of something else which has the same problem? I'm also concerned about ending up linking in two versions of libpng and libglew, since something like GTK would dynamically link them in.

                                            Voidious17:38, 8 March 2013
                                             

                                            Those two would link to other things yes, but those (libc, zlib and and OpenGL itself) have a very stable ABI so far as I know, and likely would not have the same problem. If really worried though, one could probably staticly link everything except OpenGL and wxWidgets. GTK dynamically linking a different one in shouldn't be a problem I think, it should coexist just fine.

                                              Rednaxela17:52, 8 March 2013
                                               

                                              I tried out the fedora binary and it works now. Thanks!

                                                AW21:50, 9 March 2013
                                                 
                                                 

                                                I noticed this game has a lot of fast-moving bright colors--many more than Robocode.

                                                It would be wise to put in some kind of legal disclaimer, such as:

                                                "Do not use this product if you have been diagnosed with epilepsy or any other photosensitive medical condition."

                                                  Sheldor15:26, 6 March 2013
                                                   

                                                  Hi mate,

                                                  Right now i have not much time to check it out, but on my macbook the app crash instantly.

                                                  I can send you the full crash report if you want but maybe the first lines help you to see whats wrong

                                                  Date/Time:       2013-03-06 06:50:35.838 +0100
                                                  OS Version:      Mac OS X 10.6.8 (10K549)
                                                  Report Version:  6
                                                  
                                                  Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
                                                  Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000000
                                                  Crashed Thread:  0  Dispatch queue: com.apple.main-thread
                                                  
                                                  Thread 0 Crashed:  Dispatch queue: com.apple.main-thread
                                                  0   ???                           	000000000000000000 0 + 0
                                                  1   libwx_baseu-2.9.4.0.0.dylib   	0x00000001926c7e8b wxEntry(int&, char**) + 11
                                                  2   voidious.BerryBots            	0x00000001919610b6 0x19195d000 + 16566
                                                  3   voidious.BerryBots            	0x000000019195ece4 0x19195d000 + 7396
                                                  
                                                  Thread 1:  Dispatch queue: com.apple.libdispatch-manager
                                                  0   libSystem.B.dylib             	0x00007fff83bcec0a kevent + 10
                                                  1   libSystem.B.dylib             	0x00007fff83bd0add _dispatch_mgr_invoke + 154
                                                  2   libSystem.B.dylib             	0x00007fff83bd07b4 _dispatch_queue_invoke + 185
                                                  3   libSystem.B.dylib             	0x00007fff83bd02de _dispatch_worker_thread2 + 252
                                                  4   libSystem.B.dylib             	0x00007fff83bcfc08 _pthread_wqthread + 353
                                                  5   libSystem.B.dylib             	0x00007fff83bcfaa5 start_wqthread + 13
                                                  
                                                  Thread 2:
                                                  0   libSystem.B.dylib             	0x00007fff83bcfa2a __workq_kernreturn + 10
                                                  1   libSystem.B.dylib             	0x00007fff83bcfe3c _pthread_wqthread + 917
                                                  2   libSystem.B.dylib             	0x00007fff83bcfaa5 start_wqthread + 13
                                                  
                                                  Thread 0 crashed with X86 Thread State (64-bit):
                                                    rax: 0x0000000000109f80  rbx: 0x0000000000000000  rcx: 0x0000000000000001  rdx: 0x00000000000fc080
                                                    rdi: 0x000000000013b7e0  rsi: 0x0000000000100000  rbp: 0x00007fff5fbffa90  rsp: 0x00007fff5fbff978
                                                     r8: 0x0000000000000000   r9: 0x000000000013b300  r10: 0x00007fff8ab4b630  r11: 0x0000000000000000
                                                    r12: 0x00007fff5fbffa08  r13: 0x0000000000109f60  r14: 0x0000000000000000  r15: 0x00007fff5fbff9f0
                                                    rip: 0x0000000000000000  rfl: 0x0000000000010206  cr2: 0x0000000000000000
                                                  


                                                  I plan to give it a deeper look on weekend.

                                                  take care wompi

                                                    Wompi06:45, 7 March 2013

                                                    It just won't work on anything before 10.7. I tried to get it compatible with 10.5 or 10.6 but couldn't get the main gfx library (SFML 2.0) to compile with that. Still like 30% of folks on 10.6, so that kind of sucks... But I'm a late updater and even I'm on 10.8 now so hopefully most people will be on at least 10.7 pretty soon.

                                                    Thx for giving it a shot tho!

                                                      Voidious14:55, 7 March 2013
                                                       

                                                      Actually, I am going to take another pass at 10.6 compatibility. I'll let you know if I have any success and maybe I can get you to try it again...

                                                        Voidious15:50, 7 March 2013
                                                         

                                                        Argh.. i didn't read the requirements, sorry that was my bad. If it comes to updates, I usually switch to the next version if there is a program I want and which needs those requirements. And because I desperately want to have a look at BerryBots, it is a perfect time to get "Lion", I guess.

                                                        Please don't bother with 10.6 compatibility, it's not worth the time.

                                                        Take Care

                                                          Wompi06:45, 9 March 2013
                                                           

                                                          Wow, I'm honored. :-)

                                                          I'm all in favor of being as backwards compatible as possible, so I gave 10.6 compatibility another shot, but I couldn't get it working. I got wxWidgets and SFML to compile with the 10.6 SDK and 10.6 target version, but my XCode project itself still fails with some linker errors I can't figure out when I set the target to 10.6. Seems like I'm close, but I'm at a loss...

                                                            Voidious10:45, 9 March 2013
                                                             

                                                            So far it's working on my Windows XP box. But the first match I tried seems potentially buggy. I put Drifter and MyFirstShip into lasergallery. Is lasergallery just meant for 1 ship? The two ships seems to start on top of each other. Is robot positioning random? Or controlled by the level perhaps? Sometimes Drifter drifts away and it runs okay, but most of the time Drifter holds still while MyFirstShip totally spazzes out, always appearing to touch Drifter but bouncing from side to side like mad. [1]

                                                              Skotty15:43, 9 March 2013

                                                              A couple other things. I realize this is still an early release, but is there a way to set descriptions for stages? One of the first things I noticed was that I had no idea what the stages were meant for, outside of guessing based on the file name. It would be nice if their was a way for stage designers to set descriptions for their stages that could be read by users when picking a stage to run.

                                                              Also, when the New Match window is open, the BerryBots window where the battle plays out doesn't repaint. A minor thing, and it's interesting the patterns I can make by running other windows over top of it, but I doubt that's an intended feature. :-)

                                                                Skotty15:55, 9 March 2013

                                                                I think I've fixed the repainting issue, but I don't have any machine where I can reproduce it. If you could try this on XP sometime (no rush) I'd love to know if it's fixed: [1] (I'm actually kinda of surprised/excited BerryBots even works on XP...)

                                                                Also took a pass at the stage description / wrong number of ships stuff.

                                                                  Voidious01:58, 10 March 2013

                                                                  I'd say the repainting issue is fixed. It still happens while dragging the New Match window over the battle window, but then it repaints as soon as you stop dragging the New Match window. And it doesn't happen at all anymore when dragging other application windows. I wouldn't bother with it anymore, especially if it just happens on XP.

                                                                    Skotty20:54, 10 March 2013
                                                                     
                                                                     

                                                                    Another bug or perhaps just me not understanding the level, on the drift stage I put WallHugger and Drifter in it. WallHugger wanders around the walls while Drifter tries to go up the middle. Drifter always wins, but WallHugger always makes it to and around the zone at the top before Drifter gets there. If the goal is to get to the zone first, WallHugger should be winning. Or maybe I misunderstand the goal?

                                                                      Skotty16:03, 9 March 2013

                                                                      Looks like what's happening on this stage is that it was meant for only 1 robot. It appears as though whichever robot comes first in the alphabet gets to play, while the other robot just wanders around pointlessly wondering why the other kids won't play with him.

                                                                        Skotty16:06, 9 March 2013
                                                                         

                                                                        Would you rather me be spamming all this feedback in your BerryBots forum? Or do you want to keep it here among Robocoders for the moment. I have been assuming the latter.

                                                                          Skotty16:09, 9 March 2013
                                                                           

                                                                          Either is fine. Here probably makes more sense for now. Huge thanks for all the testing/feedback!

                                                                          • Not knowing which bots/stages work together is definitely the biggest source of confusion I see at the moment. Indeed lasergallery and drift are only designed for one ship. I'm not sure the best way to address this, but I think I'll raise the priority on this and get it fixed before release.
                                                                            • I could just read any comments at the top of the stage file as the description (they do all have such comments) and put it in the UI somewhere, like stage preview.
                                                                            • In addition, each of the 1p stages could just destroy any player ships beyond 1 and print a message to the screen. (The mazes do print a message actually, but not the others.)
                                                                            • It's no substitute for fixing this in-game, but if you do want to read about the stages, they all have write-ups (though some with out-of-date source code) at the wiki: [1]
                                                                          • Specific start positions can be defined by the stage, any beyond that they're random.
                                                                          • Did you mean literally "on top of each other", like they were overlapping and stuck? If so, that's a bug I'd love to reproduce. It's fairly low level in the game engine that this should never be possible.
                                                                          • The New Match dialog is styled to be a modal thing. The main window doesn't accept input or update until/unless you close New Match. I'd never seen any visual artifacts like that though (just tested here Mac and Win 8). I'll see if I can reproduce somewhere and try to figure out a fix. This happens even with New Match retaining focus the whole time, just covering/uncovering part of the main window?
                                                                            Voidious17:02, 9 March 2013
                                                                             

                                                                            Ok, I see what's happening now on lasergallery. The first ship nabs the built-in starting position, but the second ship is what the stage saves as the "player ship", and the stage tries to set its position to that spot each tick.

                                                                            I have a bunch of thoughts on the ship/stage compatibility issue. I'm trying not to over-engineer it, but it is lacking right now for sure.

                                                                            • The stage description would go a long way, I think that's a must-have.
                                                                            • In general, I think for ships/stages you download yourself, you have a good idea what you're doing, and engineering solutions to ensure compatibility are probably overkill. In Robocode, I don't see a lot of confusion trying to run 1v1 bots in Melee battles, or Movement Challenge bots in regular battles, etc. So I partly see this as an issue specific to sample ships/stages, or at least magnified there.
                                                                            • An API to let the stage set min/max ships is an idea I'm considering. This would let me fail fast and not even start a misconfigured match. My issue with this is it's still not sufficient (Snail would be pretty dumb on lasegallery).
                                                                            • On my to-do list is to let a stage set a tag for the rule set it's using. Just a string, like "battle" or "maze". Then ships could check this value in case they wanted to behave differently based on the rule set. E.g., a team might support "battle" and "ctf". I could expand on this by letting ships define what rule sets they support, though I'm on the fence about that.

                                                                            I think for now I'll just do:

                                                                            • Show stage descriptions in New Match dialog somewhere.
                                                                            • Update sample stages to gracefully handle too many ships.
                                                                              Voidious18:28, 9 March 2013

                                                                              Oh, and:

                                                                              • Include in the stage descriptions which sample bots work.
                                                                                Voidious18:30, 9 March 2013
                                                                                 
                                                                                 

                                                                                I was playing kind of dumb in my earlier testing, but doing so helps ensure everything is as user friendly as it can be. I like the idea of a stage being able to indicate min/max bots, though I see your point about it still being possible to pair robots with stages they were not meant for.

                                                                                I'm not sure if this is even possible, and I certainly wouldn't worry about it anytime soon, but the one thing that I think would be *really* cool in a game like BerryBots, Robocode, or similar would be if they provided a way for a user to paint his/her own ship/tank/robot; something more than just setting colors. This would greatly enhance interactive play. I'm not sure how many others would be into this idea though. Just an idea for the backburner.

                                                                                  Skotty20:13, 9 March 2013

                                                                                  Doesn't sound that far-fetched to me. I'll already have to roll my own basic graphics API to add debugging graphics, so using that same architecture for customizing your ship graphics might be pretty cool.

                                                                                    Voidious20:48, 9 March 2013
                                                                                     

                                                                                    Kind of interesting, I put 2 Jouster's into the stage joust and within just a few runs experienced two different tie scenarios. The first one, both Jouter's ended up head to head trying to push each other to the opposite side, neither budging at all. The second one, apparently they both bounced out to zone at the same time, and it just said Game Over instead of declaring a winner. Luckily, I didn't have to put a quarter in my computer to play again (that's what it made me think of).

                                                                                      Skotty20:19, 9 March 2013

                                                                                      Yeah, maybe just a time limit before it's a tie would be good? I added a time limit for rounds on the battle stages when I realized 2 WallHuggers can get in a pattern where they never hit each other. Joust could also do well to have multiple rounds, for that matter...

                                                                                        Voidious20:44, 9 March 2013
                                                                                         

                                                                                        I tried to run BerryBots but instead I got this error message:

                                                                                        "The program can't start because sfml-graphics-2.dll is missing from your computer. Try reinstalling the program to fix this problem."

                                                                                        It worked fine before.

                                                                                          Sheldor12:27, 10 March 2013

                                                                                          Hmm - do you see sfml-graphics-2.dll in the same directory as BerryBots.exe?

                                                                                            Voidious15:28, 10 March 2013

                                                                                            Yes.

                                                                                              Sheldor15:30, 10 March 2013

                                                                                              Any chance you are clicking into the zip and not the extracted folder? I know I've done that when Windows is hiding file extensions.

                                                                                              If it's not that, I'm pretty confused and will have to do some research. Windows 7 for you right? And does re-extracting to another location work? Thanks.

                                                                                                Voidious16:18, 10 March 2013
                                                                                                 
                                                                                                 

                                                                                                Aha!

                                                                                                When I open it straight from Explorer, it works fine. But, when I go through the shortcut I put on my desktop, I get the error. Are you making some kind of reference to that DLL that wouldn't work through a desktop shortcut?

                                                                                                You are correct, I am using Windows 7. (I've tried linux, but I haven't gotten the hang of it yet.)

                                                                                                  Sheldor17:15, 10 March 2013
                                                                                                   

                                                                                                  Ah! Ok, that makes some sense. Really glad you uncovered this one!

                                                                                                  It needs the DLLs somewhere that the system will find them. Having them in the same dir as the .exe works, and lets me avoid needing an installer or polluting your system with DLLs (or so I thought). But maybe I do need an installer after all, or to static link everything (all the required DLL code goes right into the .exe, basically).

                                                                                                  The desktop shortcut works for me on Windows 8. It's definitely a shortcut on your desktop right? Not a copy of the .exe? I think if you want a work-around for now, you could copy the DLLs into Windows\System32, or add the BerryBots directory to your PATH.

                                                                                                    Voidious17:49, 10 March 2013
                                                                                                     

                                                                                                    You're right. I actually copied the .exe file to my desktop folder. It's fixed now.

                                                                                                    It probably would be a good idea to use an installer or have all code in one file, in case somebody else does something stupid. ;)

                                                                                                      Sheldor18:05, 10 March 2013
                                                                                                       

                                                                                                      Oh cool, good to hear. I am looking into installers now, Inno Setup looks promising.

                                                                                                      But I may put the installer off to next release if it's not totally breaking anything. The bigger piece of work here is that with the code in "Program Files", I'd also want to move bots/stages to somewhere else (configurable, eg My Documents\BerryBots), and then need a way to find them (like via the registry). I already have to do it this way on Mac OS X, and it does seem like a better setup. Right now it just knows to look in the subdirectories on Windows/Linux.

                                                                                                        Voidious18:14, 10 March 2013
                                                                                                         

                                                                                                        Just wanted to give a big thanks to all you dudes for helping me out with this. It would've been an ugly, bug-ridden first release of the BerryBots GUI without you. I owe y'all some testing whenever you need it. :-) Details on v1.1.0 if anyone wants to check it out: [1]

                                                                                                          Voidious05:15, 12 March 2013