Jump to content

Today...


Leoo

Recommended Posts

Today I played some League of Legends and lost -.-. Last night I did get a penta-kill though and went 19/1/13. You can see it here: https://www.twitch.tv/videos/156476136

melos2_zpsjnpxw8yx.jpg
"To do all that one is able to do, is to be a man; to do all that one would like to do, is to be a god." - Napoleon I

Link to comment
Share on other sites

Song festival was on again last weekend.

 

I started a song with a friend of mine. In about 2 minutes, everybody on the stage, that is 14 000 people started singing along. On live broadcast, the interviewer and interviewee were completely dumbfounded and surprised. Everything is freely visible online on the homepage of our national broadcasting corporation webpage, PM me if anyone wants to see/hear it.

 

Once in a lifetime situation and deed.

 

Also, life takes some really [bleep]ing weird and awesome turns, but that is for the relationship thread.

t3aGt.png

 

So I've noticed this thread's regulars all follow similar trends.

 

RPG is constantly dealing with psycho exes.

Muggi reminds us of the joys of polygamy.

Saq is totally oblivious to how much chicks dig him.

I strike out every other week.

Kalphite wages a war against the friend zone.

Randox pretty much stays rational.

Etc, etc

 

Link to comment
Share on other sites

You made an item editor? Like completely from scratch? That's impressive as hell dude

I created an in-process OpenGL tracing module called ARDEN. It's composed of Touchstone, which generates the OpenGL trace; Jaques, which hooks the OpenGL functions; and Rosalind, which generates low-level rendering events relevant to RuneScape, like "draw_gui" or "draw_item_icon_model."

 

I then created a module called WALDEN to generate game state from the low-level Rosalind events. See, RuneScape's rendering is a bit odd at times. A single animated model (e.g., NPC, player, fire) may be split into a few draw calls. This isn't determininistic. There's other quirks I've encountered too. So I created Chomsky--thus far the only WALDEN component. It pieces together what events correspond to what game state. For example, it sorts skinned model draws by position to piece together individual animated models.

 

Luckily, GUI stuff is much simpler. At the end of a frame, the game world is transferred into the default back buffer, and then the GUI elements are drawn. Essentially, I compose a GUI element stream: a collection of quads with their associated texture hashes (more like fingerprints, since I apply some heuristics to generate most-certainly unique 16-byte value represents certain visual aspects of the texture).

 

I have to manually identify textures, but that's easy enough using my tool, Poltergeist. I created a texture dictionary resources, which assigns various metadata (a value, like a name; tags; and key-value data pairs) to a texture hash. Example:

 

xf7XHha.png

 

With a DSL I created (boringly named "GPD", for "GUI Parser Definitions"), I can apply a series of matches on the GUI element stream to construct a high-level representation of the GUI. For example, here's the chat panel GPD:

 

 

chat-panel-content[panel-content]: {
  .background: repeat image panel-background;
  .buttons[]: widget button[chat-button];
  .splitter: {
    .bottom: image chat-panel-border;
    .top: image chat-panel-border;
  };

  .display-name: text(shadowed: true) small-font;
  .quick-chat-button: widget button[chat-button];
  .prompt: text(shadowed: true) small-font;

  optional {
    .log[]: text(shadowed: true, break_on_newline: false) small-font;
  };

  .scroll-bar: widget button[vertical-scroll-bar];
};
The language is pretty simple.

 

Essentially, you have fundamental match statements: text, image, size, color, and widget. You can compose multiple statements together (using curly braces). The root groups are called widgets (like chat-panel-content above). Widgets can have fields (which can also have fields, see ".splitter" above). Generally, a match statement assigns the GUI element to the field or widget on success. Failed matches result in the parent node terminating.

 

You can also apply decorators to statements. Decorators modify the behavior of a match statement. For example, the "invert" decorators does what it says on the tin: inverts the result of a match statement. The "peek" statement doesn't change the position in the element stream; the "find" decorator attempts a match, and if that fails, increments the position in the stream and tries again; etc. You can chain decorators: "optional skip repeat image *[icon];" would consume all images with the 'icon' tag, for example.

 

The grammar is self-explanatory:

 

[hide]

# "GUI Pattern Definition", or GPD for short.

IDENTIFIER := [A-Za-z][A-Za-z0-9_-]*
NUMBER_LITERAL := [0-9]*
COLOR_LITERAL := '#' [0-9A-Fa-f]+
LEFT_PARENTHESIS := '('
RIGHT_PARENTHESIS := ')'
LEFT_CURLY := '{'
RIGHT_CURLY := '}'
LEFT_BRACKET := '['
RIGHT_BRACKET := ']'
FIELD_PREFIX := '.'
COMMA := ','
COLON := ':'
SEMICOLON := ';'
WILDCARD := '*'

parameter := IDENTIFIER COLON IDENTIFIER
parameter-list := LEFT_PARENTHESIS  parameter ( COMMA parameter )* RIGHT_PARENTHESIS
find-decorator := 'find'
repeat-decorator := 'repeat' parameter-list? expression
optional-decorator := 'optional' expression
skip-decorator := 'skip' expression
peek-decorator := 'peek' expression
invert-decorator := 'invert' expression
rewind-decorator := 'rewind' expression
expression := ( decorator | statement )
tag-collection := LEFT_BRACKET IDENTIFIER ( COMMA IDENTIFIER )* RIGHT_BRACKET
widget := IDENTIFIER tag-collection? COLON expression
field := FIELD_PREFIX IDENTIFIER ( LEFT_BRACKET RIGHT_BRACKET )? COLON expression
statement := ( group-statement | match-statement | print-statement ) SEMICOLON
group-qualifier := 'any' | 'all'
group-statement := LEFT_CURLY ( field | expression )+ RIGHT_CURLY group-qualifier?
print-statement := 'print'
color-match-statement := 'color' COLOR_LITERAL
image-match-statement := 'image' ( WILDCARD | IDENTIFIER ) tag-collection?
text-match-statement := 'text' parameter-list? ( WILDCARD | IDENTIFIER ) tag-collection?
size-match-statement := 'size' ( WILDCARD | NUMBER_LITERAL ) ( WILDCARD | NUMBER_LITERAL )
widget-match-statement := 'widget' ( WILDCARD | IDENTIFIER ) tag-collection?
match-statement := text-match-statement | image-match-statement | color-match-statement | size-match-statement
root := widget+
[/hide]

 

Anyway, the above GPD produces the following state:

 

wcV99Zc.png

 

(See the window labeled "GUI State").

 

Now, item icons are generated at run-time. This means I have to render the geometry myself.

 

Item icons are fully-fledged models. They are rendered into a small framebuffer, and then a bunch of post-processing effects are applied. The actual item render is essentially identical to rendering a model in the game world. For stacked items, the same GUI matching code is used to parse the quantity text. I just hard-code the text-matching parser:

 

auto quantity_text_node = new parser::MatchTextNode();
quantity_text_node->set_wildcard();
quantity_text_node->set_shadowed(true);
quantity_text_node->set_include_spaces(false);

auto quantity_field_node = new parser::FieldNode();
quantity_field_node->set_name("quantity");
quantity_field_node->add(quantity_text_node);

auto root_node = new parser::GroupNode();
root_node->add(quantity_field_node);

this->gui_parser.add_node(quantity_text_node);
this->gui_parser.add_node(quantity_field_node);
this->gui_parser.add_node(root_node);
this->gui_parser.set_root_node(root_node);
So I made an ItemIconManager that listens for 'draw_item_icon_model', 'draw_item_icon_gui', 'clear_item_icon', and 'transfer_item_icon', and 'copy_texture' events. It essentially emulates the RuneScape rendering, albeit without texturing and post-processing.

 

However, the cool thing is, since item icons are models, and I'm the one doing the rendering, I can render the item icons however I want! So I created an 3D item icon viewer (as pictured in those images). I can select any item icon rendered up to the current frame and view it in all its 3D glory:

 

S7FlXo4.png

 

And there you have it. What a wonderful waste of time and talent!

ozXHe7P.png

Link to comment
Share on other sites

I have a first class degree in Biochemistry

 

Congrats Maddy! Must make you feel much better finally knowing the results.

 

Song festival was on again last weekend.

 

I started a song with a friend of mine. In about 2 minutes, everybody on the stage, that is 14 000 people started singing along. On live broadcast, the interviewer and interviewee were completely dumbfounded and surprised. Everything is freely visible online on the homepage of our national broadcasting corporation webpage, PM me if anyone wants to see/hear it.

 

Once in a lifetime situation and deed.

That's awesome man, can't even imagine that. Let alone how annoyed the interviewee must have been to suddenly have all these people singing over him.

  • Like 1
Link to comment
Share on other sites

Actually, she was the head conductor of the whole song festival, so she started crying about how beautiful that spontaneity(?) is and how the song festival truly is a success.

t3aGt.png

 

So I've noticed this thread's regulars all follow similar trends.

 

RPG is constantly dealing with psycho exes.

Muggi reminds us of the joys of polygamy.

Saq is totally oblivious to how much chicks dig him.

I strike out every other week.

Kalphite wages a war against the friend zone.

Randox pretty much stays rational.

Etc, etc

 

Link to comment
Share on other sites

Shocked af - got 78% for my final year project on prostate cancer and loads of pretty awesome results in general.

 

I have a new job so relocating for that - I mean, considering my dad passed away and I got strangled and this year has been riddled with drug abuse  (which i'm pretty much all clean from) and mental health strain (which is alleviated significantly), 

 

I CAN'T BELIEVE I MADE IT - thanks guys for your well wishes and generally letting me vent here, 

graduation is in two weeks' time

  • Like 4
Link to comment
Share on other sites

My sister got back from Sri Lanka last night. Well kinda. Got a call from the police saying she got arrested on the airport because she had a gram of weed in her handbag. Apparently my sister is stupid enough to not check her handbag for shit like this before coming back home. So my dad had to go to the deportation department this morning where she's being held to see what he can do. One of the ladies there said everything is fine, she can go home since it's just a gram, but other people are saying she's getting deported either way. Honestly, she's my sister and all, but i couldn't care less what ends up happening. I know i'll miss her in a few weeks, but she's done nothing but cause stress and drama for the last couple of years with her disrespect and selfishness. Maybe going back to South Africa will bring her back down to earth. 

 

Funny thing is that my parents are acting like my sister is a victim in all of this. Sure, it's hella unlucky being caught and deported for just 1 gram. Guess it's good my parents don't know that she's been dealing out of our house for the past couple of months. 

Link to comment
Share on other sites

But w won't be 1 after a perspective transformation. Here:

 

Let P be your point. Let P` be your point post-transformation. Let M be the combined model-view-projection transformation. Let S be the normalized device coordinates.

 

First, transform P:

 

P` = M * P
Then compute S:

 

Sx = P`x / P`w
Sy = P`y / P`w
Sz = P`z / P`w
See: https://www.khronos.org/opengl/wiki/GluProject_and_gluUnProject_code

 

Here's my projection method used in a MoonScript math library I made:

 

project: (point, view, projection, viewport) ->
	Promise.keep("point", Promise.IsClass(point, Vector))
	Promise.keep("view", Promise.IsClass(view, Matrix))
	Promise.keep("projection", Promise.IsClass(projection, Matrix))
	Promise.keep("viewport", Promise.IsTable(viewport))
	Promise.keep("viewport[1]", Promise.IsNumber(viewport[1]))
	Promise.keep("viewport[2]", Promise.IsNumber(viewport[2]))
	Promise.keep("viewport[3]", Promise.IsNumber(viewport[3]))
	Promise.keep("viewport[4]", Promise.IsNumber(viewport[4]))

	view_projection = projection * view
	transformed_point, w = view_projection\perspective_transform(point)
	transformed_point *= Vector(1 / w)

	return Vector(
		(transformed_point.x * 0.5 + 0.5) * viewport[3] + viewport[1],
		(transformed_point.y * 0.5 + 0.5) * viewport[4] + viewport[2],
		(1 + transformed_point.z) * 0.5)
Edited by Veiva
  • Like 1

ozXHe7P.png

Link to comment
Share on other sites

yoo, haven't really posted here in a minute but things have been going pretty well for me lately! I've been having a lot of visitors from home this month which has been super fun. Got to see some friends from college, then my parents, then this last weekend my best friend from Michigan came out here which was an absolute blast. Now this weekend I'm on my way back home for a music festival (fourth year going to blissfest woooo). Flying out tomorrow and I just cannot wait, my mind has been completely turned off at work in anticipation.

 

flying spirit for the first time tomorrow though, wish me luck ;_;

  • Like 2
Link to comment
Share on other sites

Today I watched the League of Legends Rift Rivals Finals with North America vs Europe. North America 3-0'd EU hard which made my day, considering NA has never really did well in international events.

melos2_zpsjnpxw8yx.jpg
"To do all that one is able to do, is to be a man; to do all that one would like to do, is to be a god." - Napoleon I

Link to comment
Share on other sites

Finished season 3 of iZombie. I wasn't sure I liked the direction the show was taking, but it really turned around for me at the end and got me good and hooked again, so now I get to wait for Season 4. Blah. Caught up on House of Cards too, but I'm starting to feel like the writers are winging it a bit. Still entertaining though.

 

Also starting to give some consideration to not having my computer in the loft where all the heat collects for the summer, but boy does it feel good when you come down. Could be 28C and it would still feel cool :D

Link to comment
Share on other sites

Was just on a 4-day trip through the best Norway has to offer.

 

[bleep]ing exhausted.

t3aGt.png

 

So I've noticed this thread's regulars all follow similar trends.

 

RPG is constantly dealing with psycho exes.

Muggi reminds us of the joys of polygamy.

Saq is totally oblivious to how much chicks dig him.

I strike out every other week.

Kalphite wages a war against the friend zone.

Randox pretty much stays rational.

Etc, etc

 

Link to comment
Share on other sites

Trying to buy more RAM but I honestly have no idea what I'm looking at

Quote

 

Quote

Anyone who likes tacos is incapable of logic.

Anyone who likes logic is incapable of tacos.

 

PSA: SaqPrets is an Estonian Dude

Steam: NippleBeardTM

Origin: Brand_New_iPwn

Link to comment
Share on other sites

C'mon, everyone knows you just download more ram. Google should provide you with the correct location to do it.

 

Otherwise, rant for the day is when you are trying to do something and her everything you need some on your end, but then are stuck waiting for another person/entity to do their stuff with no clear indication of what's going on.

Link to comment
Share on other sites

The thing is I bought my computer from my friend who claims he built it from scratch, but I'm not really sure what's in it. I've gathered as much as this:

Graphics: GeForce GTX 750 Ti
Processor: AMD A10-6700 APU with Radeon HD graphics, 3700Mhz, 2 Cores, 4 Logical Processors
Installed Memory: 8GB (7.79 usable)
MoBo: ASUSTeK M11BB, x64-based
 
It's my understanding that I only have one DDR3 8GB RAM thing installed and if I put another DDR3 8GB RAM thing in there it would increase the speed of my stuff. But I'm unsure if my Mother Board could handle it. Is there a way of checking?
 
I saw(from a 2014 post) that if I get a 1600Mz CL 9 DDR3 8GB RAM thing it should work? Does it have to be the same brand as the one I already have installed? Could I buy 4 and get 32GB of RAM total, or is that not how it works?
Quote

 

Quote

Anyone who likes tacos is incapable of logic.

Anyone who likes logic is incapable of tacos.

 

PSA: SaqPrets is an Estonian Dude

Steam: NippleBeardTM

Origin: Brand_New_iPwn

Link to comment
Share on other sites

 

MoBo: ASUSTeK M11BB, x64-based

 
It's my understanding that I only have one DDR3 8GB RAM thing installed and if I put another DDR3 8GB RAM thing in there it would increase the speed of my stuff. But I'm unsure if my Mother Board could handle it. Is there a way of checking?
 
I saw(from a 2014 post) that if I get a 1600Mz CL 9 DDR3 8GB RAM thing it should work? Does it have to be the same brand as the one I already have installed? Could I buy 4 and get 32GB of RAM total, or is that not how it works?

 

Not a giant computer guy, but a quick google brought me to here where it has this listed:

 

 

Memory

2 GB Up to 16 GB

Dual Channel, DDR3 at 1333MHz

4 x DIMM

So based on that your motherboard, which holds the RAM, has 4 slots for RAM. However, it can only physically use a max of 16GB of RAM at once. So buying anything more than another 8GB of RAM is a waste of money.

 

So far as what type of RAM and whether your sticks should match I have no idea.

Link to comment
Share on other sites

 

 

MoBo: ASUSTeK M11BB, x64-based

 
It's my understanding that I only have one DDR3 8GB RAM thing installed and if I put another DDR3 8GB RAM thing in there it would increase the speed of my stuff. But I'm unsure if my Mother Board could handle it. Is there a way of checking?
 
I saw(from a 2014 post) that if I get a 1600Mz CL 9 DDR3 8GB RAM thing it should work? Does it have to be the same brand as the one I already have installed? Could I buy 4 and get 32GB of RAM total, or is that not how it works?

 

Not a giant computer guy, but a quick google brought me to here where it has this listed:

 

 

Memory

2 GB Up to 16 GB

Dual Channel, DDR3 at 1333MHz

4 x DIMM

So based on that your motherboard, which holds the RAM, has 4 slots for RAM. However, it can only physically use a max of 16GB of RAM at once. So buying anything more than another 8GB of RAM is a waste of money.

 

So far as what type of RAM and whether your sticks should match I have no idea.

 

Those limits are mostly hypothetical, based on what was available at the time of first production or the configurations the manufacturer specifically tested it on.

 

To be on the safe side though, it's good to buy it from a store that accepts refunds within 30 days or whatever with no questions asked. For memory usually you plug it in and either it works or it won't start, so it's readily apparent if it's suitable. If you want to be really careful I think you can buy through Crucial and they guarantee it'll work or take it back.

 

Also, if you can, get an anti-static wrist strap or make sure you're grounded doing it - you don't want to accidentally shock it and ruin it.

  • Like 1

"Fight for what you believe in, and believe in what you're fighting for." Can games be art?

---

 

 

cWCZMZO.png

l1M6sfb.png

My blog here if you want to check out my Times articles and other writings! I always appreciate comments/feedback.

Link to comment
Share on other sites

I'm not sure how important it is, but the general recommendation seems to be to get RAM that matches as well as possible, ideally from the same manufacturing run (all from the same package set, unless you want to spend an afternoon reading serial numbers).

 

That said, at the very least any additional RAM should have the same speed and latency. You can use totally unmatched sticks if you want, but all your RAM will match the pace of the slowest link, so adding slow RAM to fast RAM is mostly just wasting money (and can make performance worse). To match the RAM you already have, your best bet is to figure out exactly what you have by reading the sticker on the stick (you might need to pull it out). At the very least you want a manufacturer and model, but it might have latency timings written on it too. Try to find something with the same numbers, or throw in the towel and buy all new RAM :P

 

Also, it's a good idea where possible to run dual channel memory. Most motherboards have 4 RAM slots, divided into two pairs (channels). 2x4GB with one stick in each channel will be faster than 1x8GB because each channel is accessed independently, allowing concurrent read/write requests. You'll want to get a manual for your motherboard when installing a second chip to make sure you place it in the correct slot as well (you don't want them both in the same channel, and you have a 2 in 3 chance of getting it wrong if you guess).

 

 

I thought my Xbox (original) died yesterday. It powers on and immediately shuts off. But then I got it to stay on with the eject button, and now I think it's a fault in the power switch, so I guess it's finally time to open it up, and see if I can tinker it back to life. If not, it's had a pretty good run :D

  • Like 1
Link to comment
Share on other sites

Sounds like I have some light tinkering to do as well. Should be fun. Thanks for the help folks

Quote

 

Quote

Anyone who likes tacos is incapable of logic.

Anyone who likes logic is incapable of tacos.

 

PSA: SaqPrets is an Estonian Dude

Steam: NippleBeardTM

Origin: Brand_New_iPwn

Link to comment
Share on other sites

Me and my mom went to "do our hair" today. Okay i know it sounds weird. There's this South African guy that comes to town every couple of weeks to cut hair for various people within the South African community here. He's really good. He's like the only hairdresser i've found that doesn't butcher my hair. He only comes every couple of weeks for a week or two, then goes back home (to South Africa). I'm still growing my hair out at the moment, so i really just wanted to go for a trim. My mom wanted to color her hair again to get rid of the grey, and while he was fixing her up he asked me if i ever thought about getting highlights. Long story short, i ended up getting highlights. Dunno why... guess it ads a nice touch i guess. Anyway,  we had go there with her car... that doesn't have a working AC. The compressor broke a week or two ago and she's been too lazy to get it fixed (and she hasn't been using her car much lately anyway). My car is in for a service and some tune-ups and my other car's battery is completely [bleep]ed because i haven't been using it much. So we kinda didn't have a choice unless we went up the road to buy a new battery for it. So just to avoid the hassle we used her car. We left the house at 9:30 am and i checked the weather. 109 degrees... at 9:30. When we left at around 12:30 i checked it again. 117 degrees. Literally felt like i was melting away sitting in the car. Driving with the windows open is laughable too because the air outside burns your face off anyway. Never again. Never.

  • Like 1
Link to comment
Share on other sites

So you don't have a cable or something on hand to plug your car to her car and start it...? I thought that was relatively easy.

"Fight for what you believe in, and believe in what you're fighting for." Can games be art?

---

 

 

cWCZMZO.png

l1M6sfb.png

My blog here if you want to check out my Times articles and other writings! I always appreciate comments/feedback.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.