• What are you working on? v67 - March 2017
    3,527 replies, posted
I played the Terminal game on my university a few months ago.
I would recommend putting some videos on all of the cases, otherwise looks nice.
Transform hierarchy works, BUT for some reason the child updating code only runs one level deep (at the moment, all GameObjects are children of a root, and the root is what has its update method called, which updates the blue teapot fine, but not the one parent to it, or the one parented to that one) does anyone know why this happens? They should all get updated but don't... https://files.facepunch.com/forum/upload/113105/3f0b5ed9-0d86-49f3-953d-0c374e46a43f/image.png
https://youtu.be/J4Kc8UBbIpY wrote a script that makes scrolling on webpages play the seinfeld theme, because why the fuck not
This is going vaguely off of what JWki and I have talked about in regards to my rendering work - he might have more input on it - but I have a few suggestions. Instead of defining a rigid parent-child heirarchy and implicitly involving all the objects in it from the start, I'd bin objects by type and have these "bins" be renderers for each kind of object type. In many cases, each unique object will only require a little bit of unique data (e.g transformation matrices, a texture) and the object renderer itself can keep the mesh data and most of the OpenGL resource handles. Then, have this object renderer (here, a teapot renderer) iterate over all the teapots it's rendering and update them appropriately per-frame. You can have a root object for traversing or iterating through all your renderer objects, and that's when using delegates can come in super handy. I implemented these for my renderer, and they've worked so far. Though they don't use perfect forwarding, but that's easy enough to add yourself. They're fast too, so the core object isn't storing more than it needs (like with std::function) and the call overhead stays low. Without background in school, my algos game is kinda weak and this ties into that buuuut: in this case, the iterative setup I mentioned is probably going to be better than a recursive parent-child descent scheme.
Your slideshow updates a little too fast. On page load you don't even have time to read your introductory text.
You'll want to use cen64 (and even cooler would be an actual 64drive) for way better accuracy, even if your computer doesn't seem to be all that fast. Coincidentally, I've been writing yet another emulator for said console (no excuses for the pun), after actually getting to watch ferris' series recently that I'm pretty certain someone posted in this subforum years ago which I did bookmark. https://files.facepunch.com/forum/upload/133076/0ed1274e-c9c0-461e-9d2b-a3ec3e415d9f/image.png Funny thing is I had forgotten about it, but after someone linked me an amazing demo I found out he also did work on that stuff. But anyways, all it really displays at the moment are instructions. And it doesn't go anywhere yet because I've got to fire audio/video interrupts (and output the data while I'm at it). https://files.facepunch.com/forum/upload/133076/c214bc1d-fc86-4e0e-a59e-271d8eb5b28a/image.png The signal and display processor aren't even done yet, as is the serial interface that deals with the controllers, so it's far from being done. Although the SP is based on the CPU, with less instructions, some of them overridden (like system coprocessor register targets), and most importantly the vector coprocessor. It could also be possible to just P/Invoke angrylion's DP code to get started. Even if it doesn't go anywhere, I've already learned a tonne about many things, thanks to way too many people making video series, talks, posts, articles, providing and archiving documentation or history, writing software, etc. To me that's the best part of the Internet, thanks to all of you who generously share knowledge to everyone.
Wellllll I got fucking hardcore humbled by being dickpunched with my own silly and stupid mistake. As I've mentioned, I'm working on a space tether trajectory simulator and it's been a hell of a doozy. Not too long ago, I replaced the indexed-from-1 and generally poorly written Matrix class with a much "better" templated Matrix class. The problem is that I fucked this up, which makes sense given my 1.6 in my first attempt at linear algebra and school and my barely passing (with maximum effort on my part, oof) 2.4 the second time. It's made a little insulting given how much graphics programming is matrix math, but w/e. It all came down to how I performed matrix-vector multiplication: template<size_t Rows, size_t Cols, typename T> inline tethersim_array_t<Rows,T> operator*(const Matrix<Rows, Cols, T>& mtx, const tethersim_array_t<Cols,T>& vec) {     fp_exception_enabler_t f_except(_EM_OVERFLOW | _EM_DENORMAL | _EM_ZERODIVIDE | _EM_INVALID);     tethersim_array_t<Rows,T> result;     for (size_t i = 0; i < Cols; ++i) {         for (size_t j = 0; j < Rows; ++j) {             T sum = static_cast<T>(0.0);             for (size_t k = 0; k < Cols; ++k) {                 sum += mtx.GetElement(i, j) * vec[k];             }             result[j] = sum;         }     }     return result; } This isn't even close to right. It generates completely incorrect results, and is used several times in the key update routines. Because of my errors, graphs of per-element velocities (giving the velocity of subsections of the tether rope) looked like this: https://files.facepunch.com/forum/upload/132396/3d7de223-6730-4604-9b7e-6fe47bb5a944/VelocityZ.png Fixing this method to do the correct thing - that is, take the dot product of each row and the given vector, storing this scalar value in a single row entry of the result vector - changed my plots significantly: https://files.facepunch.com/forum/upload/132396/eb0363d1-87c7-4b16-9464-a44bd2f725f5/VelocityZ.png And that little anomaly at the end? That's actually a bemusing artifact of how much better things have gotten (and deepens my embarrassment a bit more). The method used to propagate the tether subsections effectively has the core goal of damping out the unbalanced forces in the tether as a whole and in each sub-element. One of the main displays of forces in the tether is, unsurprisingly, the tension in the tether. This tension is however used in "unbalanced_force / average_tether_tension" as part of the checks done to decide if we should keep iterating. if this value is less than 0.0001, we stop. But since the fixes I made now make the damping extremely effective, the tension drops to near-zero values extremely quickly and stays there, resulting in fuckhuge values when something divides by this tension. So I just break out of the loop if the tension drops below 0.0001, a check done before we divide by it. And now things look this: (not sure about the random spike, that's a bit odd, but still it worked for 35,000 seconds) https://files.facepunch.com/forum/upload/132396/6edadbef-482c-4979-b78b-8331a5c6ccef/Tension.png And the orbit is nearly stable (only gone for 6 hours thus far, though), only slightly outside of the parameters I got from the Space Dynamics dudes at Goddard: https://files.facepunch.com/forum/upload/132396/a37f8da5-b3e8-4cdf-872a-b94a479dc630/RadialDistance.png I'm extremely glad to have found the "bug" thats been plaguing my work for a few weeks now, but embarrassed that it took so long. I'm not so ashamed that I'm not going to tell anyone (ill be telling my CEO shortly, lol), and at the end of the day it's a good lesson. I was already searching my matrix code for errors related to indexing (since converting from 1-based indices is harder for complex methods), but I was too quick to assume that the error wouldn't be in my code in general or that certain segments of my code weren't worth scrutiny and this really is incorrect. Given that it was some of the newest code added and/or significantly changed in what was otherwise a mostly-functioning legacy codebase, I should've checked it much sooner. This is also a compelling argument for running unit tests on critical classes used in important math operations, so I'm probably going to write some tests for my vector and matrix classes when I get the chance.
I got Rant to run on a Raspberry Pi. https://i.imgur.com/HHd5R0y.png
Straightforward, isn't it ? I never got to mess enough with the Pis at school to install Mono on them.
Just won a design competition with NASA! For the next 4 months I'll be developing my teams designs into a Hololens app and in May I'll be heading to the Johnson Space Center to show off the completed design!
You could be the first person to post in WAYWO from space.
sudo apt-get update sudo apt-get install mono-runtime And you're done.
Mono or .NET Core?
https://i.imgur.com/NHv63vJ.png Wrote tangent/bitangent generation code so I can use normalmaps!
Mono because Rant doesn't work with .NET Core as far as I know. But, can your teapots do this? https://www.youtube.com/watch?v=4aiIF1fUgeM
I got a full time offer \o/ 54,000 with 25 days PTO at the company I interned at. I'm doing primarily backend development, and since basically nobody at my company knows anything about web application security I get to design the auth service from the ground up. We're trying to release by end of Q1
Which city you live in?
Richmond, VA. 54k is decent here. I'm looking at $1,000 for a 1br apartment rn. I think $60k is a bit more normal, and I'm actually still interviewing for these jobs, but 25 days PTO is hard to pass up, and I get a lot of responsibility at my current job so I feel like it can help advance my career more. I'm interviewing around just to have contacts within various recruiters and companies in the area
Well you caught on to where I was going with that. You're probably right. I'd just point out that if you're doing the whole auth stuff by yourself you should probably be making more what an intermediate dev makes. Junior positions typically fix bugs and and non-complicated tasks. And if you're doing intermediate tasks with intermediate responsibilities, you should be compensated what an intermediate developer makes. These are my two cents anywho. If they gave you an offer, they want you, this is probably the part in your job where you will have the most power over your compensation/benefits. Ask how long the offer is good for and shift negotiations to email. How long were you interning there?
We're not a very big company (~30 employees), so Jr. Devs have a bit more responsibility. When I started out as an intern I did bug fixes and then moved on to developing some web applications. I developed a configuration tool as an intern. Come to think of it, I start full time in May, so I'm still developing the auth service as an intern. I've been interning for a year
"We're not a very big company (~30 employees)": This is the argument that the company makes to try to justify to you below market pay. You in the fp programmers discord?
I used to be, but I don't get along well with them I also don't have a degree. Also consider that I get 25 days PTO
As someone in nearly exactly the same boat proboards, don't use the lack of degree to let them justify completely underpaying you. I made less than you when I started - doing all of the same work I usually post about here - and only recently got promoted because my boss (software team lead) pushed for it given how hard I've been working and how underpaid I was. But I still got underpaid for a few months. They also used the small company excuse (and so did I). Approach the situation with humility and maybe talk to HR, saying you feel your skills and work justify more pay. 25 days PTO is good, but I'd say (if nothing else) wait 1-2 months and see about getting a slight raise. Just don't let them devalue you completely.
I wasn't planning on staying here long term, really. That's why I'm interviewing around, to maintain connections with these companies. I'll kick ass on my projects for the next couple of months and then tell them I deserve a raise based off of the amount of responsibility I've been given.
Do you have a link to that Discord?
Discord
https://i.imgur.com/qmhys2r.png OBBs, though the internal representation is an axis aligned box which I'm gonna use for frustum culling later, rendering them as OBBs looks nicer.
I got tired of having duplicated code in my shaders, and decided to finally bite the bullet and implemented shaders that import glsl snippet/packages. I leveraged my asset system and built a shader package asset, which is essentially just a giant string loaded in from a file with a filename. Since my asset system stores shared pointers, these don't get wasted and get shared multiple times. Further, asset packages can import other asset packages. Pros: Can standardize parts of the lighting pipeline such as the pbr aspects / brdf, have other lights import the functions Increase readability of shaders Cons: Error reporting of compiled shaders may refer to the wrong line numbers since they are monolithic
today i made blood https://my.mixtape.moe/ezdgli.mp4
Sorry, you need to Log In to post a reply to this thread.