Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
Karia
Mar 27, 2013

Self-portrait, Snake on a Plane
Oil painting, c. 1482-1484
Leonardo DaVinci (1452-1591)

I had a wacky idea that I'm thinking through as I type this. It's dumb for many reasons but I figured I'd type it up anyway.

Items sell for more than you buy them for, increasing at an exponential rate (up to some cap.) A crappy blaster you buy at the start creeps up very slowly in value at first, but after a few stages it starts to go up more rapidly, and if you can manage to stay alive with that weak gun for long enough it'll be worth quite a pretty penny. When you trade it out for the latest and greatest, that new weapon has to start the value-gain over again, rising slowly at first and then with increasing rate.

It therefore penalizes people for constantly upgrading: the best long-term strategy is to hold on to your weak items as long as possible, until you actually can't complete levels with them. Personal skill is placed more at the forefront since it lets you survive longer with the weak items and thus get the most profit out of them. Purchasing things is less a question of "can I afford it" and more "is it worth it right now?" Power is generally going to be acquired in large discrete jumps rather than a smooth curve, so people get a constant variation between easy and hard as they cycle items, with the size of the steps determined by how long they choose to keep old stuff around.

Credits and items are still the only thing the player is accruing to power up, but in a very different way. The credits reflect player skill more than just a count of how many enemies they blew up, so players can take more pride in them. Any powerups you can get that are outside this value-calculus, like those settler items, are very valuable because they give you a short-term power boost without long-term drawbacks. Or maybe it only applies to weapons, and other items act normally?

I'm seeing some major problems with this, though. First, it's counter-intuitive and will probably confuse new players. Second, it exacerbates the difficulty curve. People who are good at the game can get tons of money from holding on to basic weapons for a long time and break the late-game in half, while people who are struggling in the short-term and need upgrades are just getting penalized further. It could possibly be tuned so that players basically get to choose a relatively easy late-game at the expense of the early-game or vise versa, but that would be really hard to do with the procedural generation. The biggest issue, though, is that it discourages exploration and trying new things, since the best option is to just stick with what you've got. That's not good!

Maybe it would make a good gimmick weapon, acting as an optional challenge in exchange for a lot of money if you can survive with it?

Adbot
ADBOT LOVES YOU

Karia
Mar 27, 2013

Self-portrait, Snake on a Plane
Oil painting, c. 1482-1484
Leonardo DaVinci (1452-1591)

Another interesting example of disencouraging grinding is Dungeon Crawl's food counter. While you could stay on early levels and farm the (very slow) respawns, you'd starve to death pretty quickly since the respawns don't provide anywhere close to enough meat to survive. It's a neat way of handling it organically, in a way that makes sense within the universe and uses existing mechanics.

Of course, if you're playing as undead you don't need to eat. Those are dealt with by the dungeon increasing the likelihood of over-strength monsters spawning over time spent on a floor. Less organic (there's no real plot or explanation to Crawl), but effective. Sounds like that's more the route you're going, which makes sense since the threat level ties in to the campaign, so it does make sense in-universe.

Karia
Mar 27, 2013

Self-portrait, Snake on a Plane
Oil painting, c. 1482-1484
Leonardo DaVinci (1452-1591)

If you're not going to do a write-up on color theory do you have any good links? I know nothing about it and would love some reading.

Karia
Mar 27, 2013

Self-portrait, Snake on a Plane
Oil painting, c. 1482-1484
Leonardo DaVinci (1452-1591)

I adore this stuff. I played around with 3d modelling a bunch years ago, but never really got into the technical side. Definitely fun to learn what I was actually doing when I clicked that render button.

EDIT: Though technically, since I mostly used physically based renderers (Indigo), a lot of this doesn't really apply, since (unless I'm horribly mistaken) it's mostly just ways to cheat having to run full-on ray tracing since that's so insanely computationally expensive. I never did anything with real-time rendering systems.

Karia fucked around with this message at 05:27 on Jul 5, 2018

Karia
Mar 27, 2013

Self-portrait, Snake on a Plane
Oil painting, c. 1482-1484
Leonardo DaVinci (1452-1591)

Elentor posted:

Thanks for the feedback, guys! That means a lot to me.


You're right, game rendering is mostly ways to cheat ray tracing! But some stuff still apply - Phong interpolation was used in offline renderers long before it became a real-time thing because it was originally too expensive and it's still behind a bunch of code so you don't have to subdivide mesh infinitely. The basis for most post-processing effects are the same and since color correction has been a part of the rendering pipeline it's been used for movies/archvis a long while before these algorithms were ported into game engines. Also, the basis of having a single composite image based off several renderers was available in traditional renderers like MentalRay a while before deferred rendering and g-buffers were popular in games.

As for shaders, remember that shaders were originally invented by Pixar to enhance Ray Tracing Renderers, we only started using them in games long after. When you ray trace you still need an algorithm to define what color will return and there are just as many optimizations in Indigo as there are in games, only in a different scale or serving a different purpose, they're never 100% accurate. For example, very few renderers fully model the physical properties of surface porosity and instead split it into different consequences of porosity at different degrees, such as SSS, multilayered materials or micro-facets.

Oh, yeah, I've never been under the impression that any renderer is literally modelling the interaction of photons with electrons to simulate materials, they're using approximated material models to simulate the interaction of the light-path with the surface model. It's just about the level of the approximations, as you said. AO, shadows, reflections and refraction, etc, arise naturally from ray tracing, but even Indigo's much-vaunted sun-sky model is cheating in some ways: they pre-baked all the data rather than modelling the entire planet every time you want to do a render (fricking cheaters.) Hell, even path tracing is a weird approximation where they simulate photon bouncing backwards since it's less computationally wasteful. So... exactly what you just said.

And thinking about it one way: even in photography (which uses the most physically-accurate rendering engine imaginable) they still us compositing, color correction, and tons of other cheats to get a better looking image, even if it's not the most representative of reality.

Karia fucked around with this message at 16:08 on Jul 5, 2018

Karia
Mar 27, 2013

Self-portrait, Snake on a Plane
Oil painting, c. 1482-1484
Leonardo DaVinci (1452-1591)

Elentor posted:

The ultimate irony is that every photographer spends a shitload of money to get a clean image, companies spend millions trying to advance lens to make images as nice as possible, and we're tossing around chromatic aberration and lens dirt effects on purpose.

I'm curious how you'd react if I were to say lens flair. You know, hypothetically.

Karia
Mar 27, 2013

Self-portrait, Snake on a Plane
Oil painting, c. 1482-1484
Leonardo DaVinci (1452-1591)

Totally a tangent, but: the Moiré pattern discussion is very interesting to me because I'm used to thinking of interferential patterns as a good thing. I work in manufacturing and interference patterns are commonly used for precision measurements, from the simple vernier scale on micrometers to interferential glass scales and encoders to interference patterns of reflected light, thereby magnifying small linear movements. It's always interesting to see a problem in one area being used to solve another area's problems.

Karia fucked around with this message at 22:08 on Jul 14, 2018

Karia
Mar 27, 2013

Self-portrait, Snake on a Plane
Oil painting, c. 1482-1484
Leonardo DaVinci (1452-1591)

TooMuchAbstraction posted:

One of my past jobs was cleaning up a program written primarily by biology graduate students. One pattern I saw periodically was:
Python code:
def foo(things):
  try:
    things[0]
  except:
    things = [things]
That is, they would try to treat their input as an array, and if it were not an array, then they would turn it into one and proceed with the rest of the program. Because they wanted to be able to do foo(1) as well as foo([1, 2, 3]) and have the function figure out what they meant.

(Never mind what would happen if they tried to pass a zero-length array to the function)

In a similar vein: in one of my first programming projects a couple years ago I had to create long arrays of points. I wanted to start with an undimensioned array and have a single function I could call to add points to it because it would look neater in the main function.

My solution to this?

code:
Public Function appendPoint(arr as Point(), pt as Point) as Point()

Try:
    Redim Preserve arr(UBound(arr)+1)
    arr(Ubound(arr)+1) = pt

Catch:
    Redim arr(0)
    arr(0)=pt

End Try

    Return arr

End Function
Of course it's VB.

Adbot
ADBOT LOVES YOU

Karia
Mar 27, 2013

Self-portrait, Snake on a Plane
Oil painting, c. 1482-1484
Leonardo DaVinci (1452-1591)

So how long did it take semantic satiation to set in? Don't tell me you wrote that whole thing without 'noise' starting to look like its spelled wrong.

Fantastic stuff, as always. I had a lot of fun adding Floyd-Steinberg dithering to a half-tone generator I wrote last year, it's a really neat and intuitive idea, though my application was incredibly simple. I look forward to hearing what you pros do with it.

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply