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
Obsurveyor
Jan 10, 2003

Pfhreak posted:

I know that a billboarded sprite has no depth, if you look at it side-on it disappears. Let's call that analogous to a sheet of paper.
Technically, a billboarded sprite always faces the camera so you never see it edge on. If you want something with thickness that is not always rotated to face the camera, just use a thin rectangular solid with the texture on a single face.

Adbot
ADBOT LOVES YOU

Obsurveyor
Jan 10, 2003

Pfhreak posted:

You know this was chugging because massively threaded things are generally considered a bad idea?
The context switches alone thrash the cache to hell and back again. Especially with such disparate threads fighting for cycles.

Obsurveyor
Jan 10, 2003

We should not totally poo poo all over him. If it is stable, he learned a little about programming distributed computing(even if it is implemented in a hamfisted way), more than multi-threading at least. That could be useful in the right work environment.

Obsurveyor
Jan 10, 2003

Kire posted:

I'm trying to figure out the mouse support in python. I want to print the coordinates where a user has clicked inside the terminal window.
I have been working on a wrapper for libtcod in Ruby and mouse clicks are the one thing, so far, that simply refuse to work. I can get the coordinates just fine but not whether a mouse button is pressed. I will be continuing work on it this weekend and will let you know if I figure it out.

Obsurveyor
Jan 10, 2003

Obsurveyor posted:

I have been working on a wrapper for libtcod in Ruby and mouse clicks are the one thing, so far, that simply refuse to work. I can get the coordinates just fine but not whether a mouse button is pressed. I will be continuing work on it this weekend and will let you know if I figure it out.

Kire, I imagine you figured this out but in python, it should be as easy as:

code:
mouse = libtcod.mouse_get_status()
and
code:
mouse.lbutton
mouse.rbutton
mouse.mbutton
should give you the a 1 if the mouse is currently pressed or 0 if not.

My issue with Ruby, if anyone cares, was that I had to use :uint8 to read the correct value for the bool in the TCOD_mouse_t struct, not :bool, which probably means I need to do more testing with other bool function arguments and return values.

Obsurveyor
Jan 10, 2003

Well, it looks like there is no special data structure. He is just rendering sprites(the "pieces") and using invisible collision detection structures. Rendering a sprite with two triangles or one quad gives you the rotating, scaling, tinting and clipping practically for free. All you have to do is save where those are in placed in space for a level. Collision detection looks like it could be as simple as rectangles. I am not sure what the squares in the upper left corner of each one are, but they are probably the transformation point for the editor.

In summary, I think you are over analyzing what is going on here. Just go for it! :)

Obsurveyor
Jan 10, 2003

CuddlyZombie posted:

Make a brand new scene, and have that be the starter/initial scene.

Assuming it's just using standard Unity stuff:

  • File -> New Scene
  • Save the Scene
  • File -> Build Settings
  • Click 'Add Current' button

Order them so that your new scene is index 0 and the old scene is index 1

quote:

When a user presses one of several start buttons on the new initial scene, the original, complex scene that I inherited is loaded up and made active, only with a parameter that varies depending on what button was pressed.

Make your GUI(do a tutorial or something to get buttons for this) call:

code:
Application.LoadLevel(1);
when your button is clicked. You can set static values in a game class that manages the parameter that you want to vary. I'm not sure if there's more "Unity" way to do that.

Obsurveyor
Jan 10, 2003

CuddlyZombie posted:

So to confirm, a static value is static across the entire unity project, and not just in a given scene? If so then perfect, I've been worrying a lot over nothing.

If you create a member in a class that is static, it doesn't change across instances of the class.

Obsurveyor
Jan 10, 2003

CuddlyZombie posted:

Is this any different than a singleton?

Not really. Singletons don't use any resources until they're used for the first time. It sounds like you're going to be using it right away, so it probably doesn't matter which you use.

Obsurveyor
Jan 10, 2003

SlightlyMadman posted:

When I open up the project on another computer though, the scene is completely empty. My game script and camera and everything like that are gone. I'm guessing that's in a file that's getting ignored somehow, but I'm not seeing where it is to put it back in.

Did you set Version Control to "Meta Files" under Project Settings->Editor Settings? There's also a new Asset Serialization Mode to force text which would probably help git patches but I haven't tried it yet.

Obsurveyor
Jan 10, 2003

SupSuper posted:

Make sure you have meta files enabled and added to Git (they're the *.meta files next to your Library assets):

(you can also try Text serialization mode to make things cleaner for Git)

This is exactly what I said in the first response to him a page back and 4 days ago. I can only hope he already took the advice back then, even though it sounded exactly like what you'd see with meta files off.

Obsurveyor
Jan 10, 2003

SlightlyMadman posted:

Ah, I completely misunderstood you and tried that on the other computer, since that was the one that was broken. I just set it on the original computer and will try checking those in now. Thanks for your help!

Yeah, you have to set it on the project and then push it to the repository. It won't do anything after the fact. :)

Obsurveyor
Jan 10, 2003

SlightlyMadman posted:

Thanks, I'm still pretty new to unity. So by default where does it store these things, in the registry or something?

I think it stores them in the files but they must be relative offsets or something and the way git creates changesets for binary files breaks them. I've never tried a binary diff but they must not come out the same way they go in. The meta files seem to extract whatever causes the breakage into data git can handle properly.

Obsurveyor
Jan 10, 2003

Rottbott posted:

I've had to use it seriously for the first time recently. For a language without static typing it seems pretty neat, but who wants that for more than a few hundred lines? I can't express how annoyed I get at finding bugs at runtime which a proper language would have caught in the compiler immediately.

Dynamic typing completely changes the way you think about programming. When you can stop thinking about what things are and start thinking about what they do and just use them as such, it's very liberating. Using a test or behavior driven development methodology will do a lot to prevent runtime bugs in a dynamic language.

As a programmer, you shouldn't be a snob about what language you're using. Programming languages are tools to get jobs done, not political or philosophical platforms. There's never going to be a perfect programming language. Embrace new languages when you have to, it will make you a better and more versatile programmer.

Javascript is kind of a Frankenstein with tons of warts. Heck, there's a whole book dedicated to sussing out the good parts and warning you well away from the bad ones("Javascript The Good Parts", very useful book, definitely recommend). However, it's not too horrible once you get used to how to manage it.

edit: weird, if you type Javscript and a colon, it turns it into "java script:"

Obsurveyor fucked around with this message at 14:04 on Sep 28, 2013

Obsurveyor
Jan 10, 2003

Paniolo posted:

A theoretical exercise, would anyone with non-trivial experience with Unity (i.e. has actually shipped a game) choose Boo over C# for their next project?

A theoretical exercise of what, you know Boo is statically typed right? Type inference is not the same thing as dynamic typing. Has Boo ever been anything but a toy language for .NET? That's a seriously loaded/slanted question.

Obsurveyor
Jan 10, 2003

SupSuper posted:

I think you mean JS over C#, I've never seen anyone use Boo.

UnityScript is a bastardization of Javascript and should be abolished and any traces of it scrubbed out of existence.

Obsurveyor
Jan 10, 2003

Rottbott posted:

So what are the ways in which JS is more productive than C++, for example?

You can write HTML5 applications that will "just work" in most browsers(this is the subject that started this discussion), you can't really do that with C++. Javascript is the only language that has nearly universal browser support, therefore, Javascript is the best tool for in-browser HTML5 apps/games.

quote:

That just sounds like generic programming, which I'm quite happy doing in statically typed languages. How would you say it's different? I agree that unit testing is basically required with dynamic languages, but it's still not as good as having it caught by the compiler (or better still, by the IDE right after you type it).

Look into 'duck typing' for a very brief example. You can read this for a pretty fair account of each from the point of view of the opposite.

The number of issues that crop up that the compiler can save you from gets smaller as the size of the project grows and the experience/knowledge of a programmer expands compared to actual bugs that occur in software, regardless of the language or static/dynamic typing.

quote:

I know, I do. I've tried JS and Python and I don't like either. Both have some individual neat features but I still wouldn't use them for a real project.

Great, at least you didn't dismiss them out of hand. If you learned enough about them, at least you are now armed with more tools for the future, in case there are projects that require them. However, making statements such as "I wouldn't use this for a real project" when plenty of people that aren't you do use these languages for "real projects" is pretty dismissive and makes you sound ignorant.

Obsurveyor
Jan 10, 2003

biznatchio posted:

It's awfully telling that when asking for advantages that JS gives you in development over C++, the first thing you went to was "well it's the only option you have so deal with it" rather than actually listing real language advantages. Advantages and disadvantages of dynamic versus static typed languages is one thing, but the only reason Javascript gets the attention it gets is not because of Javascript's own inherent design being superior in any way as it is that Javascript just happened to get hitched to the most successful platform of all time. It won in spite of itself.

I completely agree that it is an awful, awful tragedy that Javascript won by default in the browser arena. I was simply trying to bring the conversation back on course, off the road of "my language is better than your language" wars that these discussions devolve into. It is most certainly not a language I would prefer to use by any stretch of the imagination.

Obsurveyor fucked around with this message at 00:34 on Sep 29, 2013

Obsurveyor
Jan 10, 2003

SupSuper posted:

Don't private repositories cost money though? If you just need it for yourself you might as well just set up Git locally.

You don't even need a github/bitbucket account if you're using some kind of Dropbox/Google/Skydrive. Just keep your repos in there and stay sync'd.

Obsurveyor
Jan 10, 2003

Orzo posted:

I don't understand how this could be accomplished on the CPU, except by loading the texture and manually tweaking each pixel and outputting a new texture for every single hue value.

Wouldn't it be easier to just write a shader that doesn't blend his color property with pixels that are 255,255,255?

Obsurveyor
Jan 10, 2003

Orzo posted:

I don't know what you mean by 255,255,255 pixels though.

He said he wanted pure white pixels to be unaffected, I guess in a shader the .rgb values would be floats? I was thinking of the Unity color picker dialog values.

Obsurveyor
Jan 10, 2003

Orzo posted:

IsOnFire isn't a variable, though. I am essentially packing a bunch of possible mutually-exclusive ranges into a single float.

Can you apply a different shader to the sprite, based on the real status effects and vary it that way or is it purely the hue that determines when it varies?

Obsurveyor fucked around with this message at 20:46 on Oct 3, 2013

Obsurveyor
Jan 10, 2003

Free version of Unity has been "no longer horrible with regards to using version control" for a lot longer than June. The Meta Files setting is the key to making it work with external version control such as git. I believe the Asset Serialization Mode just makes the commits smaller/more efficient(than huge binary blobs).

Obsurveyor
Jan 10, 2003

Chance posted:

I don't really have a large requirement to fill here, I just want a better way to back up my project than zipping and going to dropbox when I remember. I'm a single user, and want private projects (hence bitbucket).

If you don't want to jump into the source control sea, and don't need the functionality, why not just edit your project on your Dropbox drive and it keeps it in sync?

Obsurveyor
Jan 10, 2003

If I understand correctly, it's because OnTriggerEnter only fires when a physics object enters the volume of another. If the two volumes never separate from each other, which is what it sounds like is happening, no subsequent OnTriggerEnters are fired. OnTriggerStay is called every frame the volumes remain in collision though.

Obsurveyor
Jan 10, 2003

Chunderstorm posted:

That shouldn't be the case, as the attack object gets re-instantiated every time the monster attacks. It gets created at the monster's position and goes out, then gets destroyed.

Why are you implementing the knockback over time instead of just doing it all at once from the perspective of the projectile? If it hits a player(that's not the monster) and not shielding, impulse a player by the correct amount once, to knock them back and destroy itself. It also seems that setting the projectile's transform parent to the monster means that if the monster moves while the projectile is mid-flight, the projectile is going to be moved as well, not sure if that is intended behavior or not.

I don't know, maybe it's all intentional but the code seems strange that it's calculating vectors between the player and the monster and not the player and the projectile. You can hit me up on a chat client if you want to talk through it live.

Obsurveyor
Jan 10, 2003

Chunderstorm posted:

Yeah, it's intended. The "projectile" is going to end up a melee attack, just with a fair amount of reach. It doesn't really go that far. I'm doing it over time because simply jumping the target to a spot created some weird issues with collision, namely just trying to set the position inside a solid object.

By impulse, I meant a physics impulse. Assuming your objects have mass, friction and gravity will animate the movement of the knockback properly(not just warp the target into a wall or something) including colliding with walls. I'm assuming things are still low enough speed to not worry about breaking Unity's physics, though it is pretty easy.

Obsurveyor
Jan 10, 2003

Sunday Stupidity:

Spend an embarrassing amount of time debugging a shader that is supposed to use a sphere as a cutaway for another object and learn that, in fact, the magnitude of [0.5, 0.0, 0.0, 1.0] is not 0.5.
:suicide:

At least my goal of the weekend to better understand vertex/fragment shaders is achieved now.

Obsurveyor
Jan 10, 2003

Seashell Salesman posted:

I must be missing something obvious, who would buy a license for a library without first knowing what the licensing implications are for their own derived software?

What do you mean? It's pretty standard policy that stuff you buy on the Asset Store can't be redistributed in source form.

I'm not sure what you need to know other than "This extension requires one license per seat" which means everyone using Unity on your team needs a license.

Obsurveyor
Jan 10, 2003

Seashell Salesman posted:

^^ I looked at the page on the store that's linked to from their website but it didn't have a license on it that I could see
Link to the EULA is at the bottom of this page: https://www.assetstore.unity3d.com/

Relevant sections:

Unity Store EULA posted:

3.6 Unless you have been specifically permitted to do so in a separate agreement with Unity and except as permitted under the Unity-EULA, you agree that you will not reproduce, duplicate, copy, sell, trade or resell any Asset that you have acquired from the Unity Asset Store for any purpose.

quote:

4.1 Some components of Assets (whether developed by Unity or third parties) may also be governed by applicable open source software licenses. In the event of a conflict between the Terms, the applicable EULA and any such licenses, the open source software licenses shall prevail with respect to those components.

Basically, you can only distribute the compiled versions of your Unity projects built with Asset Store assets.

Obsurveyor
Jan 10, 2003

I hope this MonoDevelop 4.01 support means I can get a vi plugin now.

Obsurveyor
Jan 10, 2003

Why don't they just call it by it's real name? A swept sphere test. :colbert: :eng101: :colbert:

Obsurveyor
Jan 10, 2003

roomforthetuna posted:

Is there no "arbitrary object/collider, what does it overlap with?" function? That seems a bit daft. But I suppose if there was that then it would seem daft to have a special capsulecast function too, since capsule primitives are available!

I believe the issue is that Unity's physics engine can't handle the collider's volumes changing at runtime.

Obsurveyor
Jan 10, 2003

Orzo posted:

Yeah that's cool, I was just making the assertion that if your primary dev workstation is Windows AND you're writing C#, you should be using Visual Studio and not some monodevelop garbage.

You still can't debug/set breakpoints for Unity outside of MonoDevelop can you?

Obsurveyor
Jan 10, 2003

Wasn't the first patch like 500MB? Maybe someone pushed the debug binary instead of release.

Obsurveyor
Jan 10, 2003

roomforthetuna posted:

But (if I'm understanding you right and you mean doing a build and debugging it standalone) then you lose the benefits of running in the editor; the pause button and the ability to check where everything is, and turn gizmos on and off, and all that.

You'd use it for exactly the situation you originally described, where you're not getting a proper stack trace/exception and you don't need to turn gizmos on and off and all the editor stuff. You can pause execution with a debugger whenever you want and step into/over/etc. Then you're not wasting hours dealing with the editor crashing. I'm assuming the bug you ended up solving through sheer patience was an actual issue with the game and not a Unity editor leak or something.

Obsurveyor
Jan 10, 2003

poemdexter posted:

Holding right mouse button and WASD has never been intermittent for me, and hitting F has never given me trouble. Sounds like you have some really weird issues. Are you on latest?

The Scene window acts differently depending on whether the mouse cursor is inside it's rectangle or not. Make sure it is if you want to do stuff like F. If you want to use WASD, you have to right click on the window first.

It took me forever to figure out why F use was so inconsistent.

Obsurveyor
Jan 10, 2003

Raenir Salazar posted:

Nope, quaternions haven't appeared in any curricula yet and isn't as part of my mandatory core as far as I can tell. Though I have looked them up a bit during work hours :shobon:

I wouldn't worry about them right now, you've got enough on your plate. Contrary to what was said, quaternions have nothing to do with rendering and everything to do with orientation. You probably won't be running into gimble lock situations for a semester or two at least.

Obsurveyor
Jan 10, 2003

Yodzilla posted:

This is extremely, extremely nonessential but is there any way to make a listener for Unity where I can do something when someone quits and application with the close button in Windows or OSX?

Are you looking for OnApplicationQuit?

Adbot
ADBOT LOVES YOU

Obsurveyor
Jan 10, 2003

Shalinor posted:

The spawning stuff only works if you have PoolManager2... but you really, really want to get PoolManager2, generally speaking. Instantiating things will cause you endless pain and hitching.

Are you talking about this one?

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