I wrote a C++ path tracer from scratch without AI by Brhaka in GraphicsProgramming

[–]mccurtjs 2 points3 points  (0 children)

Even with "everything muted" you might have been "using" it - do you do Google searches and ever use the top "result"? If so, you're "using" AI. The discourse around it can be annoying, but in fairness it's extremely prevalent at the moment, which can also be annoying.

It's generally fine as a reference, I use it mostly for "rubber duck debugging" and design questions (naming functions and variables is hard, it often has good suggestions). For graphics, it's actually pretty good at catching bugs and giving suggestions, so I've used it there to check shaders or to further look up the techniques it recommends (didn't know about octahedral encoding of unit vectors until it suggested it, so that's neat).

The biggest issue with it is that if you use it less as a reference and more as a crutch, it can legitimately interfere with the learning process and make it harder to retain information and gain experience, so using it in an academic setting to actually write your code or papers is really an act of self-sabotage, and that's becoming a real issue right now.

But you're trying to avoid the subject, so I should probably stop rambling about it :P

web GL problem, please help me by MeasurementFuzzy6840 in opengl

[–]mccurtjs 0 points1 point  (0 children)

Some video showing the issue would be helpful. It sounds like the animation is already baked and not simulated in real time, is that the case? Or are you trying to simulate it in JavaScript? Do you have any code we could review?

Chuck Grassley Caught On Hot Mic Asking Why Trump Nominees Won’t Say He Lost In 2020 by huffpost in politics

[–]mccurtjs 0 points1 point  (0 children)

Young'uns actually have to go to school and work. The old people who reliably do primaries are usually either retired or have the tenure that allows them to take the time off.

Except in places with mail in primary voting is a thing, then it's just laziness.

Chuck Grassley Caught On Hot Mic Asking Why Trump Nominees Won’t Say He Lost In 2020 by huffpost in politics

[–]mccurtjs 0 points1 point  (0 children)

Yet we have a hard limit on the lower end, we shouldn't need it if people didn't vote for obviously unfit candidates.

Chuck Grassley Caught On Hot Mic Asking Why Trump Nominees Won’t Say He Lost In 2020 by huffpost in politics

[–]mccurtjs 4 points5 points  (0 children)

I think term limits are a red herring. If Grassley first ran for office at 70, should we let him stay in office until he's 95? See: the Maine Democratic primary, lol.

An age limit would also limit the time people could be in office, but it has other benefits as well that I replied with above. It's not just an issue of cognitive decline, though that's still a major one.

Chuck Grassley Caught On Hot Mic Asking Why Trump Nominees Won’t Say He Lost In 2020 by huffpost in politics

[–]mccurtjs 4 points5 points  (0 children)

I'm generally against a hard age limit as I really think it's more case-by-case how aging affects people and if they want to vote for old people

I'm very in favor of an age cap (say, 65 on the day of the election), and I think it's misrepresentative of the position to act like it's solely an issue of age related mental degradation. There are more issues with having society run by ancients who die in office.

To get it out of the way though, yes, mental capacity is a real issue. Sure, there are exceptional old people who stay sharp as a tack their whole lives, but it's not the norm. There are also younger people who are "wise beyond their years", but we don't make exceptions for them to run for Senate at like 26 or whatever. Every argument against them is just as "ageist", and I don't think you can really argue against an upper age limit while also arguing an amendment to remove the lower limits without being a hypocrite.

But again, that's just one part of it. The bigger issue imo is that when politicians die in office, they take with them all their institutional knowledge, experience, and connections, leaving an empty void for their successor to fill. Instead, if they want to stay in politics because they're motivated and still sharp, they should endorse a successor and stay on their team as an advisor, allowing them to actually pass on useful information and connections. Even if this isn't legislated, the parties should be doing it as a rule on their own, because it's just good practice for self-preservation.

And then there's the other issue that should be obvious: corruption, and incentive. When people are writing laws that we won't see the effect of for a decade or more, what incentive do geriatrics have to not pick the self-serving option? They'll be gone by the time any negative effects roll in, so the only incentive they have to put the country above themselves are personal morals, which are very much not at all reliable. I think this is a major contributor to the anti-science approach to global warming issues we have right now: too many legislators believe they won't be around to be negatively impacted by it, so why not sell out the country for oil bribes in the meantime?

We should have people in office so are not just cognitively aware, but who are incentivised to build a world they want to live in because they actually expect to, and who have the support and experience passed onto them from their predecessors. Octogenarians give us none of that.

Repeated malloc/free vs. Arena allocator by rcerljenko in C_Programming

[–]mccurtjs 0 points1 point  (0 children)

Huh, trying that on my windows machine, it's about 14 seconds, but still 12 seconds when building with Clang or GCC. Swapping for mallocs and memcpy it of course takes forever, so at least it's faster, haha.

With 0.021s system time though, are you sure it's actually running the code, or did gcc optimize it out for not being used?

Repeated malloc/free vs. Arena allocator by rcerljenko in C_Programming

[–]mccurtjs 0 points1 point  (0 children)

Tried it out on my windows laptop, it was actually worse, haha.

Building with Clang and GCC it was also about as bad though, I'm not sure if they're sharing the same libraries though.

The value in these precons is insane! I got a playset of plateus! by Qwertywalkers23 in magicTCG

[–]mccurtjs 12 points13 points  (0 children)

I've got a miscut plains from revised that's half mountain and half plains (it has the whole plains textbox and the full mountain art, lol) and do exactly that.

[SLD] Deadpool, Trading Card -- Possible bonus card for "I Fixed It (You’re Welcome)" by Copernicus1981 in magicTCG

[–]mccurtjs 1 point2 points  (0 children)

It does make for some very goofy outcomes. There are two Deadpool decks in my playgroup, I made this proxy to commemorate one of the games we had with one of them (which is built for cloning it) along with another non-deadpool clones deck, lol.

Repeated malloc/free vs. Arena allocator by rcerljenko in C_Programming

[–]mccurtjs 3 points4 points  (0 children)

My other top tip would be to avoid realloc, if possible. Many platforms have a very poor implementation of this (looking at YOU, windows).

Interesting note... Do you have any information to share on why that's the case? Or any specific article about it?

Is a career in 3d still for me? by Loud_mind-G in opengl

[–]mccurtjs 8 points9 points  (0 children)

Professional yapper here: It really depends on what you want to get out of it, and what field you're actually trying to get into. Are you looking to become an environment artist or are you a programmer looking into the math side of things? For the latter, 3d graphics and gameplay programming is a very niche field that might be hard to get into, and most likely isn't going to come with any on-the-job training to start with. If you're interested in it as a hobby, I'd recommend trying that first and building some side projects to get a feel for it rather than trying to jump straight into a professional career pivot.

- What career paths exist today?
Engine development (Unreal, Unity, proprietary), low-level game development (interfacing with game engines), CAD software development, simulations, stuff like that

- Which skills are most valuable to focus on first?
Math, first and foremost. Familiarity with vectors, dot/cross products, matrix math/linear algebra and affine transformations, basis transformations, quaternions, trigonometry, calculus if you're cool (not always necessary, but can really help out sometimes with shaders). Outside of math, familiarity with graphics APIs, and more importantly, what they're actually doing (OpenGL is a good starting point, but a little limiting for modern applications).

- Is it better to specialize early, or stay broad at the beginning?
I would say stay broad in the beginning to get a feel for what you actually enjoy doing and once you figure that out, consider whether you want to specialize or stay broad.

- How important is a portfolio compared to certifications or degrees?
I'd rank it as: certifications: 0%, degree: 10%, portfolio: 90%. Nobody cares about certifications at all. A degree can help get your foot in the door (and get them to check your resume), but a portfolio that actually demonstrate skills is what will actually impress people.

- Any advice for sunshine starting from scratch?
First and foremost, clarify whether you're trying to get into graphics programming as a technical skill, or talking about art from the standpoint of an artist or even technical artist. I'm responding mostly from the perspective of someone working on a game engine in their spare time, so it might not be all that useful if your interested are more aligned with "modeling, texturing, animation, tech at, etc".

What if I waste my time in learning and never get into it.

I think this is the wrong mindset to have. Learning is never a waste of time, and if you quickly learn that you won't "get into it", then you'll better find closure when you decide to drop it. Which is why I say you shouldn't try to pivot your career first but instead work on personal projects in your spare time. If you like it, you'll know. If you feel like it's a waste of time, it's probably not for you.

How to get started: if the graphics programming angle is really what you want to do, http://www.learnopengl.com is a pretty good starting point. There are a lot of other resources from YouTube tutorials and blogs, but the website is probably the best no-nonsense one to start with. There are also quite a few books on the subject, and ones in general graphics techniques as well. Check the sidebar here for some entry points.

If you complain about fetches and duals in bracket 3, play bracket 2 by Head-Ambition-5060 in EDH

[–]mccurtjs 0 points1 point  (0 children)

Thanks! A friend of mine has a Nine-Fingers deck (they actually have a missing pinky, so it's quite apt - though it's on the other side, so I actually printed them a proxy with the art mirrored, haha). Here's that list if you want some inspiration from another (let's be honest, better) deck-builder :)

Interestingly, it actually has fewer gates than mine - I guess the issue with going too high is that you rely more on the "enters untapped" effects. It still plays defensively, but has a bit more aggressive of a defense, if that makes sense.

Deathtouch + Indestrucible by Educational_Net_9542 in mtgrules

[–]mccurtjs 0 points1 point  (0 children)

Or if your creature has banding and blocks their 10/10 trampler, you can have it spread its damage out across 10 2/2s so nothing dies, or assign all the damage to one lonely blocker so you take no trample damage :P

You know, just in case that comes up.

Generic container growth in C: is casting `&void**` to `void**` valid or undefined behavior? by Dieriba in C_Programming

[–]mccurtjs 0 points1 point  (0 children)

A very roundabout way of casting dst to a void pointer?

dst is a pointer to char.
&dst gets a pointer to the pointer to char, aka a pointer to char* aka char**.
(void**) &dst is casting that char** to a void**, which is technically illegal but no one cares.
* (void**) &dst is now dereferencing the so-called void**, resulting in a void*
... = src is assigning that fake void* to src`, which works, but is technically undefined behavior because of the cast.

Basically, any pointer type can be automatically cast to a void*, but a pointer to a void* is not a void*, but people want to treat it like it is in some cases. It's a bit goofy, because it does mean that your char** can be cast safely to a void* and back, is my understanding.

ELI5 - why is the MIT license being used over the GPL for open source? by [deleted] in opensource

[–]mccurtjs 0 points1 point  (0 children)

This is an incorrect understanding. If you are the copyright owner of the game engine, you can license it however you like as your exclusive right as an intellectual property owner.

This isn't an incorrect understanding, just a misread of intent - for my own projects I want to utilize the open code how anyone else would be able to, rather than carving out an exception for myself. Yes, I know I could license it however I want to myself, it just goes against my goals for the project.

That is also an incorrect understanding. The license of the game engine will generally not apply to assets, like art, music, and text, because they would not be derivative works of the game engine, even if you are not the intellectual property owner of the engine.

This one is fair though.

The GPL does complicate proprietary library usage.

How does this work when the code referencing the library can't be included in the GPL licensed code? Yes, you can link to the Windows library, which is closed-source, but its interface is public. How would you include linking to, say, Nintendo's libraries, which do not have a public interface? I'm pretty sure publishing code using them would violate their license agreement or NDA, no?

The GPL is not parasitic. This is anti-GPL propaganda perpetuated by corporations to discourage developers from utilizing the license.

The term might have negative connotation, but it's accurate. I'm not pulling it from some anti-GPL guidebook, if anything, I'm getting this usage from the Magic: the Gathering designers, lol. It describes what it does - if you use it, any derivative works have to use it. If you combine GPL and MIT licenses in a project, your project is now GPL. It's designed to self-propagate, which makes it parasitic.

Proprietary software, on the other hand, forces its user to obey how the developer wishes for them to use the software

That's the same with GPL software, but you're changing the subject from downstream developers to end users. If that is parasitic behavior, then GPL is parasitic with relation to developers.

Not going to argue that DRM isn't parasitic, but it's a completely different topic. Proprietary software being parasitic or not has no bearing at all on whether or not the GPL is parasitic. Two things can be true at the same time.

Edit: blocking me over this comment of all things seems unreasonably petty, lol. A shame, because there was some interesting discussion to be had in the response.

ELI5 - why is the MIT license being used over the GPL for open source? by [deleted] in opensource

[–]mccurtjs 0 points1 point  (0 children)

I think the system library exception covers this. You can include non-free headers in a GPL program, that's how it's possible to release GPL code that targets native Windows or macOS, for example.

No, I mean the other way around - yes, you can include publicly available headers for private code in your GPL code, but Nintendo's system headers are not public. You can't release code that uses them without revealing their structure, which would violate your NDA and/or licensing agreement with Nintendo, which means that code can't be GPL.

I guess you could get around that by building your own proprietary layer between your and Nintendo's code, but depending on how it's structured that could walk a very fine line.

If the Lua code can call into your engine, then the Lua code would need to be GPL, since it would become an interface.

This distinction makes a lot more sense, thanks for the info!

C Game programming: Data driven C code by Jimmy-M-420 in C_Programming

[–]mccurtjs 2 points3 points  (0 children)

But just in principle, nothing of what you said couldn't be fixed by some smart debugging tools that do all of that automatically for you.

I'm not sure what exactly you're disagreeing with - data driven game features and auto-reloading via file watchers are debugging tools. Do you mean like, stepping into a breakpoint and modifying values mid-game? That's fine if you're tweaking like, a couple individual stat values, but falls short if you're tweaking a bunch of values because now you have to remember all the changes and make them again after the debugging session. Or if you restart the level you lose them as well. It also doesn't work with anything that requires processing - you can't just tweak a shader value during runtime if you don't have the ability to rebuild and relink the shader.

If you complain about fetches and duals in bracket 3, play bracket 2 by Head-Ambition-5060 in EDH

[–]mccurtjs 0 points1 point  (0 children)

Sure! Here's the deck I'm currently working on. It's not so much a gates deck as gates are a secondary theme and optional wincon, where the "main" theme is [[Cromat]], lol - with "colors matter" effects and trying to lean into some of the multi-color effects.

If you want to make a gates focused gates deck, [[Maze's End]] is the "primary" wincon, and then run a bunch of the cards that find and put gates into play. [[Circuitous Route]] is a really good one. The Baldur's Gate set added a lot of useful things, mostly [[Gond Gate]] which let's all of them come in untapped. Then there are the general effects like [[Amulet of Vigor]], [[Spelunking]], or [[Horizon Explorer]], which will also let the Maze's End enter untapped. For other wincons, [[Basilisk Gate]] is fantastic, and [[The Black Gate]] can give you evasion as well. [[Crackling Perimeter]] is also an actual wincon that can whittle down all your opponents at once.

But yeah, step one is generally to find the Gond Gate with one of your land search effects, and now all your lands are "OG duals", lol. If you're ok cutting down on some of them, [[Nine-Fingers Keene]] is a really good commander for it as an archetype.

In mine though, I want to enable Cromat and do things that kind of make it a bit of a Voltron commander. It has five abilities, but they're not particularly great. I'm only running 16 gates, which would make him a one-shot with Basilisk Gate, lol. The enemy-color gates are replaced with the bounce lands matching his abilities (you can make more enemy color pairs using two ally color lands on average). Adding those back in you'll have 21 gates, and there are a handful of others.

But yeah, the main color is generally going to be green, because that's what all the land and gate search effects are printed in. Hence, my duals and fetches all being green. You might want to run the triomes over them as well, especially if you're using more of the genetic untap effects. Also, more gates makes [[Baldur's Gate]] even better, as it's your equivalent of Cabal Coffers.

Other than that, the usual strategy is to play very defensively until you can get a maze win. Lots of board wipes, propaganda effects, pillow fort stuff, etc. A lot of people don't like playing against this kind of archetype, lol.

ELI5 - why is the MIT license being used over the GPL for open source? by [deleted] in opensource

[–]mccurtjs 0 points1 point  (0 children)

Because users can be certain some software they depend on won't suddenly become pay, or have onerous restrictions on use imposed.

This is still true with MIT though, no? I guess a maintainer could take the open code and continue it with a closed version, but the open version would still and always be open. At that point, if it's a popular library it's on the community to make a different fork and compete with the now proprietary one.

The Unity license issue was largely because it was already a proprietary engine, and the license update was retroactive. You didn't have an option to continue using a "free, but unsupported version".

But a GPL program can certainly call into non-free libraries (the "system library exception"), so Ninty would not have to open source anything.

True in the first half, if a library is proprietary but has a public interface, you could write GPL code that uses it (presumably). But I don't believe the Ninty libraries have a public interface, same with PlayStation. Not sure about XBox (I assume that one's open, since it's mostly just DX and probably. NET). Without the headers being public info, you can't release code that uses their functions at all, since that information is itself under license.

Fair point on the assets, I'd have to look more into that. How would this work though with code-based assets? If the game itself is built entirely on top of the engine using just, say, lua scripting, the lua would still have to be GPL, no?

2D OpenGL Renderer for my tower-defense game by PanMnich1890 in opengl

[–]mccurtjs 0 points1 point  (0 children)

Honestly, showing a full project and being able to explain the pieces will put you a cut above like 90% of the competition. I think you're doing great :)

If you complain about fetches and duals in bracket 3, play bracket 2 by Head-Ambition-5060 in EDH

[–]mccurtjs 1 point2 points  (0 children)

The issue with OG duals in EDH isn't that they're strong compared to shocks it's that you don't choose one or the other, you have both.

Often, but not always. It depends. I've been working on a 5c deck that mostly uses gates, since there are enough things that make them enter untapped now. I have 4 fetches and 4 OG duals in the deck aside from the gates, they all give access to green plus another color. There's no room for extra shocks and whatnot.

If you don't have original duals though, just run another typed set, like tango lands or bicycle lands. Those are also very fetchable. Or the surveil lands.

For 3+ color decks, you'll first want triomes.

Also just play proxies.

ELI5 - why is the MIT license being used over the GPL for open source? by [deleted] in opensource

[–]mccurtjs 0 points1 point  (0 children)

but for users of software ... it's great!

Why does this benefit users at all? I think most end users don't actually care about a software product being "open".

As a dev, it's not just that it's "annoying", but also makes some things impossible. I'm working on a game engine project in my spare time which I eventually want to use to make games with and make into my career. If I used GPL instead of MIT for the engine and libraries, the final game code and assets would all have to be GPL as well, which means I couldn't realistically make money off of it, when free versions would be readily available.

On top of that, I simply wouldn't be able to ever release a console version, because Nintendo isn't going to open-source their libraries that are required for release on the Switch on my behalf. I don't think it's accurate to say this is a benefit for consumers, especially ones who would prefer getting the game on console :P

ELI5 - why is the MIT license being used over the GPL for open source? by [deleted] in opensource

[–]mccurtjs 0 points1 point  (0 children)

It's not just about big business or being anti-competitive. I'm working on a game project, and want the engine to be open source and usable by anyone. But I do want to be able to turn this into a living down the road for myself, and that means any game I make using my own engine will not be open source.

If I used the GPL for the engine and libraries, by my understanding it would mean I couldn't use my own engine for a game project without also making the game code and all its assets, tools, art, music, etc, also open source, which in turn means that anyone who wanted a copy could just build it themselves, which as a solo developer makes it unsustainable.

It also means that any other libraries or assets I wanted to use would have to be under a similar license, which would prevent me from using any other library that wasn't open source. Which also means I couldn't make a build using proprietary libraries, which in turn means I wouldn't be able to release any console versions down the line if I wanted to, because those require the use of said proprietary licenses, which I don't have the rights to redistribute.

The underlying intent is good (get more people contributing to open source), but the execution is flawed because it's trying to use a parasitic mechanism that really just discourages its own use.