« first day (2644 days earlier)      last day (2672 days later) » 

00:00
I think I just about broke even with my $300 3D printer 2 years later with all the little broken pieces of plastic I replaced on chairs, windows, bed, coat hangers, misc brackets, etc. Not even counting the puzzle-solving entertainment value of it.
@Bálint 20:02 Monday here (Toronto)
@DMGregory Yep, it's tuesday here
Neat :) I hope the future is bright and full of potential. :D
I know for a fact the future has candy.
My cousin lives in Toronto :P
Been there a couple of times. It's a big city!
00:21
@DMGregory okay, the guy said something false: he said the cache changes the result.
It doesn't. What will change the result between executions on the same machine is that some bad hardware drivers (eg: printer driver) changes the rounding mode.
Or if the compiler mixes x87 and SSE float operations in unrolled loops and one unroll uses x87 while the other uses SSE or a different mix of both.
Not being an expert on hardware myself, I'll take your word for it.
Unless there's a really old machine I don't know/care about :P
At least on x86, ARM, PPC, and MIPS the cache doesn't affect the FPU results.
@StephaneHockenhull I've been looking a little at it lately, do you know if it's possible to tell the CPU to make SIMD operations in certain contects?
contexts
You have to tell the compiler that. the CPU only executes what the compiler wrote.
Ok, this is very strange
00:30
GCC will try to pack SIMD but last I checked was 4.x, I still have to look at GCC 5.x's compiler output.
I have a list of integers, e.g. 1, 2, 3, 4
And I want create a number out of them, e.g. 1234
I tried doing
for (int l = 0; l < comb.size(); l++) {
    num += comb[l] * pow(10, l);
}
But this somehow returns one less if the length of the number is greater than 1
int nums[] = {1, 2, 3, 4};
int result = 0;
for(int n : nums) { result = result * 10 + n; }
@StephaneHockenhull I'm using VS. I'd like to improve vector3 operations if at all possible. I don't know if the compiler uses SSE(2) or not...
@StephaneHockenhull That' a lot better
thanks
I shouldn't code at 1 AM
@AlexandreVaillancourt What I have seen with SSE (I think it was SSE1 when I tested it) was that in order for it to load into an SSE register I had to store all vec3 as vec4 and then I had speed ups on very small datasets that fit in the L1 cache but anything larger (like skinning a mesh or particles) the penalty of the wasted 4 bytes (133% size) caused enough cache misses to not be worth it.
the memory/L3/L2 bandwidth cost was more than the SSE gain.
So unless the compilers got much smarter and can manager reading vec3s into SSE registers it wasn't worth it.
00:37
@AlexandreVaillancourt
This is a pretty nice overview on c++ SIMD
5:40 is where the actual coding begins
How do I link a tag in a post like shown here :gamedev.meta.stackexchange.com/questions/2550/…
@StephaneHockenhull Ok, I have a nice test app at work with actual data I'll test on. Maybe in that specific case it will be a speed up, maybe not.
@TheMattbat999 => [ tag: hello ]
without the spaces
@Bálint ok
@Bálint Thanks! I'll take a look :)
I have the source of GML too which I can use.
00:43
@AlexandreVaillancourt So the compiler will use SSE but in scalar form when working on vec3 which isn't too bad because the FPU is pipelined and will run all 3 scalar operations *almost* in parallel.
If you want to try getting the compiler to issue full SIMD operations you have to copy your vec3 into a vec4 first, then operate on that (eg vec4 = vec4 * mat4) then store the result back as vec3. which *might* be faster.
According to the profiler, the dot product method is "hot"
But most of the time in practice I've seen that the memory latency is such that neither have impact compared to the CPU's speed.
Can you inline it?
00:55
SSE is not great for manipulating vec3s.
The trick with SSE if you have massive amount of vec3 is to rearrange your data so that all the Xs follow one another, Ys, and Zs, in different arrays. So you can process 4x X, then 4x Y, then 4x Z then write the result.
@StephaneHockenhull It's a template function, so I guess it is. It's not explicitly inlined.
@StephaneHockenhull I don't think it's possible in this situation.
const float *x1;
const float *y1;
const float *z1;
const float *x2;
const float *y2;
const float *z2;

float *dots;

for (int i = 0; i < size_div_by_4; ++i){
((vec4 *)dots)[i] =
((vec4 *)x1)[i] * ((vec4 *)x2)[i]
+ ((vec4 *)y1)[i] * ((vec4 *)y2)[i]
+ ((vec4 *)z1)[i] * ((vec4 *)z2)[i];
}
megafastlotsofSSEsupergigaflopdotproduct();
When they boast that SSE can to a lot of dotproducts per second that's how the data has to be arranged :P
So I'm doing 4 dot products at a time. That's not practical in normal game situations.
Might be doable in a particle system.
Hmm, ok, that's an interesting take.
because for SSE to really work the data has to be aligned to 16bytes. vec3s don't do that.
So SSE is great for photoshop dealing with vec4 RGBA floating point pixels for example
I managed to cut off 10% in time of an algorithm by changing how the data was placed in memory, but the "rearrangement" overhead takes 10% of the time, so in the end, I did not gain anything. But it was worth try trying.
01:04
that's pretty much the result I got every time I've tried to be SSE-friendly too
Oh I was only trying to be cache friendly :)
(which worked, I had a lot less last level cache misses and references)
being SSE friendly would be the next step, but not now, I guess. I have other things to do at work.
01:18
Grrr.... post up for over an hour and no activity...
@TheMattbat999 GDSE is slower than SO :)
@AlexandreVaillancourt what's SO?
@TheMattbat999 Stackoverflow
@AlexandreVaillancourt oh. It seemed familiar... now I feel rather silly...
01:27
@AlexandreVaillancourt I have also began work on a new project (has no name) but it is where you defend against an onslaught of space ships. You buy rotate speed, shoot speed, and health bonuses in the store witg coins obtained from baddies
01:40
@TheMattbat999 Nice!
Is it fun?
@AlexandreVaillancourt ain't finished yet
@TheMattbat999 Ah!
@StephaneHockenhull Maybe our dot product is hot because it's not aligned? But some of the calculation is made with data on the stack, so I not sure how it works there...
If the loop is unrolled and the dot product inlined it shouldn't even show in the profiler unless it's so spread out that it confuses the profiler into thinking the entire loop is the dot product function.
@AlexandreVaillancourt almost though. Just gotta test gameplay and add the shop
@TheMattbat999 I've got an idea for the terrain thing. Let me give it a quick test to see if it works...
01:53
@StephaneHockenhull I seem to be having trouble profiling...
Hmm, first off, @TheMattbat999, did you get an error about too many texture interpolators when using the terrain hole shader you linked?
02:12
@AlexandreVaillancourt you want to profile with the compiler-optimized version, but also the compiler-optimized version makes inlined functions interleaved / blended into the calling function and that confuses the profiler. you may have to go up one on the callstack to figure out what's the hot function.
@DMGregory in all honesty, I haven't tried the hole shader thing because I didn't want to waste my time on it if I couldn't get the collider thing to do right :)
@AlexandreVaillancourt tested it. It is fun. Just gotta add the store....
So the dot product may not be the hot part, it might just be the big loop that has the dot product blended into its code.
@StephaneHockenhull yeah; for some reason, I don't get the little highlights VS used to give me. I remember the .dot method being redder than the others, even if they were inlined.
The dot product is not in a loop per se. The part of the code (from a particle system) computes the propagation of impulse between particles.
@TheMattbat999 Cool!
@AlexandreVaillancourt it is challenging though, since without upgrades you rotate somewhat slow
@TheMattbat999 Yeah, that's the point of a game!
02:18
@TheMattbat999 Ah, cool. Personally I prefer the method of detecting the hole parts in the vertex shader and setting the position to NaNs. That chops out whole triangles without alpha blending whatnot, so you don't pay alpha blending/testing cost on the whole terrain. It leaves a jagged edge, but usually you've got meshes skirting the rim of the cave entrance anyway.
@DMGregory ummm... ? You said "chopping" out vertexes. How do you do that? (Please dumb it down to the lowest level possible. I am still a little noobish to some of the more complicated stuff)
@AlexandreVaillancourt gotta get the shop going, then I will put some screenshots up on here!
@TheMattbat999 :)
You sample your hole texture (or generator function) in the vertex shader. If that returns "this should be a hole" then you overwrite your projected vertex position with 0.0f/0.0f
@StephaneHockenhull But yeah, there are no mention in the 'functions' of the dot method. It's inlined for sure.
@DMGregory I cannot believe you aren't a mod already! 1st choice, hands down. I really appreciate all the help you have given the community, especially me
@AlexandreVaillancourt You're on my list too :)
02:23
Aw, I appreciate that! Being a mod isn't about answers though - I'll keep doing that either way.
And others here have more community management experience than I have, so definitely think carefully about your votes. :)
@DMGregory you have also helped me reform my questions in the past as well
@Evorlor Thanks!
...The primitive assembly step can't make a triangle with one of its is NaN, so it aborts the whole triangle, and you don't pay any rasterization or blending cost in the hole. And you get to keep your shadows. :)
"when one of its vertices is NaN" I meant to say. Looks like setting the vertex to NaN aborted it right out of my sentence too! XD
@DMGregory ok.... I will have to look more into this.... tommorw however. I will probably be going to be in a few minutes and there is 0 point in trying to start on this tonight :)
Gotcha. I'll finish my test so with a little luck you'll have at least one option to check out the next time you're back.
02:27
@DMGregory unless you're on a 3DS. Then the GPU just goes completely comatose and the game freezes waiting for the GPU to finish but it never does.
Good night all!
3
Q: Why is there a white border around my app icon?

EvorlorI am developing an Android app in Unity. I have two versions of the app on my phone, both with identical icons. The white border is only on the newer version of the app. I am using a Google Pixel. Why is this there, and how do I get rid of it? Is this tied to my phone or my app? If it is tied ...

@DMGregory https://www.3dbrew.org/wiki/GPU/Internal_Registers#Overview
> Invalid GPU command parameters including NaN floats can cause the GPU to hang, which then causes the GSP module to hang as well.
@AlexandreVaillancourt night
And then Stephane spends weeks debugging the 3DS port trying to figure out why the game is crashing and where do those NaN come from. (actual thing that happened)
/me twitches
02:31
Hahaha, good to know. Yeah, I think I've mainly seen this trick used in PC / non-portable-console titles.
@DMGregory out of curiosity, how often are you on se?
I've seen another GPU treat NaN as zeros or infinities. But I can't remember which. But that meant polygons going weird places.
I'm usually scanning it at least a couple of times a day (more if I'm anxious - I like finding problems I can solve when I'm unsure of myself). I'm usually not that active on chat but I'm trying to be more present so I'm not out of touch with what's happening.
Good to know. It might then be an artifact of console dev, where we know with certainty how the GPUs we're targeting will react since they're limited to only a few distinct models.
Speaking of NaNs, I'm still watching the guy's videos on posits (floats alternative)
no NaNs
He says "you just stop computing and throw an exception" ... yaaaa except that doesn't work with GPUs / GPGPU computing.
03:02
Yeah, that was my thought on the video too.
As we know though, GPUs already do quirky things sometimes with operations that hypothetically should NaN, treating them as zeroes or infinities, so those might be acceptable workarounds to keep things flowing.
For a lot of purposes, an infinity gives a signal similar to a NaN ("something outside normal parameters happened"), especially since posits are less eager about rounding valid-but-extreme results to infinity than floats are.
But yeah, I still don't really expect posits to take off. The math geek in me finds them thrilling, but such a huge amount of hardware, software, documentation, and expertise is already committed to floats.
And posits are very complex to implement in hardware. They got variable bit size for both the header bits part and mantissa size.
That is really difficult to implement in hardware.
I think it'll take many more transistors than regular floats
Like, sure, you can make a bunch of 256x256 tables for your 8bit x 8bit posit operations. But when you get to 32bit posits? A table? really?
03:26
He talks a bit about the die space issue, but I haven't gone through the steps to check his math. ;)
He's got this top part with the repeating bits which you need to count the bits before the zero in order to figure out how many bits of mantissa there is. That is pretty heavy in transistors.
Again, not being a hardware expert, I'll defer to your judgement. I found the video fascinating mathematically but I'm certainly not trying to evangelize the concept. ;)
I find it very interesting tho. The results look much better than floats
Especially that math part with the elongated triangle. That's an issue I've hit with floats a lot.
Point. For all their problems though, I do have to hand it to floats that they're "good enough" for an impressive range of problems. I more often encounter errors that are algorithmic, rather than intrinsic to the number representation, once basic precautions are taken like re-centering simulations that stray away from the origin.
good enough is the key here :) And he's right about video games. 99.9999999% of the time floats do the job just fine for us :)
03:41
So far I've only hit two situations where I had to reach for a double.
And that's given that my current project is set in outer space. XD
are you combining it with an integer sector offset vector?
I'm not doing that math myself, so I can't speak to how it's implemented under the hood. I'd suspect that's the crux of it, plus or minus some details.
gotta go. getting late. cya
Have a good night!
03:58
Does anybody have a working project with Gradle and libGDX in Android Studio? I'm following (gamefromscratch.com/post/2014/03/26/…), but I get an out of memory exception when dexing (even with High priority on Android Studio).
 
1 hour later…
05:05
Any working set of steps to make a libGDX project on any free IDE that includes steps for Android and Desktop would be great. I tried Google and did this for a couple days now. I forget what Eclipse did to fail me, but I don't think I had good project instructions.
 
2 hours later…
06:47
Solved my problem :)
user92578
07:11
Nice
11:48
@DMGregory read your post, but I will not be able to try it until tonight. Thanks though!
12:06
Is that too broad/unclear?
-1
Q: Would an unbeatable opponent ethical for a game?

Camo_manWould it be unethical to create an A.I. bot that has full advantage of ALL of the game mechanics? Would it be better if it was optional and gave full disclosure before it let you face this opponent?

Good luck with it! So far in my tests it seems pretty well-behaved, but I haven't pushed it super far yet.
Speaking personally, I don't understand what specific ethical objection they're raising. I think there's some baked-in assumptions about what kind of game we're talking about (ie. that an opponent who doesn't deliberately neglect good moves would be unbeatable), and relatedly what the player's expectations of the game are.
So, I don't think I could write a good answer myself until those assumptions are made explicit. Until then I'd say it's not unethical in the general case of all games, but can't rule out specific cases they seem to have in mind.
Voted to close as unclear.
I think we should try and watch for these questions. They tend to hit the HNQ, but they're very broad. They're not formulated to answer a specific issue.
@AlexandreVaillancourt probably
@AlexandreVaillancourt I flagged as too broad
@TheMattbat999 Good!
user92578
12:21
that dude just wanted to get on the "ethical AI" question rep train
@AlexandreVaillancourt also finished that game from yesterday and named it "The Defender". Just gotta go make sure it works properly
user92578
If I have a std::map<somekeytype, std::vector<sometype>> myMap;, could I just do myMap[key].push_back(sometypeInstance);? I.e. does the indexing initialize an empty vector to the map?
user92578
Or do I have to first check if a key exists, and if not, assign an empty vector to the key, and then add to the vector?
@Tyyppi_77 Yes, if myMap[key] does not exist, it will create it.
user92578
aight thanks, that makes things a lot simpler :)
12:29
That's why you can't do if( !myMap[key] ) doSomething();
Yes, for some things :) If you want to check if an element is there, it's a bit annoying. I used to auto it = myMap.find( ITEM ); if( it == myMap.end() ) doSomething(); but I found the existence of count: if( myMap.count( ITEM ) == 0 ) doSomething();. This made my day.
user92578
I think I still use that find pattern
I am lost
user92578
I think I'm about half way into removing the unnecessary comments from my codebase... it's getting a little stale with this level editor code that isn't very pretty
@Tyyppi_77 I don't use comments that much
user92578
I somehow got into the terrible habit of overcommenting everything, and lately it really started annoying me, so I'm now cleaning up
user92578
12:36
There's a lot to clean though, not exactly a small codebase anymore
haha no. Code doesn't lie. Comments do. Better have clean code and less comments.
user92578
exactly
user92578
12:59
always nice how actually answering stuff gives me rep :)
Nice edit to that title, by the way :)
user92578
thanks! I'm also working towards the refiner badge :D
user92578
(would've edited in any case though)
Oh, yeah!
How many more do you need?
user92578
lol 29
13:09
Ah, well that's something to aim for hehe
user92578
yeah, I like the badge progression thingy, it provides a nice motivation for doing stuff
If I manage to get my Sportsmanship badge, I'll have a candidate score of 30/40 :P
Yep, and there are lots of things to tackle to get a badge, so that's nice!
At one point, I'll have to ask questions.. :/
user92578
Is there any way for me to see what my candidate score would be?
user92578
Yeah question badges are hard :D
@Tyyppi_77 I don't think there's an easy way, but there are ways to figure it out. Basically, there is a set of 20 specific badges that count towards it: one point per badge, then it's 1 point per 1k rep (up to 20k).
50
A: What are the details on the "candidate score" which shows during an election?

Shog9The Candidate Score can range from 0 to 40, and is calculated as follows: 1 point for each 1000 reputation up to 20,000 reputation for a maximum of 20 points. 1 point each for Moderation badges - Civic Duty, Cleanup, Deputy, Electorate, Marshal, Reviewer, Sportsmanship, Steward - for a maximum ...

user92578
13:13
user92578
Just trying it out
Neat!
Keep in mind that the database is updated only once a week (I think it's on Thursdays but I'm not sure), on Sundays at 3 UTC
user92578
yeah it's two less for you than it should be
Yeah, I got to 11k yesterday and got a badge 2 days ago, so it makes sense.
user92578
ah
13:25
I got a score of 13/40, probably missing 1 point from rep
user92578
I got 14 I think, which should be accurate
14:53
capped rep is in there?
that's an odd metric
doesn't scale with the size of the site
15:35
1
Q: No intellisense with with Unity 5.5, Visual Studio Code integration, OSX 10.12.1

AlmoI get this with the listed software. It doesn't recognize object types and I can't use reference-finding. I have the Omnisharp plugin installed and updated. Just wondering if this is supposed to work properly yet. I'm opening it with Assets->Open Project In Code.

Still annoys me that VSCode doesn't handle space in paths properly.
The score for candidates includes how many times your rep was capped, it looks like
What part tracks that?
user92578
No it's 1 point per 1000 rep, capped at 20k (= 20 points)
ooh
it was named poorly
15:44
@Almo That is hilarious
:D
altho I would have preferred if we never had enabled spaces in paths/filenames. It's hell with shell scripts escaping.
 
1 hour later…
17:03
It's weird that the activity page is on a different day phase than the rep cap itself.
Oh man, trying to decide on who to vote for in the mod elections...
with 3 votes and 4 candidates, it's more like who NOT to vote for. :D
I know, right? Feels like a kid picking a parent during a divorce.
gotta pick between daddy, daddy, daddy, or daddy.
I'm going to vote based on who is most entertaining in chat
hahah
17:06
Ah, the popular vote, always a good choice :D
you should NOT vote for who is most entertaining in chat, because after becoming mod they will be less entertaining ;)
@Almo 5 candidates :)
oh sorry
user92578
(So really just 2 out of 4)
I thought about highjacking that viral Zelda answer in an attempt at sniping the election :D
user92578
17:07
lol
@Almo Don't be, you did not tell who you considered not to be a candidate, so no harm done hehe
I would have done that if I could have gotten the mods onboard to disqualify me without actually banning me :D
@almo that's actually a really good point--I know modding resulted in self-restraining my own SE behaviors
@AlexandreVaillancourt :D
But I don't think the system would have allowed it without ruining the election anyway
17:11
@StephaneHockenhull I don't know if mods can disqualify someone.
@Almo after becoming a moderator i definitely spent less time in chat -- not on any conscious level, but because out of all the time and energy i'd enjoy spending on stack sites total, a % suddenly existed that involved flag handling, meta, cleanup, etc.
patrolling the front page became a bit more involved than before: my actions were unequivocal so if explanation was going to be left for why a question was closed, i ought to be providing it myself as i close the question, instead of just close voting & hoping someone else explains.
OTOH, leaving those explanations every single time meant a lot to site members:
21
Q: Moderation-related comments seem friendlier recently!

SirTechSpec(This is related to one of my previous posts on moderation, but I didn't think it would be appropriate to add another answer there.) Recently I've noticed that when comments are deleted, questions (particularly questions from new users) are closed, etc., the mods (diamond mods and everyone else)...

Definitely voting for Alexandre b/c in his statement, he brags about making un-fun games in a professional capacity. (Un-fun games are an important and all too often overlooked sector.)
i drew on my ballot slip. does that invalidate my votes?
@DukeZhou Thanks :)
@DukeZhou my second and third preference were very closely tied, it was tough
17:19
@doppelspooker I'd like us to get there too :)
@doppelspooker Depends. Does it respect the Be nice policy?
one thing our site members have gotten into the habit of doing is that for every new user we spot we leave a welcome comment, something like this:

Welcome to RPG Stack Exchange, (user)! Check out our [tour] to see how things work here. [Constructive request for clarification, or explanation that you're voting to close, or etc]. Also, when you reach 20 rep, you can join us in [chat].
In comments, [tour] and [chat] will magically parse as links to those respective site areas.
The [chat] tag will not directly lead to the correct room, though (at least here, one only have one)...
If they don't have a username for me to use (e.g. they're user2842883 or their name is MegaButtFart and I don't feel like typing that out) I'll just say "Welcome to RPG Stack Exchange!".
@AlexandreVaillancourt It leads to the overview of chat rooms, which is about as useful, and most everyone winds up in the most active room i.e. this one. chat.stackexchange.com/…
@AlexandreVaillancourt Probably! It was trogdor burninating the ballot paper title.
how to answer "get better at programming" to a question?
Flag as off-topic "how to get started question"
Oh wait, I misread
I 'unno, what question?
17:30
@doppelspooker I think it's all right, then :P
@kevin the specific question is "How to add multi-core features to a game engine that was created to run on a single core?" ... as I see it one obvious answer is "run physics on a second thread" to which OP replies "give me code example plz" which is resulting in the question being downvoted.
Oh, vote too close as too broad
user92578
I usually just upvote Josh's answer and downvote the question
2
lol
@Jimmy I don't think it's as simple as that in this situation :) I voted to close as too broad.
17:38
eh, I don't think it's too broad. I agree with the sentiment in the comment here gamedev.meta.stackexchange.com/questions/2115/…
user92578
TBH if the answer is "get better at programming", the question is probably too broad
the answer to the question is not "get better at programming" the answer to the comment "please show me some code or a tutorial" is "get better at programming"
@Jimmy whilst "get better at programming" is an answer, it is never the solution. learning the solution to various problems is how we get better.
so, answer with that basically never, unless you can do so alongside providing a solution.
@doppelspooker sorry for missing context. The actual conversation in question is more liek "How do I do X?" "Here is a one-sentence explanation of one way you can re-architect your project to do X" "can you give me some code for that" "????(what goes here)????"
The answer "can you provide code or tutorial" may be "get better at programming" but that's not the question they asked.
17:50
@Jimmy I'd respond to that with a code example (they're always helpful for anyone who hasn't already done the thing before), or point them toward tutorials, or if the thing isn't even code-related i'd be asking them what on earth they're requesting that for. probably with additional suggestion they didn't even read what i said..
(apologies for edit-pings)
:thinking: hmm okay maybe I'll stick with the "let Josh answer the question" approach
@Jimmy It works too. :P
18:07
One time I put a LMGTFY link :P Don't do that.
posting LMGTFY should automatically lower a moderator candidate score two points
... Unless there's literally 100s of google results for code samples showing how to do that exact thing :P
... and the first result being directly on Unity's documentation page...
Or at least that would be my policy :P And that's why I'm not running for mod XD
Not having googled first is not a reason to vote to close a question. It's a reason to downvote it :)
2
^
"A close vote is not a super-downvote"
No, I mean the cases where the Q: is "how do you achieve X ?", my answer is "The algorithm is called Y, [link to wikipedia]. You use A as input and apply ouput B this way.". Then comment: "Can you code it for me?"
The Q wasn't "code it for me"
But then the user try to stretch it. and edit the Q to ask for code too ...
I'm not saying close it tho.
18:18
@StephaneHockenhull They don't usually edit the question, they just ask in the comment..
'But Stephane, Googling "code it for me" wasn't working, so that's why I tried Stackexchange....'
not usually, but sometimes they go that far :P
@Jimmy haha
Sie
Sie
18:54
Hey guys.
Long time no see.
Sie
Sie
What have you guys been up to?
I've been working, and that's pretty much it. I don't have much free time nowadays.
What about you?
19:18
hey Sie
workin
playin HotS, goin back to LoL when preseason hits next week
lotsa new stuff
Sie
Sie
Workin\ and school. Nothing new really.
I added a tag usage for guide
19:48
Also, how many people have to approve a tag usage guide suggestion before it goes up?
Nevermind
 
4 hours later…
23:28
Grrr I planed to work from home tonight but the internet to the office is slow as hell.
23:50
Ah. thanks Windows updates!
Got those pesky reflection tags disentangled. :)
I'm looking for a way to ask how to bend something twice in a game context and add the tag reflexion to the mess.
ducks

« first day (2644 days earlier)      last day (2672 days later) »