« first day (207 days earlier)      last day (3373 days later) » 

12:00 AM
[retailcoder/Rubberduck] 13 commits. 8 opened issues. 1 closed issue. 4 issue comments.
 
seems like today is Roxette day:
 
 
12:11 AM
@SimonAndréForsberg So if we're using libGDX, and using JS with it is a no-no, is there a better way of doing this modding thing?
I'm OK with whatever technology we end up using, just be aware that any file I get to touch will be heavily documented as to what does what :)
(which I think is a good thing if we're shooting for John Q. Modder to be able to make their mod)
@Duga Good thing this is not a contest :D
Also, @Simon I never knew that song (never really listened to Roxette) but I love the feel of it. The tremolo guitar reminds of Kill Bill
But the feel has a bit of Pink Floyd to it to dramatize :)
@SimonAndréForsberg:
 
12:54 AM
@Phrancis libGDX is not intended to contain much logic, only a client interface that connects to the server. We're using quite a lot of Java 8 features in the logic/core/server code already, so game logic and libGDX is already a no-no.
As for modding a client-side interface, libGDX can read files. If we find a nice file format that can be used for client-side interface modding, then it could be worth investigating. Until then, client-side modding is entirely Java-based.
@Phrancis I think we have found a programming language that you know much better than me!
You should definitely write something in ChucK and get it reviewed ;)
Don't think we have any questions
Extra upvotes if it is a good song/melody/tune ;)
Perhaps you could code some well-known tune such as the Zelda intro?
Or make a FizzBuzz-inspired melody?
For each second that is divisible by three, you make a BOING, for each second that is divisible by five, you make a BLEEP, if it's divisible by both you make a BOINGBLEEP
 
1:23 AM
@Phrancis About client-side modding, I think we should do like I often do in coding. First make some different mods using Java-based code, and then find the commonalities between them and start refactoring, and see how things can be made more moddable.
It is probably possible to make it very moddable. Just need to figure out how.
TTGTB
 
2:13 AM
I'm thinking of a FizzBuzz but if/when I do, it's not going to be a printline thing (too easy) so if I can make it sonic/musical and interesting I might end up creating the tag.
I wouldn't be surprised if I could come up with an interesting way to integrate it into Cardshifter, at some point
Who knows what the future holds
 
2:52 AM
@SimonAndréForsberg Blame my ignorance, but I still don't see where JS fits in the puzzle...?
And that^
 
3:06 AM
Omg it works...
now + 5::second => time then;

while ( now < then ) {
    <<< now >>>;
    now + 0.5::second => now;
}
<<< "end program" >>>;
[chuck](VM): sporking incoming shred: 1 (Untitled)...
18703104.000000 :(time)
18725154.000000 :(time)
18747204.000000 :(time)
18769254.000000 :(time)
18791304.000000 :(time)
18813354.000000 :(time)
18835404.000000 :(time)
18857454.000000 :(time)
18879504.000000 :(time)
18901554.000000 :(time)
"end program" : (string)
 
3:58 AM
Hmm very interesting how it works based on time units...
0.125::second => dur beat;
4::beat => dur measure;

now + 32::measure => time stop;
1 => int stepCounter;

while ( now < stop ) {
    <<< "Now: ", now, "Step: ", stepCounter >>>;
    beat +=> now;
    1 +=> stepCounter;
}
<<< "end program" >>>;
...
Now:  67508902.500000 Step:  126
Now:  67514415.000000 Step:  127
Now:  67519927.500000 Step:  128
"end program" : (string)
 
 
4 hours later…
8:16 AM
hey
@Phrancis Make a FizzBuzz song!
@Phrancis The server is capable of running Java 8 and contains the logic, the client is only able to run Java 6 (possibly restricted due to LibGDX) and doesn't contain logic
Our mod is the logic, the Nashorn ScriptEngine only runs on Java 8, so that's how we can still use it on the server
The only "logic" the client part of the mod contains is how to draw stuff and images, most likely, though that's still to be considered, for now in Java 6 (LibGDX-compliant)
 
 
3 hours later…
11:06 AM
@Phrancis what @skiwi said ^^
 
hey
 
12:04 PM
Any lurkers around?
 
12:16 PM
yes
 
need a rubberduck or what?
btw. someone want to write a review about naming and whitespace to the prefix-tree question?
 
No, don't need a rubberduck, yet
 
1:36 PM
Monking!
 
@SimonAndréForsberg I have heard about apple rejecting apps that have a letterbox of any kind. Do you know of a way to detect device information with libGDX? I've been using StretchViewport but it doesn't always look good
 
@bazola what do you mean by letterbox? What kind of device information do you want?
 
screen resolution
letterbox like if you use FitViewport and the device is not the same size as your screen width and height, there is a black border
hey @Phrancis when you are around, I downloaded that chuck and I did code up a version of fizz buzz.. I would post it but I figure you should come up with your own version too. Also, it sounds horrible :)
 
aha
Gdx.graphics. something...
screen width and height should be accessible there
 
cool I will give it a try
@Phrancis if you add the same fizz buzz shred twice, you get something that sounds like a computer having a serious fit
alright, i wrote some seriously crazy sounding fizzbuzz action, so when @Phrancis posts his question I will post mine too
 
2:04 PM
I'd love to hear the audio :)
can you export as mp3 or something?
 
turns out that yes you can but it is an m4a file
 
that works too
 
sent you an email
jeez i made a bunch of dogs angry with this:
// sine to dac
SinOsc s => dac;
// let's turn down gain, for this can be loud and annoying
.15 => s.gain;

// infinite time loop
0.0 => float t;
while( true )
{
    // modulate
    30 + ( Math.sin(t) + 1.0 ) * 10000.0 => s.sfreq;
    t + .004 => t;

    // advance time
    1::ms => now;
}
hurt my ears too
 
2:20 PM
fizzbuzz almost sounded like morse code
 
yeah i noticed that too
but if you play anything fast enough it probably sounds like morse code
 
3:10 PM
@Phrancis Apparently I haven't played HS in February yet
 
Monking
 
Hey!
 
hey @Phrancis and @Marc-Andre
 
@bazola I have not made ChucK do any sounds yet, planning on it tonight
Curious what this line does (mostly the => dac part): SinOsc s => dac;
I've found out for loops don't work with time/dur values, only with ints/floats
But while/do-while/do-until seem to work great with time values
 
3:40 PM
Testing HearthMonitor on a log file of a game I just played... this is not how it works
I play a minion, and in the next step it's gone
It doesn't seem to happen for the opponent though
 
Whoops
 
3:57 PM
@Phrancis I finally find a way somewhere (can't find the tutorial anymore) to only have 1 template and include the content. So we would have the same number of html files, but no more template duplication. Since now each files would only contain the content.
 
> Added missing resources.
 
So it would be like a template within a template, or it just wouldn't have all the references to the controller in each HTML file?
 
> Added Enraged and Windfury effects to the GUI.
> Armor amount is now shown for the hero in the GUI.
 
In fact, we would have one single template file: like template.html that would contain the main template ( top bar, footer, side bar). In that file, there would be a content div where we will insert the content depending on a variable sent by the controller.
 
well, I am dealing with multiple resolutions now @SimonAndréForsberg. I put this in the Game:
this.STAGE_WIDTH = Gdx.graphics.getWidth();
this.STAGE_HEIGHT = Gdx.graphics.getHeight();
and then I have to have this in my code:
    this.tileSize = (int)this.game.STAGE_WIDTH/this.gameWorld.numTilesPerRow;
    //deal with horizontal
    if (this.game.STAGE_WIDTH > this.game.STAGE_HEIGHT) {
        this.tileSize = (int)this.game.STAGE_HEIGHT/this.gameWorld.numRows;
    }
then you can see all the tiles no matter what
 
4:09 PM
@bazola this and "static case" (STAGE_WIDTH) usually don't mix well
 
yeah i need to change that
it couldn't be static anymore because of the call to Gdx
 
@Marc-Andre Ohhh, so it would be more like the "content" pages would be injected into the template, rather than the various templates being injected into the content pages?
 
@Phrancis That is the spirit of the thing! It make a lot more sense and now we would have only one place to modify the template !
ATM if we want to add right side bar into all the page, we need to modify ALL the pages, which is not what is desired.
 
[skiwi2/HearthMonitor] build #30 for commit abc1af33 on branch develop passed
 
@Marc-Andre That does make more sense! Wouldn't it just be a matter mostly of rewriting the references in the controller? If I can help with anything I'd be more than happy to
 
4:24 PM
@Phrancis Thanks for your offer but it's a minor change at the moment. The major things to do is to remove the template in all the files :P
It will change how we write view though!
 
@Marc-Andre OK, well let me know when you want the templates removed, I can certainly handle that part
 
Well it will be a bit hard to work both on this! I make my own branch and add the tests at the same time (since I risk to break things ahaha)
 
4:40 PM
@bazola Available as rubberduck on games for a moment? ;)
I'm wondering about items in RPGs/MMORPGs
The game I play now (FFXIV) has a few items available (item lv 100, 110, etc.) but once you hit the max item lv. 135 then every weapon is exactly the same, there's no way to customize it
I also played another game earlier (Granado Espada) where there were also different item levels, but you needed to enhance, enchant and socket your weapon, it was always unique... The monsters had a certain racial status (daemon, undead, etc.) and a weapon would max be 40% atk 100% daemon as enchantment, but often you would get 30/90 and be happy with it
Also FFXIV only has interesting, 4-, 8- or 24-man content, so your damage output matters little in the end
whereas in the other game there was a lot of solo stuff and competitive world bosses, where you really needed every point of damage
I'm thinking that the approach of Granado Espada is better and want to add that to my game, what are your opinions? I think one reason I always wanted to make a new weapon in GE is because your current one was never perfect, it actually mattered for solo content how fast you could clear it and was useful on world bosses
To the same point I'm wondering about how many items you want (traditional weapon, head, chest, legs, feet) or something simple as weapon + armor
In the former upgrading a piece is rather meaningless, whereas in the latter it would improve you a lot
</end_of_rubberduck_wall_of_text>
 
@bazola technically, it can still be static, just not static final.
 
4:59 PM
@Marc-Andre Cool, as soon as you get it working in your branch just let me know and I can update the other HTML files
 
5:20 PM
@skiwi the game i played similar to that was Diablo 2. You were always chasing after a more perfect version of the item. I definitely like games with random item generators
 
But with D3 1.0 the random generator was not very good at making relevant item. So you need to be sure that you're random items generators do make viable items.
 
5:47 PM
@skiwi what kind of setting are you thinking about for your MMO?
 
back
@bazola Diablo 2/3 and Torchlight 1/2 also work for that, yes
@Marc-Andre In the case of Granado Espada you had an item (say a weapon) and enchantment chips for that weapon level, and normally you'd farm/buy like 100 and then try to get something useful
@bazola Setting, in what context?
 
@skiwi buying/farming is not that important in regards to what I wanted to point. If the dropped have some non sense like a sword for strength character only with intelligence, then it will greatly reduce the fun of farming!
 
@Marc-Andre I get your point, but my point is that with fully random it's okay as long as you can easily reroll it
For things like Diablo it absolutely needs something viable for loot that only occurs sometimes
 
Yeah something like this, either your random as some sort of guarantee to create relevent items, or you can reroll stats.
 
Example of a weapon in the that game
the max on that weapon was 50% / 100%, so still far way off
 
5:57 PM
D3 now offer to re-roll one of the stats of your items (locking the item), so if your item is perfect except for one stat you can use this to get something even better
 
chance to get any yellow stat was even only like 5-10%
The point is that all the blue and yellow stats there are random, if you "reroll" the item, you lose all and gain new ones
Was quite interesting
 
@skiwi setting as in scifi or fantasy etc
@skiwi You always controlled a part of characters in that game, right?
 
@bazola Ah... good one, I honestly haven't thought about that yet
@bazola You always control a team of 3 characters (some exception where you could only use 1 character), in a RTS-like way (click-to-move) and had those 5 skills associated with a certain stance
 
@skiwi i did play that game for a little bit but I didn't get too heavy into it
 
@bazola Oh wow, that's really surprising that anyone I haven't met through that game has actually played that game
around what time have you played it?
 
6:03 PM
what I really miss from gaming these days is that in a game like Diablo 2, you could get stats on an item that added to the level of one of your skills, and then by doing so you could max out that skill to the extreme, and even add abilities to it such as summoning more skeletons or shooting more lightning bolts
@skiwi probably like 2006 or 2008? it was back when I was done with WoW and trying out every new MMO
 
@bazola Those things are nice, yep
@bazola Could've, was it Sword of The New World or maybe it was from another provider
If only there was a somewhat capable developer/publisher and strategy, then it could've actually become really popular
Not the Pay-to-win mess it's now
 
@skiwi games these days are all about just increasing your base stats, or maybe some bonus stats, but never about the stats changing the way that you play very much
@skiwi i think these games are pay to win because thats the only way that anyone would actually pay money for them (in order to be the toughest character vs a bunch of free to play people that are worse)
 
@bazola I find that D3 has done a good job of influencing build based on the item that you gain from playing.
 
they get a few whales to drop 100s of dollars a month each, and they can keep the servers on
 
Hence why I only play mainly sub-based MMORPG's nowadays :p
For the game I intend to start with I've been thinking about a payment model, I'm still thinking to start it as free to play with donation possibility, don't really have interesting monetization plans without it harming the actual development
 
6:08 PM
@skiwi free to play MMO means that you will have to pay money up front to get it going and run the servers
 
I was into MMOs in the past, but I've quit them because they are such a massive time sink... I prefer to play console games like racing and such that you can just pick up and play for a bit then go do something else
4
 
@bazola True, I'm thinking about some cloud solution though, but for that I do need some guaranteed revenue indeed
@Phrancis That actually was the case with Granado Espada, I'd often find a good location to put my characters on and made them auto-attack (just a function of the game, not a bot) and there also was a pet that automatically looted items for you
Only at some point for a period of a few months it was actually more profitable to be afk than to be actually active in the game doing stuff, "Oops"
Seems like I have enough reasons to actually make something... one day
Not as fast as @bazola can ;)
There's also HearthMonitor which absolutely must get a release, eventually
 
@skiwi You know, before you embark on creating a new game, have you considered getting back into Cardshifter for a while?
4
 
@Phrancis When the time is right... I don't know what exactly needs to be done right now
 
I think the biggest things right now are libGDX which Simon is doing, and modding support, which I don't think has much to do with libGDX at all
 
6:23 PM
I still intend to be able to load effects via xml/json/java/javascript (unless @SimonAndréForsberg has finished that, as he was also working somewhat on it?), I absolutely need it for HearthMonitor eventually
I'm trying to maintain a balance between programming things for fun and them becoming some sort of chores
Unfortunately I seem to get fun from making really weird things
(See last JSON-related question)
 
@skiwi feel free to work on loading effects from some sort of file, or on one of the open github issues about JavaFX, or make a brand new mod for Cardshifter, or some other github issue...
 
30::minute => dur lunch;
now + lunch => time endLunch;
while ( now > endLunch ) {
    1::minute +=> now;
}
<<< back from lunch >>>;
 
@skiwi i think one of the secrets to programming things fast is to design and code at the same time
 
@SimonAndréForsberg I don't know if there's any point in working on the JavaFX client?
@bazola You probably don't care about small hacks you make to get things working fast... I tend to care too much
 
@skiwi there are some bugs + minor but useful improvements that there's definitely point in fixing.
 
6:35 PM
@skiwi i think that its all about trade-offs. if I think that whatever I am doing is too hard to understand, then i will definitely make it a point to refactor it
 
@SimonAndréForsberg but we are going to shut off the JavaFX client, aren't we?
 
@skiwi I don't know.
 
@SimonAndréForsberg do you know how I go about making unit tests for libGDX?
 
@bazola yes! See my Connecting-Blocks repository for that. It isn't very straight-forward.
 
who needs unit tests anyways?
 
6:47 PM
okay I will take a look. I've never used JUnit before or done unit tests on java
 
@SimonAndréForsberg Oh, right
 
@bazola LibGDX is a bit more tricky to test than regular Java programs because if you want to do anything that has to do with LibGDX, you almost certainly need a LibGDX context, which I was able to create in my Connecting-Blocks tests
 
@bazola import static org.junit.Assert.* you'll need this trust me
 
 
1 hour later…
8:03 PM
@SimonAndréForsberg I'm not seeing any testing stuff in here
 
@Marc-Andre ty
 
oh, develop branch apparently...
I should merge into master more often
 
i mistakenly thought that when it said This Repository: Search at the top, that it was actually going to search the repository and not the branch
 
@RunWith(LibGdxTestRunner.class) is the important part, and of course the test runner class itself
if you want the test to start your actual application, that is a bit different. but when testing, you normally don't want that.
 
8:22 PM
its having trouble finding some imports:
 
did you add the junit library in your project ?
 
ah, there's some gradle dependencies missing... hold on
meanwhile, here's something you can vote for, libgdx-related answer on SO:
0
A: Drawing table borders in libgdx 0.9.7

Simon André ForsbergThis is based on libGDX 1.5.3: A solution to this is to use a NinePatch as the background image for your Table. NinePatch patch = new NinePatch(new Texture(Gdx.files.internal("background.png")), 3, 3, 3, 3); NinePatchDrawable background = new NinePatchDrawable(patch); Table table = new Ta...

include line 92, 93, 102-106 in your parent build.gradle
 
@SimonAndréForsberg thanks. I was looking at build.gradle files but I didn't find that one
 
and put your source code for the test in another directory
I put mine in core/test
if you put it elsewhere, be sure to change the path in build.gradle
 
9:10 PM
@SimonAndréForsberg you are right that this is a pain
 
@bazola any specific problem? What is it you want to test?
 
it seemed like it was finding the necessary imports but then I moved stuff around and it can't find them again
i got it this far:
[sts] -----------------------------------------------------
[sts] Starting Gradle build for the following tasks:
[sts]      test
[sts] -----------------------------------------------------
Configuration on demand is an incubating feature.
:core:compileJava UP-TO-DATE
:core:processResources UP-TO-DATE
:core:classes UP-TO-DATE
:core:compileTestJavawarning: [options] bootstrap class path not set in conjunction with -source 1.6
/Users/baz/Documents/walkaboutMMO/core/Test/TestTradeBulding.java:10: error: class TestTradeBuilding is public, should be declared in a file named TestTradeBuilding.java
 
@bazola How is the file called in which you have the class TestTradeBuilding?
 
@skiwi yeah it was missing a letter
 
So issue solved? :)
 
9:16 PM
yeah that pretty much fixed it, still needed to import junit again though
seems to be working now and reporting failed tests:
1 test completed, 1 failed
:core:test FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':core:test'.
> There were failing tests. See the report at: file:///Users/baz/Documents/walkaboutMMO/core/build/reports/tests/index.html
 
Is that a good or bad thing? :)
 
good thing since I set it up to fail on purpose
 
nice
Let's hope my GUI wants to show things again
 
hmm
I put in a System.out and it doesn't show up, i guess because the test is over so fast and the program shuts down?
 
Yaay, minions stay on the field finally!
@bazola Sysout should normally always show up, somewhere in the test runner
Oops ^
Eh
Stuff doesn't appear from the field anymore
Also carddata is not always loaded :/
 
9:30 PM
:core:compileTestJavawarning: [options] bootstrap class path not set in conjunction with -source 1.6
/Users/baz/Documents/walkaboutMMO/core/test/TestTradeBuilding.java:21: error: incomparable types: Class<CAP#1> and Class<Building>
    	assertTrue(tradeBuilding.getClass() != Building.class);
    	                                    ^
  where CAP#1 is a fresh type-variable:
    CAP#1 extends TradeBuilding from capture of ? extends TradeBuilding
it lets me do tradeBuilding.getClass() == TradeBuilding.class
 
@bazola That's a rather weird one...
You shouldn't be done that though, do this:
assertEquals(Building.class, tradeBuilding.getClass());
Checking with == resp != won't work for objects anyway, not sure about class literals though
I didn't know you cannot do == / != check if objects are both of different type
The problem up there is that tradeBuilding.getClass() == Class<? extends Building>, whereas Building.class == Class<Building> and apparently that's not allowed
Scratch that, that check is allowed ^
 
:core:compileTestJavawarning: [options] bootstrap class path not set in conjunction with -source 1.6
/Users/baz/Documents/walkaboutMMO/core/test/TestTradeBuilding.java:20: error: incompatible types: Class<TradeBuilding> cannot be converted to String
    	assertTrue(TradeBuilding.class, tradeBuilding.getClass());
    	                        ^
/Users/baz/Documents/walkaboutMMO/core/test/TestTradeBuilding.java:21: error: incompatible types: Class<Building> cannot be converted to String
    	assertFalse(Building.class, tradeBuilding.getClass());
 
@bazola Use assertEquals :)
 
@skiwi haha :) nice catch
 
You'll learn to spot them after being bitten by them for some times :)
 
9:38 PM
here we go:
@RunWith(LibGdxTestRunner.class)
public class TestTradeBuilding {

    @Test
    public void testTradeBuildingInstance() {
    	TradeBuilding tradeBuilding = new TradeBuilding(new Random());
    	System.out.println(tradeBuilding.getClass());
    	assertEquals(TradeBuilding.class, tradeBuilding.getClass());
    	assertNotEquals(Building.class, tradeBuilding.getClass());
    	assertTrue(tradeBuilding != null);
    }

}
 
What exactly do you need the LibGDX part for though?
Or does TradeBuilding involve some LibGDX magic?
 
well I suppose I don't, but I will possibly be testing those classes later
 
Ah okay
 
@skiwi no its just part of my game model
 
@bazola The assertTrue(tradeBuilding != null) is not useful, as calling tradeBuilding.getClass() would throw the NPE, also you'd normally use assertNotNull
And when tradeBuilding.getClass() equals TradeBuilding.class I don't think it can also equal Building.class
Unless TradeBuilding.class equals Building.class, but then I think more things than one have broken down
 
9:42 PM
well my little unit test was actually partly for testing the results of java polymorphism before I move forward with the rest of the building classes
i wasn't sure that I was setting things up properly
 
LOL that new Mimiron's Head animation :P
I want that cool as in Cardshifter ;)
TTGTB now
 
night @skiwi
 
10:44 PM
TTGTB here as well
 
11:02 PM
Night!
TTQW
 
11:59 PM
RELOAD!
[retailcoder/Rubberduck] 8 commits. 9 opened issues. 7 closed issues. 6 issue comments.
[skiwi2/HearthMonitor] 3 commits.
 

« first day (207 days earlier)      last day (3373 days later) »