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
KillHour
Oct 28, 2007


Your Computer posted:

as far as i know face normals are not really a "thing" in the gpu pipeline, nor are faces with more than 3 vertices. it's all triangles over in gpu land and the only normals you have access to are the vertex normals.

anyway just for you here's the shader without the preprocessing step where all the verts are just using 0 instead of the center of the triangle. i'm gonna bet this one's more your taste!



The link didn't embed, but yes, I really like it. You're right, of course, about the GPU pipeline thing. Old games like that used software rendering and they did whatever they wanted (or more accurately, they did whatever they had to to make it work, given the limited resources). Even having per-vertex normals and realtime point lights to work with would have been an unimaginable luxury. As for how I think they actually did it - I think they just had a fixed directional "light" and calculated the angle of that light vs each triangle's normal, and then flood-filled a flat color multiplied by whatever that is.

That said, your goal isn't to perfectly recreate an effect that an old game actually had, so do whatever you think evokes the feeling of those old games the best.

Edit: If you really wanted to do something like calculate the face center and normal of a 2D primitive on a modern GPU, you could do it with a geometry shader.

KillHour fucked around with this message at 00:25 on Mar 22, 2024

Adbot
ADBOT LOVES YOU

Chev
Jul 19, 2010
Switchblade Switcharoo

Jabor posted:

If you use flat interpolation for your normals, then only the normals attached to one of your vertices actually applies to that specific face, so you don't need to do very much vertex splitting for option 1.
If you use flat interpolation, then two faces that don't have the same normal cannot start from the same vertex, which is a trickier ordering problem than it first seems, and unsolvable without splitting depending on topology.

Jabor
Jul 16, 2010

#1 Loser at SpaceChem

Chev posted:

If you use flat interpolation, then two faces that don't have the same normal cannot start from the same vertex, which is a trickier ordering problem than it first seems, and unsolvable without splitting depending on topology.

The number of verts you need to split is typically very small, and while it might be tricky to work out the perfect ordering it's pretty easy to come up with a "good enough" one.

Even in a literal worst-case scenario where every triangle gets its own provoking vertex, you're still reusing 2/3 of them, which is miles better than your proposal to split every single vertex.

Your Computer
Oct 3, 2008




Grimey Drawer

KillHour posted:

Edit: If you really wanted to do something like calculate the face center and normal of a 2D primitive on a modern GPU, you could do it with a geometry shader.

not in godot, unfortunately (no geometry shader support)


e: to clarify a few things - yes in most of these games (like aitd) there was no lighting at all, or what you could call "pre-baked" lighting which is just to say they colored the model in as if it was lit from a specific angle

obviously this is not a viable option in a fully 3d game built around the ability to grab and move things around the 3d scene which is why this shader specifically tries to make the lighting step of the shader pipeline approximate this kind of directional lighting but from omni/3d lights. this is the difficult step especially in godot which had no geometry shaders or similar capabilities. i do care about authenticity and the idea behind this was to make something like looks like the old pre-baked lighting while also working in a realtime 3d environment where the objects are moved around by the player and i am very happy with the result

Your Computer fucked around with this message at 12:55 on Mar 22, 2024

KillHour
Oct 28, 2007


All I'm saying is that lighting all the vertices from the same point like in that last video is closer, both stylistically and technically, to old games like that. But that matters less than how it feels to the artist (you).

It's just ironic that getting the specific "low fidelity" look you're going for requires using more advanced shading tech specifically to make it less realistic looking. That's something the old games would have never done because they were trying to hide the polygons as much as possible, given the technical limitations. The only reason I'm mentioning it is because it's interesting (to me) that making a game with retro styling is completely different to making a game for retro hardware.

Edit: To be clear, I'm not saying you should change it. I'm noting that having the triangle lighting calculated at the face if each triangle instead of in the center of the mesh is an anachronism. But if it gets you closer to how you imagine your game should look, you should do it. Nothing in games is truly "authentic," whatever that means. Everything only needs to follow the rule of cool.


Double edit: I can't shake the feeling that this still comes off like I'm trying to argue. So instead I'm just going to say it looks really cool and the technique you came up with to get the effect you wanted is really clever, so you should lean into how unique it is.

KillHour fucked around with this message at 15:22 on Mar 22, 2024

overeager overeater
Oct 16, 2011

"The cosmonauts were transfixed with wonderment as the sun set - over the Earth - there lucklessly, untethered Comrade Todd on fire."



Sonniss released their annual bundle of free game sound effects for GDC 2024 (with past years' bundles still available).

Aneurexorcyst
Feb 11, 2004

There is a great disturbance in the monarchy...
Decided to take down the SENTRY demo before release because it was no longer representative of what people will be playing at early access ON MONDAY!

However, I thought I'd capture a play through so it wasn't completely lost to time :)

https://www.youtube.com/watch?v=Tsc3srAWNrs

Trailer should be done in time for early access on Monday... quite a tight deadline on this one :sweatdrop:

cmdrk
Jun 10, 2013

Aneurexorcyst posted:

Decided to take down the SENTRY demo before release because it was no longer representative of what people will be playing at early access ON MONDAY!

However, I thought I'd capture a play through so it wasn't completely lost to time :)

https://www.youtube.com/watch?v=Tsc3srAWNrs

Trailer should be done in time for early access on Monday... quite a tight deadline on this one :sweatdrop:

:drat: that gameplay looks crunchy and satisfying

dopesilly
Aug 4, 2023

Aneurexorcyst posted:

Decided to take down the SENTRY demo before release because it was no longer representative of what people will be playing at early access ON MONDAY!

However, I thought I'd capture a play through so it wasn't completely lost to time :)

https://www.youtube.com/watch?v=Tsc3srAWNrs

Trailer should be done in time for early access on Monday... quite a tight deadline on this one :sweatdrop:

Sci-fi Orcs Must Die vibes. Really dig it, this is the style of game I'd wanna play. I played a lot of Sanctum as well, I wish there were more tower defense FPS games.

SerthVarnee
Mar 13, 2011

It has been two zero days since last incident.
Big Super Slapstick Hunk

Aneurexorcyst posted:

Decided to take down the SENTRY demo before release because it was no longer representative of what people will be playing at early access ON MONDAY!

However, I thought I'd capture a play through so it wasn't completely lost to time :)

https://www.youtube.com/watch?v=Tsc3srAWNrs

Trailer should be done in time for early access on Monday... quite a tight deadline on this one :sweatdrop:

I'm going to take a look through this and give you a fuckton of timestamped instances where I come across epilepsy related issues for you guys to work on later on. I'll PM it to you if that is okay, but just from the starting menu, I'd love to eventually see a separate button for disability related feedback. you can dump all that in the same pile as the bug reports and regular feedback, just make it look like the "I can't play this with no left hand because X key combo is out of reach of my special 1 handed rig" and "I can't focus on the item selection because the stripe travelling down in the background is loving with my head" gets separate attention from "why does my gun go clickclick when the counter reaches zero?".

SerthVarnee fucked around with this message at 08:39 on Mar 25, 2024

Polio Vax Scene
Apr 5, 2009



Aneurexorcyst posted:

Decided to take down the SENTRY demo before release because it was no longer representative of what people will be playing at early access ON MONDAY!

However, I thought I'd capture a play through so it wasn't completely lost to time :)

https://www.youtube.com/watch?v=Tsc3srAWNrs

Trailer should be done in time for early access on Monday... quite a tight deadline on this one :sweatdrop:

love the aesthetic of this and I hope you include an "extreme" difficulty. I skipped to "Advanced" and even then it's just 1 or 2 enemies at a time in a single corridor, and most of them were taken care of by the traps still.

cumpantry
Dec 18, 2020

SerthVarnee posted:

I'm going to take a look through this and give you a fuckton of timestamped instances where I come across epilepsy related issues for you guys to work on later on. I'll PM it to you if that is okay, but just from the starting menu, I'd love to eventually see a separate button for disability related feedback. you can dump all that in the same pile as the bug reports and regular feedback, just make it look like the "I can't play this with no left hand because X key combo is out of reach of my special 1 handed rig" and "I can't focus on the item selection because the stripe travelling down in the background is loving with my head" gets separate attention from "why does my gun go clickclick when the counter reaches zero?".

across all 40 minutes? wow thats some dedication. aneur should pay you out a stipend and gym mat IMO

DaveKap
Feb 5, 2006

Pickle: Inspected.



Aneurexorcyst posted:

Decided to take down the SENTRY demo before release
Excited to stream this tonight!

SerthVarnee
Mar 13, 2011

It has been two zero days since last incident.
Big Super Slapstick Hunk
PM sent. I got 22:13 in before my eyes were watering up with eye strain. Looks great and super fun in general though.

Aneurexorcyst
Feb 11, 2004

There is a great disturbance in the monarchy...
So I finished the launch trailer: https://www.youtube.com/watch?v=Ia85mY3D4SA

As it is a launch trailer, that naturally that means the game is also out - so please enjoy! https://store.steampowered.com/app/1252680/SENTRY/

SerthVarnee posted:

I'm going to take a look through this and give you a fuckton of timestamped instances where I come across epilepsy related issues for you guys to work on later on. I'll PM it to you

Thanks for the feedback, I'll add it to the list!

DaveKap posted:

Excited to stream this tonight!

Yaaaaaas.

Chance
Apr 28, 2002


This looks really good. Who did the music? I'm getting a strong dance with the dead vibe and I love it.

SerthVarnee
Mar 13, 2011

It has been two zero days since last incident.
Big Super Slapstick Hunk

Aneurexorcyst posted:

So I finished the launch trailer: https://www.youtube.com/watch?v=Ia85mY3D4SA

As it is a launch trailer, that naturally that means the game is also out - so please enjoy! https://store.steampowered.com/app/1252680/SENTRY/


Okay the new trailer is making me even more hyped about playing the game.

But err....it also made me instinctively reach out for my morning epilepsy meds...

I'll be back later today with some feedback.

anatomi
Jan 31, 2015

Yeah, that's a cool trailer! Makes me hyped.

Tupperwarez
Apr 4, 2004

"phphphphphphpht"? this is what you're going with?

you sure?

Aneurexorcyst posted:

So I finished the launch trailer: https://www.youtube.com/watch?v=Ia85mY3D4SA

As it is a launch trailer, that naturally that means the game is also out - so please enjoy! https://store.steampowered.com/app/1252680/SENTRY/
Nicely done! Clearly says what you need to do in the game, shows gameplay of how to get it done, while tightly edited to show just enough, and engaging music to bring it together.

For some reason, the stylized design here reminded me that Thunder Helix recently went into Early Access, need to check that out too...

DaveKap
Feb 5, 2006

Pickle: Inspected.



PM'd you a link to the stream along with feedback. You've got a solid start, I hope you're ready for content-add mode because it doesn't feel like you've got much to fix!

Hammer Bro.
Jul 7, 2007

THUNDERDOME LOSER

I'm not much of a video-watcher but those were some good-rear end sound effects. Nice and chunky. Thicc if I wanted to extend my accidental analogy.

Also the stereo pan on the sound effect after it got quiet was a good touch too.

Best of luck!

SerthVarnee
Mar 13, 2011

It has been two zero days since last incident.
Big Super Slapstick Hunk

Aneurexorcyst posted:

So I finished the launch trailer: https://www.youtube.com/watch?v=Ia85mY3D4SA

As it is a launch trailer, that naturally that means the game is also out - so please enjoy! https://store.steampowered.com/app/1252680/SENTRY/

Thanks for the feedback, I'll add it to the list!

Yaaaaaas.

New launch trailer feedback sent through PM.

Dewgy
Nov 10, 2005

~🚚special delivery~📦
I don’t think I’ve seen anyone mention it ITT, Picotron (the sort of “sequel” to PICO-8) is out in alpha and available at a discount until the end of the month: https://www.lexaloffle.com/picotron.php

It’s basically the Amiga to PICO-8’s Apple II, and even though it’s a little rough around the edges so far I can see a ton of potential here.

Onimwad
Mar 14, 2019

I Love Making Games!
With this and the pips on the bottom part showing your item capacity done, the inventory rework is complete!
Next task is animating some player knockback stuff.

A TON of QoL and detail work went into this last couple weeks too.
This milestone marks the beginning of the race to add content. New enemies, items, weapon infusions, tilesets, everything. As much STUFF as I can until the end of the year, then I wrap it up into a DEMO!!
Crazy I've gotten this far. What a ride, and it's only starting.

https://x.com/Grabbus_Game/status/1775168477164126519?s=20

TooMuchAbstraction
Oct 14, 2012

I spent four years making
Waves of Steel
Hell yes I'm going to turn my avatar into an ad for it.
Fun Shoe
I'm looking into adding moddable missions to Waves of Steel. Problem: the mission editor I made so that I could author missions is just a Unity custom editor window. It uses my Editor code, which in turn depends on my game code. I thought I could just grab the DLL of my game from an install, and pop that into an empty Unity project, but I get a bunch of compiler errors that appear to be due to DLLs failing to find their dependencies, I think. For example:

code:
Error: Could not load signature of CratePickupText:RiseAndFade due to: Could not load file or assembly 'Unity.TextMeshPro, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. assembly:Unity.TextMeshPro, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null type:<unknown type> member:(null) signature:<none>
Before I go off the deep end of trying to manually resolve all of these dependency linkages, I don't suppose anyone here has some advice?

leper khan
Dec 28, 2010
Honest to god thinks Half Life 2 is a bad game. But at least he likes Monster Hunter.

TooMuchAbstraction posted:

I'm looking into adding moddable missions to Waves of Steel. Problem: the mission editor I made so that I could author missions is just a Unity custom editor window. It uses my Editor code, which in turn depends on my game code. I thought I could just grab the DLL of my game from an install, and pop that into an empty Unity project, but I get a bunch of compiler errors that appear to be due to DLLs failing to find their dependencies, I think. For example:

code:
Error: Could not load signature of CratePickupText:RiseAndFade due to: Could not load file or assembly 'Unity.TextMeshPro, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. assembly:Unity.TextMeshPro, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null type:<unknown type> member:(null) signature:<none>
Before I go off the deep end of trying to manually resolve all of these dependency linkages, I don't suppose anyone here has some advice?

write it new. json for data. provided plugin api for code if wanted/warranted. load assets from relative path from user mod directory.

leper khan
Dec 28, 2010
Honest to god thinks Half Life 2 is a bad game. But at least he likes Monster Hunter.
and/or ship some interfaces and some code to build an asset bundle. allow loading of side loaded bundles, including user code that fits your plugin interface

TooMuchAbstraction
Oct 14, 2012

I spent four years making
Waves of Steel
Hell yes I'm going to turn my avatar into an ad for it.
Fun Shoe
I am looking for solutions that do not involve completely reinventing everything, thank you.

Also, to be clear: the mission data is already stored in JSON. The custom editor window I made handles saving/loading, spawning gameobjects, and setting up various mission data like objectives, weather, and music. "Saving" is "inspecting the scene and serializing relevant stuff to JSON", "loading" is "reading JSON and spawning gameobjects". The user can fiddle with gameobjects e.g. by changing positions/rotations/scales, and they can manually set up some stuff that the custom editor window doesn't know how to do, like creating trigger volumes or laying minefields (the editor knows how to save/load these things, just not how to spawn them).

The problem is that the editor window depends on my main game code in many, many areas. And the main game code depends on a bunch of other stuff.

EDIT: for a sense of complexity, this is what the editor looks like when I'm working on a mission:



Lower-right corner is the editor window. Everything in the scene hierarchy that's under "MissionEditor Root" is part of the mission. I can edit components like the "ShipStandin" to change mission data (e.g. the selected ship is flagged as the player through that component).

TooMuchAbstraction fucked around with this message at 02:10 on Apr 5, 2024

Jabor
Jul 16, 2010

#1 Loser at SpaceChem
Could you create a "stub" of your game code that has all the function signatures and types but no actual implementations (and thus no dependencies)? Or does the editor need to actually call into your game code and see the results sometimes?

TooMuchAbstraction
Oct 14, 2012

I spent four years making
Waves of Steel
Hell yes I'm going to turn my avatar into an ad for it.
Fun Shoe

Jabor posted:

Could you create a "stub" of your game code that has all the function signatures and types but no actual implementations (and thus no dependencies)? Or does the editor need to actually call into your game code and see the results sometimes?

Ugh...maybe? But it'd be barely better than "rearchitect the entire thing", now we're talking "refactor the entire thing and make a bunch of stubs". The core game loop isn't actually running, of course, but there's a lot of game components which are compatible with the editor, by having widgets for visualization, editable parameters, and the ability to be discovered during the load/save process. Every one of those would need to be converted into an editor-only stub, which would need to be made strictly compatible with the actual game.

I really, really feel like the easiest solution here would be to extract the DLLs from the actual game, and have the editor be able to depend on those. I just haven't figured out how to get that to work, and was hoping y'all might have some advice.

(though it occurs to me that stuff like widgets wouldn't be in the shipped DLLs anyway...poo poo)

Red Mike
Jul 11, 2011

TooMuchAbstraction posted:

I really, really feel like the easiest solution here would be to extract the DLLs from the actual game, and have the editor be able to depend on those. I just haven't figured out how to get that to work, and was hoping y'all might have some advice.

(though it occurs to me that stuff like widgets wouldn't be in the shipped DLLs anyway...poo poo)

I've been through something very like this a dozen times so far. It's 100% not anywhere near the easiest solution, it's just not obvious that there's a metric ton of work (or that the approach plain won't work, depending on what you're trying to do). You'd basically end up open-sourcing part of your game...while stubbing out all the other parts that they shouldn't have and also either including assets or fake assets. That process of trying to figure out which parts are necessary and which not, and make usable stubs, and maintain two separate branches for the code at that point, and also make sure you don't accidentally put something important in the wrong spot, is an order of magnitude more work than:

You know the resulting format and what it means.
You already have a pattern to follow in terms of the existing window/logic.
Make a new project (could still be Unity-based if you wanted) that does not have any reference to your actual game project.
Copy the resulting format classes in.
Remake the UI of the window as it already exists (copy it or mimic it).
Now just go through each function and make it do the right thing without invoking your code.

That bolded part particularly will feel like a huge amount of work before you start, but I guarantee it's at least an order of magnitude less work than trying to do weird Unity Editor things. And it's entirely likely that the actual amount of work is tiny overall because you're not reimplementing your whole game (or trying to stub your whole game).

e: That all said, there are times when the Unity Editor approach is still the best solution because of specific things. In those cases: don't try and use your built DLL, but build a new DLL specifically for this (and stub out the bits that shouldn't be distributed); it can be the same DLL but built with a different set of defines if needed.
Alternatively, you could use something that isn't Unity to build that DLL and therefore it'll allow you to maintain things that use UnityEditor.dll inside the built DLL. But then you run into Unity TOS/licensing nightmares, so don't distribute it to players.

Red Mike fucked around with this message at 14:36 on Apr 5, 2024

KillHour
Oct 28, 2007


I'm seconding that because it's what I decided to do when I restarted my project from scratch (again), so I could completely decouple the UI from the core logic. The UI sends JSON to the renderer and that's it as far as coupling goes. It's a lot of work, but the resulting code is about 100000x less load-bearing and lovely.

Red Mike
Jul 11, 2011
Also if nothing else, it's way more fulfilling to develop. It feels like it would be grunt work, but you're basically taking two well polished bits of interface (a battle-hardened editor window, and your tried-by-fire map format) and replacing the duct-tape-and-gum nonsense in the middle to make a clean polished set of pipes between them.

It's probably the most satisfying bit of work I can think of short of early prototyping when you're experimenting with very basic game mechanic changes.

KillHour
Oct 28, 2007


I wouldn't go that far. People like different things. I'm most fulfilled when I'm creating a Rube Goldberg monstrosity that shouldn't work but does. I hate turning proof of concept code into something polished and shippable because I have ADD and want to move onto the next thing. But it has to be done.

Red Mike
Jul 11, 2011
Maybe, but I personally really hope no-one finds get-Unity-Editor-to-work-as-player-tool build process/code hacking to be fulfilling. I guess some people probably do based on the number of times I've joined a project only to find half-broken things that are pretty much that.

KillHour
Oct 28, 2007


It's fulfilling in the sense that you now have a tool that you can use to do the thing you want, and you're not that bothered that it breaks randomly or needs to be clicked on in a certain specific order because fixing those things is less fun than using it.

Hammer Bro.
Jul 7, 2007

THUNDERDOME LOSER

I'm tired/distracted posting so I may have lost the plot, but you could use something like https://github.com/lucasg/Dependencies to find all of the DLLs you're missing; I can't remember if it helps suss out which ones are pulled in by which function calls or not.

One interesting thing about Windows (at least as of a year ago; this has security implications that have gone surprisingly, to my knowledge, unexploited) is in the way it loads DLLs.

I forget exactly what the load order is but most programs load most DLLs by name, not absolute path, and the way Windows provides those DLLs is by checking first in the current working directory (or maybe the EXE's directory), second in some user defined folder, third in some system folder like C:\Windows\System32, etc. The point is it checks in the folder where the DLL is first.

It's (relatively) straightforward to write a DLL that proxies only specific functions by existing earlier on the search path and having the same DLL name / function signature such that that version runs first. It would be a little more complicated to rewrite one which dynamically intercepted all functions for a DLL of that name and did whatever with 'em.

Your Computer
Oct 3, 2008




Grimey Drawer
i'm still working on it!!!


https://i.imgur.com/AXU4IaY.mp4

(has sound)

reignonyourparade
Nov 15, 2012
Stealing gemstones out of a statue's eyes coming eventually, Y/N?

Adbot
ADBOT LOVES YOU

megane
Jun 20, 2008



A new hand touches the beacon!

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