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
Phigs
Jan 23, 2019

roomforthetuna posted:

It's tricky because the modern license is for a period of time, rather than for a version, so it's a lot like "your lease is up and I'm increasing the rent next year" (though doing it *immediately* rather than "after the next renewal period" is surely not legally binding, unless the original contract explicitly said that was a thing they could do).

Time-based licenses for a thing that is not inherently a service are, of course, a huge piece of poo poo.

Huh, I hadn't actually thought of it like that. I guess then part of their mistake was making people like me aware that this is how the license works.

Adbot
ADBOT LOVES YOU

FuzzySlippers
Feb 6, 2009

So Unity is struggling to make money while constantly blowing tons of cash acquiring weird companies. Feels like the candle meme.

Hughlander
May 11, 2005

FuzzySlippers posted:

So Unity is struggling to make money while constantly blowing tons of cash acquiring weird companies. Feels like the candle meme.

lol, you think they used cash for the acquisitions? Ironsource at least was all stock, the others that I've checked didn't say.

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

Hughlander posted:

lol, you think they used cash for the acquisitions? Ironsource at least was all stock, the others that I've checked didn't say.

Weta was $1b cash $625m stock apparently.
https://variety.com/2021/digital/news/unity-acquires-weta-digital-1235107544/

OneEightHundred
Feb 28, 2008

Soon, we will be unstoppable!

KillHour posted:

got rid of the splash screen requirement for the free versions of unity
It still kind of blows my mind that Unity manages to have the only game engine or middleware or anything where developers think it is very important they they can avoid having to acknowledge that they used it.

roomforthetuna
Mar 22, 2005

I don't need to know anything about virii! My CUSTOM PROGRAM keeps me protected! It's not like they'll try to come in through the Internet or something!

OneEightHundred posted:

It still kind of blows my mind that Unity manages to have the only game engine or middleware or anything where developers think it is very important they they can avoid having to acknowledge that they used it.
That is strange. Like if I made a project with Godot I would very happily give it some credit.

Though I suppose I would prefer not to do a splash screen because I hate when games have a series of 6 splash screens so getting to the menu takes nearly as long as loading a game from cassette tape back in the day. Maybe that's the thing, like it's not that devs don't want to say "made with unity", they just don't want to say it for 3 seconds during every startup?

xzzy
Mar 5, 2009

We all hate splash screens because it increases the time to fun.

I'd be fine with a little logo in the corner of the title screen.

OneEightHundred
Feb 28, 2008

Soon, we will be unstoppable!
Logo on the main screen would be better, but it'd be way more work for them to enforce it.

But it is a striking contrast when like games will throw the Unreal Engine splash in when they aren't even required to, meanwhile devs actively avoid showing the Unity splash not just because it's time-consuming, but because it's associated with "cheap" games. Really impressive level of branding malpractice.

Rocko Bonaparte
Mar 12, 2002

Every day is Friday!
Yeah I vaguely remember my feed got some video in it where somebody was going through a pile of poo poo games and the Unity splash screen kept soliciting an immediate groan.

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
Unreal's license requires you to credit it (with fill-in-the-blank language specified in the license) if your game has credits, but you also need to get Epic's permission if you want to use any of their branding. Pre-game splash screens aren't required though, and why would you add one if you didn't have to?

The problem with the Unity splash screen (and with the fmod splash screen and all those others that you see in some games) is that gamers don't generally give a poo poo what tech was used to make the games they're playing. They just want to play the game. Unity gets a double whammy because for a long time there's been negative associations of Unity with bad games. So gamers would see "made with Unity" and think "game is crap" before they saw one instant of gameplay. You'd think that this would encourage Unity to remove the splash screen requirement, but they were clever enough to realize that gamedevs also didn't want that association, and were willing to pay to get rid of it.

Tricky Ed
Aug 18, 2010

It is important to avoid confusion. This is the one that's okay to lick.


roomforthetuna posted:

I think I saw someone predicting this; "we proposed an outrageously stupid plan, and now, due to CUSTOMER FEEDBACK, we're rolling it back to a merely exploitative plan and we hope that the previous stupid plan will distract you from the fact that we're still screwing you compared to what you were originally promised."

I used to think companies did this feinting on purpose, but after 10+ years of experience, nope.

No matter how dumb you think the c-suite is, they're dumber. Every board is stocked with people who obtained power by being tall and completely full of themselves and god help your organization when they come up with A Plan to fix the company's problem (of not making enough money for them, specifically).

There's no reasoning with them from "below," and no one else on the board will oppose them because the only thing that gets you kicked off a board is disagreeing with other board members.

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

Tricky Ed posted:

I used to think companies did this feinting on purpose, but after 10+ years of experience, nope.

No matter how dumb you think the c-suite is, they're dumber. Every board is stocked with people who obtained power by being tall and completely full of themselves and god help your organization when they come up with A Plan to fix the company's problem (of not making enough money for them, specifically).

There's no reasoning with them from "below," and no one else on the board will oppose them because the only thing that gets you kicked off a board is disagreeing with other board members.

Bear in mind that the board of directors and the executives are all buddies with each other. The CEO of this company is on the board of the company where his friend is the CEO, and vice versa.

Ranzear
Jul 25, 2013

Tricky Ed posted:

I used to think companies did this feinting on purpose, but after 10+ years of experience, nope.

Hanlon's Razor

OneEightHundred
Feb 28, 2008

Soon, we will be unstoppable!

TooMuchAbstraction posted:

Bear in mind that the board of directors and the executives are all buddies with each other. The CEO of this company is on the board of the company where his friend is the CEO, and vice versa.
Is there any evidence that the per-install flat fee thing was a CEO-level decision anyway? That seems like the kind of decision that's normally delegated to lower-level execs unless the CEO is a micromanaging idiot.

TooMuchAbstraction posted:

Pre-game splash screens aren't required though, and why would you add one if you didn't have to?
Because they think it's a flex to show off that they're made with cool technology. That works, kind of, when the technology has a good reputation.

Sometimes splashes are there due to contractual requirements but that's pretty rare now unless it's because the company getting the splash made some major commitment. There is a bunch of middleware with logo requirements though (Bink is an obvious one).

quote:

You'd think that this would encourage Unity to remove the splash screen requirement, but they were clever enough to realize that gamedevs also didn't want that association, and were willing to pay to get rid of it.
Yeah except I don't think that was "clever," the end result was that the cheap games showed that they were using Unity, and the expensive games didn't, which made it even MORE associated with the cheap games.

They would have been better off if they did the opposite, yanking it from Personal Edition and requiring it on expensive tiers.

The entire point of logo requirements is to use the success of the end result to advertise it to new customers, and somehow they came up with a policy that only associates it with the worst results.

OneEightHundred fucked around with this message at 03:49 on Sep 25, 2023

Catgirl Al Capone
Dec 15, 2007

TooMuchAbstraction posted:

Pre-game splash screens aren't required though, and why would you add one if you didn't have to?

back in my day that "Made with Macromedia" logo was a sign of prestige

Hughlander
May 11, 2005

OneEightHundred posted:

Is there any evidence that the per-install flat fee thing was a CEO-level decision anyway? That seems like the kind of decision that's normally delegated to lower-level execs unless the CEO is a micromanaging idiot.

A major change to licensing and a brand new revenue stream? There’s no way in hell that wasn’t brought to the board. And it’s not brought to the board without CEO sign off.

Easy way to think about it, “If they’re going to have to talk about it during an investor call, the board is going to have voted on it”

At least in my experience.

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

Hughlander posted:

A major change to licensing and a brand new revenue stream? There’s no way in hell that wasn’t brought to the board. And it’s not brought to the board without CEO sign off.

Easy way to think about it, “If they’re going to have to talk about it during an investor call, the board is going to have voted on it”

At least in my experience.

There's always the "someone is about to get fired" option. But in this case that would be MW, and I don't think he'd set himself up for that in an environment where he's been fighting for continued relevance.

Isometric Bacon
Jul 24, 2004

Let's get naked!
Yeah, there's no way this hasn't been across the CEO / board. Unity has been pushing for more profit for awhile now, in a matter of seemingly lovely ways.

We use Unity Industry, (i.e not for games tier) and just earlier this year they said we could no longer use Pro, and tripled the cost of our subscription, mid period, with no consultation and told us that to continue using Unity we'd have to pay the delta for the remaining period.

That was a year or so since another price hike, so naturally I was pretty annoyed, but there was not enough vocal users at the time to really kick up a stink.

Then this happens, which really hits the nail on the coffin. I love unity, but if I'm honest, most of the best revisions came in unity 5 and it's been coasting ever since. Most new features feel unfinished, are a black box of confusion with piss poor documentation or are aimed directly at experienced software engineers with very little editor interfaces, which is one of Unity's strong points for rapid development.

Rocko Bonaparte
Mar 12, 2002

Every day is Friday!
I recreated the floor trigger stuff in Unreal that I had just been blowing a bunch of time on in Unity. In Unity, I had originally had trigger enter/exit callbacks to try to lower and raise the floor tile and trigger activation. That didn't work because enter and exit functions would call within or multiple times across adjacent FixedUpdate cycles; the signal was "bouncing" and causing multiple presses/unpresses. I had to resort to polling onTriggerStay. I set up the same scenario in Unreal and expected to have to fight through all that trouble in a blueprint too. Well, it just worked the first time. No bouncing. No goofiness. I was pleasantly surprised.

Now, it took me a bunch of time to figure out how to even properly get the collision detection and have the tile move. I had to create a component and then a component blueprint instead of trying to attach a blueprint to an actor directly. I then had to make sure to target the scene component when moving the tile down or it would just move the whole thing to the origin. I was intended to lower it relative to its original position by (0, 0, -9), but it would take that as an absolute position if I didn't specify the correct target (from multiple choices). So I'm not going to act like this is just hitting me perfectly or anything.

Chillmatic
Jul 25, 2003

always seeking to survive and flourish
I wanted to chime in with some help but I'm having trouble parsing what you're actually trying to do.

Rocko Bonaparte
Mar 12, 2002

Every day is Friday!
I was just pointing out a very distinct difference between Unreal and Unity collision detection. The Unreal UX is still really strange to me, but they was an overlap event triggered was much more intuitive than what I had to do in Unity to get it to work.

The other stuff was mostly just my troubles understanding Unreal to get any kind of effect at all. That's dealing with a lot of "unknown unknowns."

Raenir Salazar
Nov 5, 2010

College Slice
Goddamn touch controls in Unreal are so much more effort.

Pinch is kinda hosed because it's a weird range of values, it isn't - 1 to 1 or 0 to 1, but like 0 to 5 for pinching and then 20+ for spreading.

Rotation has weird gimble lock problems...

Tapping is fine but you still basically have to implement drag. End result is I needed to reimplementing from scratch all the basic touchscreen controls and refactor and revamp it on like three different occasions now at work.

more falafel please
Feb 26, 2005

forums poster

Raenir Salazar posted:

Rotation has weird gimble lock problems...

Unreal's dependence on FRotator still boggles my mind.

Rocko Bonaparte
Mar 12, 2002

Every day is Friday!
I'm trying to figure out how to connect events between Blueprints in two different actors in a level--without having to watch through a 2.5-hour video that I was pointed at in the Unreal Source channel. I was going to put it down as some background noise, but I refuse to believe doing that is so complicated.

My terminology is still shaky, but I did look up some of this to verify. I had created blueprint scripts for two actors in my scene using the "Convert Selection to Blueprint" element in the editor. In the first, I created an event dispatcher, added a call to it in the blueprint, and connected it to fire when all the local logic wanted it to fire. In the second, I created a custom event in the blueprint and hooked it up to do what I wanted to happen when it fired.

Now, I assume in the editor there is some connection I can establish between the actors and these events, but I absolutely don't see it when selecting them. What do I have to do?

I suppose I should add that I don't want these events to be global. I could have a second set of these I want to independently connect without them cross talking. I bring it up because I found Unreal documentation on something like a globalish event, but I couldn't figure out how to constrain it.

emanresu tnuocca
Sep 2, 2011

by Athanatos
actors have many different ways to get references to one another, simplest is probably to use 'get actor of class' or if you have multiple instances 'get actors of class' which will return an array of actors, there are further ways to narrow down the result of course.

if you want actor X to do something based on some condition happening in actor Y a convenient way to do this is via event dispatchers, you bind some event in actor X to the event dispatcher in actor Y and then that event will happen whenever the event dispatcher is called.

Rocko Bonaparte
Mar 12, 2002

Every day is Friday!

emanresu tnuocca posted:

if you want actor X to do something based on some condition happening in actor Y a convenient way to do this is via event dispatchers, you bind some event in actor X to the event dispatcher in actor Y and then that event will happen whenever the event dispatcher is called.

That right there is what I am trying to figure out. It could also be that my expectations of it are goofy. So let's say there's this page:

https://docs.unrealengine.com/5.3/en-US/binding-and-unbinding-events-in-unreal-engine/

What I am taking from that is it's a way to dynamically bind an event. What I want is some kind of static, permanent binding. I figured I could do that somewhere in the editor. Does this actually mean there are actor-specific blueprints and I have to make this binding in them every time I want to connect some actors?

Jabor
Jul 16, 2010

#1 Loser at SpaceChem
Does section 3 here describe what you're wanting to do?

https://docs.unrealengine.com/5.3/en-US/event-dispatchers-and-delegates-quick-start-guide-in-unreal-engine/

Raenir Salazar
Nov 5, 2010

College Slice
What I currently do in Unreal is have a special singleton event manager class which lists a bunch of public getters to let other classes broadcast or bind to those events.

Rocko Bonaparte
Mar 12, 2002

Every day is Friday!
That's the one document I did find! I find what they're doing a little different to my goals--I think. If I understand the tutorial, then the boss dying is like a global, singular event of that nature. Let's say instead that I have a switch to open the door and that has an event dispatcher. How can I have, say, multiple pairs of switches and doors that are tired only to their respective pair? I don't want a switch that would open all the doors on one event. That's where I'm having a major hiccup with events.

Raenir Salazar posted:

What I currently do in Unreal is have a special singleton event manager class which lists a bunch of public getters to let other classes broadcast or bind to those events.

Man, I hope I don't have to do that.

So in Unity in this situation, I just had a list of GameObjects (similar to Actor in Unreal) that I could give to the switch and just drag the other objects into that list in the editor. Note that this was using Odin Inspector to get some of the editor interaction to work with multiple items easily. Then when the event fired off, I'd just iterate that pile, see where listeners are attached, and call the notification function. I could tried something more .NET-friendly with actual events, but this method gave me some means to assert the GameObjects all contained the listener MonoBehaviour and some other stuff. I kind of figured in Unreal that I could click on my switch in the editor, see this event dispatcher in the details, drag over the door actor, and establish a connection directly in the level editor. I'm not insisting I do it that way, but it was the original user experience I expected and I'm particularly puzzled and stupefied that I don't think it's a thing in Unreal. Maybe it does work that way, but I haven't been able to replicate it and however Unreal is doing is turning me real stupid.

emanresu tnuocca
Sep 2, 2011

by Athanatos
unreal has various places you can stick global dispatchers in, particularly the gamrstate class can be expanded and used as a global singleton, but I think this just confuses things.

I'm not 100% on the use case but let's assume we have some 'singleton' actor class that you want to check for some condition being met and some other actor class that you may have many instances of that runs some event when the condition is met.

so, to make it work, the 'singleton' should have an event dispatcher, and should have some loop that checks whether to fire it via doing the 'call' event dispatcher node, potentially on the tick event, the 'listener' actors just needs to once get a reference to the singleton and do a 'bind event to...' and drag the red event node thingie somewhere and enter the words 'custom event', which will create a new event node, this custom event will be executed whenever the dispatcher on the 'singleton' class is called.

it's really the same as events in unity, I also had some trouble figuring it out but it's really the same, the dispatcher exists, you bind event or functions to it, those are executed whenever the dispatcher gets 'called'.

Rocko Bonaparte
Mar 12, 2002

Every day is Friday!
It still sounds like something with a global scope instead of something where I can tie, say, five different switches to five different doors without them hitting each other. I suppose I could have the event take some kind of ID and everything just filters on the one they care about.

I have been playing that 2.5-hour thing in the background here on-and-off and they just got to Blueprint Interfaces. It looks like I could say one Blueprint would implement it and the other would need it so I could potentially make my interaction that way. So I'd call the interface implementation instead of using an event. I don't know if this is a thing yet but I was planning to try it later.

dupersaurus
Aug 1, 2012

Futurism was an art movement where dudes were all 'CARS ARE COOL AND THE PAST IS FOR CHUMPS. LET'S DRAW SOME CARS.'

Rocko Bonaparte posted:

It still sounds like something with a global scope instead of something where I can tie, say, five different switches to five different doors without them hitting each other. I suppose I could have the event take some kind of ID and everything just filters on the one they care about.

I have been playing that 2.5-hour thing in the background here on-and-off and they just got to Blueprint Interfaces. It looks like I could say one Blueprint would implement it and the other would need it so I could potentially make my interaction that way. So I'd call the interface implementation instead of using an event. I don't know if this is a thing yet but I was planning to try it later.

I'm still a UE5 baby and yeah the documentation for event dispatcher is pretty terrible. But I've used something that I vaguely recall from my UE2.5 days, which is tagging actors and using the get actors by class and tag functionality to get what you want when you need it. It's is/was a heavy call so you don't want to do it every frame, but fine for one-off interactions. So each door would have a unique tag that the associated button would look for.

emanresu tnuocca
Sep 2, 2011

by Athanatos
if you just want a button that opens a door or something all you need is to make a variable of type actor on the instigating actor and make instance editable, on the level instance just click the field and select the relevant actor from the scene, now you can do things with a specific door actor from a given button, or whatever.


but of course if the type is just 'actor' this won't expose any of the the functionality of your door class, it's better to extend actor and then just have your instance editable member variable be of say BPDoor or whatever.

you really don't need a dispatcher for any of this.

Rocko Bonaparte
Mar 12, 2002

Every day is Friday!

emanresu tnuocca posted:

if you just want a button that opens a door or something all you need is to make a variable of type actor on the instigating actor and make instance editable, on the level instance just click the field and select the relevant actor from the scene, now you can do things with a specific door actor from a given button, or whatever.


but of course if the type is just 'actor' this won't expose any of the the functionality of your door class, it's better to extend actor and then just have your instance editable member variable be of say BPDoor or whatever.

you really don't need a dispatcher for any of this.
Yeah my sense of smell on this over the day has been telling me events are the wrong mechanism. I don't entirely know what all the technologies are doing so I definitely am derping around over it. I am not sure that would be stopped with simple summaries either in a glossary. I think it's just the door fee.

Or I am rationalizing how much I am screwing up haha. I have watched and read a few experiences migrated to Unreal from Unity, and there are multiple cases of discovering they have less they have to manually implement, but figuring out what it all actually is has been painful.

Chillmatic
Jul 25, 2003

always seeking to survive and flourish
Just use a blueprint interface, homie.

Rocko Bonaparte
Mar 12, 2002

Every day is Friday!

Chillmatic posted:

Just use a blueprint interface, homie.

I just tried and I got reeeeal close. I defined the interface, implemented it in one, and call it in the other. The one calling it has a public variable of the given interface type and I can see it in the details view in the outliner. It's set to None. When I click the dropdown, I don't see anything. When I try to drag and drop the implementer of the interface, the outliner's selection details switches to it from the caller and I lose the details view. So I don't think I can drag and drop. It's the last piece of plumbing and I can't figure it out!

Chillmatic
Jul 25, 2003

always seeking to survive and flourish
You’re trying to set a reference to something that only exists at runtime, that’s why you’re only seeing None.

What are you actually trying to do? BPIs make communication between classes very simple, but I need to know what you’re trying to do to be able to explain it helpfully.

Rocko Bonaparte
Mar 12, 2002

Every day is Friday!
I have the cube set as a floor plate that moves down when the player steps on it and moves up when they step off of it. I intend to have it notify something when presse and notify when released.

That target for now is another cube that I intend to turn green when the tile is pressed and red when it is released. I would then extend that to doors, platforms, traps, whatever.

I would then want to plates and two listeners, and make sure that when I press on one tile, I only notify one that cares about that tile, and not the other.

At the moment, I have an interface for activating and deactivating. My tile's blueprint can call these interfaces. The indicator cube implements it and has the calls on its side to change the color. I have to just hook them up.

Raenir Salazar
Nov 5, 2010

College Slice
Unless there's something I'm missing this feels like a job for events?

Adbot
ADBOT LOVES YOU

emanresu tnuocca
Sep 2, 2011

by Athanatos
it's really straight forward, I'm unfortunately away from my computer until tomorrow so can't share a screenshot but this can be achieved with one variable which is a reference to an instance of your door and can be set from the editor once you expose it as instance editable and from that point your activation event just needs to call an event or a function on the instance.

I think that the 'content samples' project provided by epic has a tutorial called blueprint communication that demonstrates how to get actors to communicate with one another, they provide several examples for buttons and triggers.

the tutorial levels themselves use buttons that search that scenes for actors with a certain tag, for instance.

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