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
rarbatrol
Apr 17, 2011

Hurt//maim//kill.
I see a lot of talk about UDK and Unity, but what are people's experiences with Torque?

Adbot
ADBOT LOVES YOU

rarbatrol
Apr 17, 2011

Hurt//maim//kill.

Suspicious Dish posted:

Torque 2D or Torque 3D? They're entirely different beasts.

Well, for both, GarageGames seems to have stopped development on it. They've also changed business models several times, and most of the people who worked on the Tribes engine and went to GarageGames now work at other places.

Torque 3D. I know the company was purchased and relocated last year, and is in kind of a strange place, but the engine is still for sale.

rarbatrol
Apr 17, 2011

Hurt//maim//kill.

xgalaxy posted:

I worked at GarageGames for a better part of a decade so I feel I'm uniquely qualified to answer any questions about Torque or GarageGames.

I wouldn't use Torque these days. I don't think I could even recommend it back when I was working at GarageGames either.

Don't get me wrong. Torque wasn't necessarily a bad engine. it is just an entirely different beast to what Unity and UDK provide. Torque is not user friendly, and it isn't really ashamed of that fact either. It was an engine born from a number of professionally produced AAA games made by Dynamix and Sierra Online in the early 90's to early 00's, from Earthsiege to Starsiege and Tribes, and even a Trophy Bass game or two.

GarageGames spent years adding to it, ripping parts out, bringing parts up to date, and so on. Part of the problem was GarageGames grew too fast and Torque development often lacked direction, had poor quality assurance and poor developer discipline. Another part of it was that GarageGames was bought out, and the people that took over or oversaw certain aspects of the company were loving clueless.

Certain parts of Torque are amazing. For instance, the networking systems are still, in my opinion, the best in the industry. It has been co-opted by a number of professional studios by now, including Bungie for Halo for example.

Other parts suffer from developers making changes when they didn't fully understand what they were doing and how it effected other parts of the code base. And later version of Torque often had newer systems that were over engineered and under performing.

Everyone either left GarageGames or were eventually laid off by the parent company. Some people managed to get the GarageGames brand back, and license to the engine. These people are the GarageGames that stands today. But no one who had any major role in the development of Torque works there now.

The sad thing about all of this is the parent company had to write GarageGames off at a loss, and couldn't take profits from any of its products anymore if they wanted to get the tax incentives of recording that loss. So products like Marble Blast Ultra for Xbox Live Arcade were taken off the XBLA store and are gone forever.

Ah, it's as I thought. I've made a lot of stuff for the starsiege/tribes games, so my desire to use it is primarily nostalgic. I know how it goes, though... it's a shame. Guess I'll look elsewhere.

rarbatrol
Apr 17, 2011

Hurt//maim//kill.

The King of Swag posted:

I really appreciate all the insight guys, and if anyone else wants to weigh in, I'd like to hear it.

I've used something a random-provider interface for any random behavior in the past. The default implementation (and really, the only one in practice) would just call the normal system getrandom or whatever, but for testing I'd inject a different random-provider and do whatever the hell I want to with it. Stuff like handing it a list of numbers for it to iterate over, or always returning 4.

Edit: as for unit testing in general, it's all right. Where it really helps is when you need to do large scale refactoring and you still want the existing functionality to remain intact. Things that you really really want to work as the tests say it should.

rarbatrol fucked around with this message at 02:50 on Jul 10, 2013

rarbatrol
Apr 17, 2011

Hurt//maim//kill.

get out of fyad posted:

As an Independent Study this semester, I'm going to try to create an Occlusion Culling/PVS system that could be used in Minecraft-style block games. I don't think anyone has tried this before and I'm happy to divulge details. I've only used plain old DirectX and OpenGL for graphics stuff before, but I'd like to use some engine to speed up development time. I'm C# savvy so I'm thinking of using OGRE (in the form of Axiom) or MonoGame. Does anyone have a recommendation?

Some other stuff that may help you answer: I'm not trying to make a game, so stuff like physics, AI, sound, and asset loading doesn't really matter too much. I'll be writing my own scene graph and bounding volume hierarchy. Lastly, I think Unity is out because it will take too long to learn.

I can't help you too much with your questions, but http://0fps.wordpress.com/ has a good set of entries on minecraft-like games, including culling and storage formats, which may be of use.

rarbatrol
Apr 17, 2011

Hurt//maim//kill.

roomforthetuna posted:

Is there even such a thing as a good one? I've never found anything even adequate other than rolling your own almost from scratch. DirectPlay was just about bearable when it wasn't deprecated, but was also pretty close to being rolling your own.

The one that comes with torque is pretty good, if I remember correctly: http://docs.garagegames.com/tgea/official/content/documentation/Engine%20Overview/Networking.html

rarbatrol
Apr 17, 2011

Hurt//maim//kill.

Suspicious Dish posted:

What ever happened to Torque?

Torque is open source now (MIT license iirc), and... I don't know, fading into obscurity?

rarbatrol
Apr 17, 2011

Hurt//maim//kill.

Yodzilla posted:

What about SVN if you're on Windows with something like Tortoise?

IMO if you're on windows and find git or svn lacking, it's worth trying out mercurial. It's well supported on windows and similar enough to git not be a big hassle to switch (granted, there are some subtle differences). Anyway, there's a bunch of extensions available so I'd guess somebody has made a file lock extension by now.

fake edit: yep, don't know how good this is, but it's a thing: http://mercurial.selenic.com/wiki/LockExtension

rarbatrol
Apr 17, 2011

Hurt//maim//kill.

OneEightHundred posted:

I'm kind of curious, how do they really differ? Everything I've seen on Git and Mercurial makes them sound like practically the same thing.

To the best of my knowledge, this is a decent summary: http://www.rockstarprogrammer.org/post/2008/apr/06/differences-between-mercurial-and-git/

Besides workflow differences, they're pretty much the same thing.

rarbatrol
Apr 17, 2011

Hurt//maim//kill.

KoRMaK posted:

Speaking of moving a player through a room, how do you handle stairs? How do you know when to move the player "up" to walk up the stairs without the player having to jump.

I found this video to be an interesting solution, though I don't know how well it would work with whatever you've got so far:
http://www.gdcvault.com/play/1020583/Animation-Bootcamp-An-Indie-Approach

rarbatrol
Apr 17, 2011

Hurt//maim//kill.

Pollyanna posted:

I have a couple of questions.

How would you model a tile-based game world? When I think of a tile-based game, I imagine a collection of Maps that are all made of an n-by-m 2D array of Tiles, and the Player would be "in" one of those Tiles. Thinking of it in an object-oriented manner, would a Map object basically have a nested array of Tile objects, while one of those Tile objects has a Player in it? How would you handle the Player moving from one tile to another? Would it be a method on the Player, the Tiles, or the Map?

Unrelated to the above, how do you do Test Driven Development when making a game? It seems a little difficult to pull off, since there's complex interactions between the player's controller, the state of the AI, and graphics rendering. Do you only do unit tests and forego integration testing/simulating user input? How do you deal with the input -> update -> render loop?

I find that TDD is best suited for simple input -> output functionality. Something like a state machine would maybe be a decent candidate for that.

rarbatrol
Apr 17, 2011

Hurt//maim//kill.

Obsurveyor posted:

I assume the typo is not important in this example but it makes sense why this wouldn't stop: these are separate invocations of the method, a new IEnumerator would be returned for each.


Is this some crazy C# compiler Unity hack? I haven't tried it but this doesn't look like working code to begin with.

No hacks, just a variable unfortunately named after a function.

That's my guess too. Unless there's a persistent reference to that enumerator (the last example), or the implementation of your coroutine has some sort of shared state, you're getting a new one each time you call it.

rarbatrol fucked around with this message at 01:09 on Feb 23, 2015

rarbatrol
Apr 17, 2011

Hurt//maim//kill.

Paniolo posted:

Well, there was a guy here who made and published a game using Visual Basic, so anything's possible.

As long as you realize that it's highly impractical and you're needlessly making things difficult for yourself by turning trivially solved problems into riddles, have fun.

Black Annex was in qbasic if I recall correctly, not the modern basically-C#-but-way-more-verbose language.

rarbatrol
Apr 17, 2011

Hurt//maim//kill.

ModeSix posted:

Looking for a bit of insight into something.

First, I'm using Unity C#.

I'm trying to make a list of game events to display. I've looked at Queues and a simple List<>. What I want is a first in first out type of behavior.

Think of it like a chat box but it can only hold X amount of messages before the oldest ones are dumped.

Can someone recommend whether using a Queue() or a List<> is the better way to go about this?

With a list I could create it with a limited number of items and manually move them down in the list each time a new entry is added, but this seems inefficient and will create a lot of processing overhead, which I want to avoid as I am targeting the mobile platform.

I've looked at the Queue() function on MSDN and I can't see any way to actually display the items without dequeuing them, I'm not sure if I am reading the doc correctly or not. Can someone clarify for me please.

edit: Actually resorting the list might be the best way to do this after all, but if anyone has another opinion please let me know.

Can't you still enumerate over a queue? If that's not exactly what you want, System.Linq adds a ton of extensions that should let you bend it to your will.

rarbatrol
Apr 17, 2011

Hurt//maim//kill.

Zaphod42 posted:

Tooons of games have done that, although at the moment my brain is farting trying to remember the last game I was talking about that had negative space meshes.

Red Faction comes to mind (the first couple games, at least).

rarbatrol
Apr 17, 2011

Hurt//maim//kill.

Triarii posted:

Hard and fast rules like "always consider the circumstances and make the best choice in that situation" rub me the wrong way. I want to be free to make incredibly bad choices when it suits me, thank you very much

Use var when it makes sense to use var. Boom, done.


I personally use it for the aforementioned nasty generic stuff, and for banging out fast prototype code.

rarbatrol
Apr 17, 2011

Hurt//maim//kill.

Sex Bumbo posted:

real javascript -> parsed and run on native code (probably)
C++ -> compiles to native code and then just runs
C#/anything unity -> compiles to IL -> compiles to native and runs

And then there's the IL2CPP project, which I think does this(?):
C#/anything unity -> compiles to IL -> transpiles to C++ -> compiles to native and runs

rarbatrol
Apr 17, 2011

Hurt//maim//kill.

22 Eargesplitten posted:

So, why can't you just load the data from the HDD at the point it needs it? [snip]

Hard drives are one of the slower things a program can rely on, especially if it's not solid state.
From the chart, it's roughly ~20ms to read a megabyte from a spinning disk (and I'm not sure if that includes the 10ms disk seek), which makes maintaining 60fps not-really-possible and would cause a game to stutter.

Edit: so people try to load it in advance, and yeah, that means it all has to sit in memory. Maybe with Stalker, they couldn't safely fit everything into RAM at the same time?

rarbatrol fucked around with this message at 21:19 on May 15, 2016

rarbatrol
Apr 17, 2011

Hurt//maim//kill.
So now that .Net Core 1.0 is out (and open source), what are the chances we'll see another incarnation of the .Net blueprint integration for the Unreal engine? If I remember correctly, it was licensing issues that killed it off the first time around.

rarbatrol
Apr 17, 2011

Hurt//maim//kill.
Yeah... Definitely profile first, and then make performance optimizations. There's almost always a #1 most expensive function that you can attack - and actually get something tangible for doing so.

rarbatrol
Apr 17, 2011

Hurt//maim//kill.

leper khan posted:

Just wait until you decide to rewrite something and are able to run the old and new implementations side-by-side. :unsmith:

Not so much a game development anecdote, but writing unit tests, replacing a component, and seeing that all the tests still pass is a really nice feeling.

rarbatrol
Apr 17, 2011

Hurt//maim//kill.
Yeah, I'm not sure what that interface example is about. Interfaces describe what an object can do, and an empty interface alone doesn't provide much value.

rarbatrol
Apr 17, 2011

Hurt//maim//kill.
For a side project, I created a little system with that would take a JSON definition for an in-game item, and a JSON definition for mapping that item to a collection of component objects, with support for copying a single value to multiple properties, default values, and property renaming from the item definition to the component. Definitely not worth the time, but kind of interesting.

I guess what I'm trying to say is that my day job (and Newtonsoft) has changed how my brain works.

rarbatrol
Apr 17, 2011

Hurt//maim//kill.

Warbird posted:

So Unreal's getting C# support and VS plugins. That's pretty neat.

Like... officially?

rarbatrol
Apr 17, 2011

Hurt//maim//kill.
It's maybe not exactly what you're looking for, but here's an article about a game that puts machine learning at the core of the gameplay: https://arstechnica.com/gaming/2017/08/echo-hitman-preview/

Also, doesn't one of the more recent racing games learn each player's driving tendencies? I remember hearing that you can play against AI stand-ins for people on your friends list or something along those lines.

Adbot
ADBOT LOVES YOU

rarbatrol
Apr 17, 2011

Hurt//maim//kill.
Speaking of C#, I've been meaning to mess around with Xenko... anybody try it out already?

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