16
\$\begingroup\$

I'm currently learning Unity and working my way through a video game maths primer text book.

My goal is to create a racing game for WebGL (using Three.js and maybe Physic.js).

I'm well aware that the Unity program shields you from a lot of what's going on and a lot of the grunt work attached to developing even a simple video game, but if I power through a bunch of Unity tutorials, will a lot of the skills I learn translate over to other frameworks/engines?

I'm pretty proficient at level design with WebGL, and I'm a good 3D modeller. My weaknesses are definitely AI and Physics.

While I am rapidly shoring up my math, and while Physics is undeniably interesting there's only so many hours in the day and there's a wealth of engines out there to take care of this sort of thing.

AI does appeal to me a lot more, and is a lot more necessary. AI changes drastically from game to game, is tweaked heavily during development, and the physics is a lot more constant.

Will leaning AI concepts in Unity allow me to transfer this knowledge pretty much anywhere? Or will I just be paddling up Unity creek with these skills?

\$\endgroup\$
4
  • 4
    \$\begingroup\$ Level designer with WebGL? \$\endgroup\$
    – Ben
    May 29, 2014 at 3:39
  • 3
    \$\begingroup\$ AI is defined by an algorithm and implemented in code. Any logic you write in a script could easily be transferred to other languages and platforms. As an example, the A* pathfinding algorithm has nothing Unity specific about it. \$\endgroup\$
    – MLM
    May 29, 2014 at 3:40
  • 1
    \$\begingroup\$ If anything, using a robust framework like Unity will help you avoid the temptation to reinvent the wheel, and focus on creating the unique & fun gameplay you want instead. It also means you'll have a wealth of community expertise to draw on when you find yourself in a snag. Although the particulars vary a lot, the basic ideas of working in an engine are transferable - cutting your teeth on one will help with learning any future engines. And as MLM points out, any code you write yourself will be possible to implement just about anywhere. \$\endgroup\$
    – DMGregory
    May 29, 2014 at 4:59
  • \$\begingroup\$ @WebGL I mean creating a level from scratch for a 3D browser game, no interface. \$\endgroup\$
    – Starkers
    May 29, 2014 at 14:13

3 Answers 3

27
\$\begingroup\$

Speaking very broadly, there are two sorts of skills:

  1. "I can make this thing shiny by clicking that button." This is Unity-domain knowledge; it's something you've learned about how to use Unity, and probably won't help you much when learning another system's interface. (While that other system is likely to have some way to make an object shiny, it will probably have a completely different system for configuring that appearance -- learning Unity's way won't automatically teach you the other system's way)
  2. "If I want to be sure that the player notices this object, I can make it shiny." This is game-domain knowledge; it's something you've learned about how games work, and how players interact with games, independent from how any particular engine or SDK implements things.

If you're learning algorithms, or if you're learning when and why particular techniques should be used, then you're building highly transferable skills which are relevant to all games. If you're just learning how to manipulate an engine's interface, then you're probably building less-transferable skills.

\$\endgroup\$
0
7
\$\begingroup\$

Yes. Learning algorithms is learning algorithms. Implementations may change, but you'll still understand the overall strategy.

However, it's also true that you'll be learning at a high level of abstraction. That means that moving around to other engines, or no engine, may require you to learn the finer details of the algorithm and the gritty details of the implementation.

Overall, it's always a good strategy to learn new things. Even if if only improves your general understanding of the topic, it makes learning and implementing it again on a different technology that much easier.

\$\endgroup\$
3
\$\begingroup\$

It depends.

There are aspects some aspects that can carry over, like the ability to design a coherent game that works. But that comes from learning to use any game engine/SDK.

But it all depends on:

-Your level of use If you're borrowing scripts and only know for the most part things that are visual, its likely that the only thing will carry over is familiarity with some of the tools.

-The software you've built up some sort of background in vs the new software Going from something like GameMaker to something like CryEngine, UDK, Unity doesn't really go well unless:

-You have background in various programming languages Unity uses Unityscript which is their own bastardization of C# and java

If you are new, like you seemed to have indicate, then I would start with the basic with GameMaker. Get familiar with the drag and drop interface and very basic gameplay programming, then learn how to write your own scripts with their GameMaker Language. Meanwhile, start learning programming languages (java,C,C++,C#,...etc), the concepts from which will be incredibly useful for when you start to learn the first party engine language.

If AI's is what you are really interested in, then cannot stress enough how important it is to learn programming languages, and the logic behind them. AI's are tough, really tough, and there is a lot that is involved in writing the scripts for them. That being said, those concepts behind the writing of good AI's should carry on, but not necessarily the exact methods of doing so, since every game engine/SDK is different.

I know you probably don't want to hear this, and I am in no way trying to discourage you whatsoever. But you have a long road ahead of you. Outside looking in, studying game design sounds like it would be a lot of fun, and sometimes it is, but there is a lot to know, and even more work to be done.

I hope this helps steer you in the right direction.

Source: Video Game Design/Programming Student with experience in Unity,UDK, and GameMaker. Also useful experience: C,C++,Java,OOP Data Structures,Autodesk Maya,ProTools,Reaper,Audition,Photoshop,GIMP... you get the idea.

If your knowledge is very limited, start with something like GameMaker or Project Spark. It will really help you understand basics.

\$\endgroup\$
3
  • \$\begingroup\$ I hope I didn't come across like a pompous jerk. I definitely didn't mean it that way. Either way, good luck on your journey! \$\endgroup\$
    – UberPwnd
    May 29, 2014 at 11:11
  • \$\begingroup\$ He didn't exactly indicate it in the question here, but a glance at his profile makes it pretty clear that he definitely does not need to start with GameMaker (eg. gamedev.stackexchange.com/questions/75627/…) I mean, even if he were totally green with programming I'd be skeptical of that advice, but he's not even in the grey area. \$\endgroup\$
    – jhocking
    May 29, 2014 at 12:17
  • \$\begingroup\$ @UberPwnd Not at all! Thankyou very much \$\endgroup\$
    – Starkers
    May 29, 2014 at 14:11

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .