Jump to content

  • Log In with Google      Sign In   
  • Create Account

We need your help!

We need 7 developers from Canada and 18 more from Australia to help us complete a research survey.

Support our site by taking a quick sponsored survey and win a chance at a $50 Amazon gift card. Click here to get started!


Member Since 12 Mar 2005
Offline Last Active Yesterday, 03:56 PM

#5250329 University, self study, something else for my game dev future?

Posted by frob on Yesterday, 03:54 PM

I don't know you specifically, and I don't know your life situation.


You're 21. That is young.  If you graduate at age 25 or 26 you'll still be young, AND you will know more useful things.


University studies are not job training. They help you grow academically, they give valuable life experience, they are an opportunity to learn through guided study in a safe environment where mistakes are encouraged as long as you learn from them. Some people use the setting to learn a few things and become mediocre.  Others use the setting to explore amazing things and push their own personal limits.



In general my recommendation is that if your life circumstances allow it, a university program can be a wonderful boost to your career and your life.  


But it is not my opinion or recommendation that matters. It is your life, and you get to live it.

#5250279 University, self study, something else for my game dev future?

Posted by frob on Yesterday, 10:20 AM

The requirement for higher education is regional.

I'm 21 years old and from austria. ... currently not sure if I should go to a university or not.

I don't know about Austria specifically. In most regions of the world game studios are located in highly educated cities. Employers have a huge number of applicants, most of them have various degrees in addition to experience. In some regions of the world, a higher education is uncommon and individuals are mostly self-taught. 
A computer science degree will help with many topics.  Going through the process forces you to learn topics you wouldn't learn on your own, perhaps because you find them boring or because you didn't know you would need them. 

There are many strong benefits of attending.  The education is broad, you will be taught and exposed to a wide range of ideas that you otherwise probably would not. Within the field of study you will have a broad (yet shallow) introduction to every topic in the field. While most are courses and activities you choose, there are some topics you will dislike; learning to do projects you don't like is a valuable life skill. You can meet and work with people from a wide range of backgrounds, some will be easy to work with and others will be a challenge; learning to work with all types of people is a valuable life skill. You can learn about time management, pacing yourself. You can learn how to learn, and how to unlearn. You can learn how to struggle. You can learn a lot of humility, that you aren't the best in the world, that you don't know everything, and in fact you know less than you think. You can  learn to question what you thought you knew. You can learn self discipline. You can learn how to work. You can learn how to steer your life. ... And unfortunately, there are some people who don't take opportunities to learn those things.


Academic opportunities can open up your life to a wide range of further opportunities for the rest of your life.  If you are able to attend, it is usually a smart investment in your life.



Currently my job got kinda boring

That happens at all jobs.  No matter how great the job is, no matter how great the workplace is, even when you are living a job that brings you bliss, you will have times that are boring.

I'm also not really interessted in non- game related stuff.

There are very few topics that cannot be applied to games.
All math topics, generic software development topics, architecture topics, database topics, computing theory topics, compiler theory, security and cryptography, they can all be applied to games.
Outside of programming, most academic topics are directly useful, though a small number are less-frequently useful. Music and art are obviously big things in games. Economics helps with how game flows and balancing. Interior design, landscaping, and similar help with world development. Most humanities help connect with people, building connections with players. Chemistry and biology and healthcare are less directly applicable to games, but there are many educational and informational games that need the topics, and understanding them won't hurt you even if you don't use it often. And even if you don't use those in games, there are simulators for those field that are basically highly-specific technical games rather than entertaining games. 
There really aren't any academic subjects that have zero value. Non-games topics have a great value.

I don't learn new things anymore.

It is not your employer's job to provide continuous education for you.  That is something you need to do yourself. If your employer can help by sending you to a conference on a subject or by some other action, ask them to do it, but ultimately the responsibility to keep your skills current falls on you.

Or should I keep learning things by my self?

Yes. Always keep learning on your own. Even when you are a working professional you are expected to stay current, learning independently.

#5250270 in-engine tool vs external tool

Posted by frob on Yesterday, 09:47 AM

There are many tools that work well in game.  Others are hard to get right.


In Unity you can do this while debugging, adjusting values in the inspector and watching how it affects the game.


Many tuning elements are nice to have inside the engine. Exposing values for AI can make it easier to see what characters are thinking, and adjust the values as it runs.  Exposing any developer-friendly or testing-friendly values is generally useful. Think about the cheat codes and debug codes you've seen in games over your life, those are all probably features you could consider exposing in game.


What does your 'dialog editor' do? Are you modifying strings? Are you modifying the story tree? Are you modifying the script controlling story flow?


If you're only modifying text strings, that might be fine for a small game. In big games where text gets localized into a bunch of languages and recorded by voice actors, it is best to have a naming convention and use a key, which then gets replaced with the locale-specific string and audio. 


If you are modifying more complex parts of dialog, like what happens if the user selects each of the options, then you'll be exposing a lot of your own internal scripting data in the tool.  It may be quite a bit of work to build such a system.

#5250208 entity component system object creation

Posted by frob on 01 September 2015 - 10:34 PM

... I think we can end the beauty contest.

Use whatever serialization system you want. Use XML, JSON, YAML, Java's Serializable format, some binary format you make up, a direct memory map format, or anything else you choose.

The key point is that it should generally be kept in data files rather than hard-coded values.

#5250207 Should fanfic games be legal?

Posted by frob on 01 September 2015 - 10:29 PM

For some of those, I like to turn it around a bit.

Let's say one of my own hobby projects becomes hugely successful. I start getting lots of money and popularity and other rewards.

Then let's say other people want to make clones and fan fiction and other stuff out of it.

Some of those I'm probably going to be okay with. I'm okay with some young kids making a fan fiction and sharing with their schoolmates.

I'm much less okay with some east-European company cloning my work and releasing their clones for $0 with ads when I'm charging $5 for mine.

I'm somewhat okay with someone coming up with new story ideas that don't interfere with stuff I've already done, as long as it doesn't interfere with my plans.

I'm less okay with someone posting on the public Internet that My Supergame 2 should have a certain list of features, and pushing for online petitions that I need to put in features that I didn't want into my game.

I'd be strongly against anyone making fanfic of my child-oriented game and turning them into porn characters.

If I reverse it, consider it is my own IP that other people are using for their benefit, it tends to give a little different perspective than me using other people's IP for my benefit. Because the stuff I create, the things I'm trying to build for my own livelihood, depend on those same sets of rules that the megacorps are leveraging.

#5250177 Best comment ever

Posted by frob on 01 September 2015 - 04:02 PM

For code longevity, there was a comment in The Sims.


I don't have the exact comment, but remember parts.


It started with the date in 1997, saying it was the third rewrite of "the class that will save our lives". The few classes served as the core mechanic of how Sim characters 'think' about the world in terms of actions and interactions.  


The mechanic underpins the feel of the game since it launched over a hundred million copies ago.


That block of code is still in use, nearly 20 years later. It is rare to see that longevity in game code.

#5250174 Steps for multi-platform?

Posted by frob on 01 September 2015 - 03:38 PM

code once and then build accross PC, iOS, Android

They are very different platforms.


The easiest way to do this is to target an intermediate platform that works on each system.  


Unity currently does this.  Unreal has some limited progress with this, but they are improving. Some companies have invested in their own home-grown engines that also work across those platforms.


A much harder way to do it is to work with a bunch of intermediate libraries that abstract away platform-specific dependencies.  You might use Cocos-3dx for graphics, OpenAL for audio, something else for file system abstraction, something else for networking abstraction, something else for user input abstractions. This is much more work than picking up a single existing engine.  


Or, if you plan on spending your days working on engine parts for personal learning rather than real products, you can start writing your own cross-platform engine, an abstract game engine that works on the selected projects. Basically then you're re-inventing what Unity and Unreal are working on, and it is just you working alone rather than teams of professionals.

#5250018 Terraria clone. What do I need to learn

Posted by frob on 31 August 2015 - 05:45 PM

First off, this is For Beginners. So the posting guidelines about keeping it on topic and answering the specific question asked still apply.




To be fair, my list is basically the same as Tangletail's.


I've got not idea what the original poster knows, so I tend to assume minimal existing knowledge


That unknown person wants to make a very small version of Terraria, an action-adventure 2D side scroller.


The question is what math topics they should know.  As a 2D side scroller, you need:

* Solid algebra skills, as needed for nearly all programming. If you can't manipulate variables, you've no business programming.

* Solid trigonometry and geometry skills, as you are manipulating objects in 2D these are the math realms of 2D motion.

* Statistics, since games rely heavily on probabilities. You may be able to eke through without formal stats, but you are better with more.

* Discrete mathematics does not require mastery of all sub-fields, it is used in many branches of study. Both the ACM and MAA recommend discrete mathematics as a mandatory course for computer science majors, to be taken during first or second years of study. Nearly all computer processing deals with discrete mathematics, manipulating individual items and discrete numbers, tables, and sets rather than manipulating continuous math functions.

* Additional computer theory topics are useful, such as state machines (often covered as part of discrete mathematics), data set manipulation to determine what stays in memory and to know what goes to disk (again, often covered in discrete mathematics), and some game theory when tuning your game (discrete mathematics..., so, there's that.) Many types of procedural generation rely on these as well.

* Economics, at least some basics of it, for balancing your game and building in-game economies.


Nice to know but not essential:


* Linear algebra is essential for 3D games, since it is the mathematics of 3D manipulation, but since this is a 2D game it isn't really necessary.

* Basic physics will be useful even if you don't use real-world physics in your game. You can survive without it, but the knowledge will help.

* Calculus is often useful but many game programmers don't use it when they should; you can use iterative methods to solve problems when a little bit of calculus on paper during implementation would reduce the computational work significantly. Nice but not essential.

* Fractal math isn't really necessary for most procedural generation, but it is useful for others. Understanding self-similar systems can help, but isn't essential.  (... Also, fractals are often mentioned in discrete mathematics courses as fractal art is a practical application of the math ...)

Not math directly, but you need to know the basics of how to program for your system. You'll need to know how to get data to and from files, how to get data on screen, and how to interact with the human at the machine.

You'll also need art and audio to make a good game, those weren't asked about.  Assuming you want to do something with the game after it is finished, business skills and marketing will also both be necessary.

#5250011 Should fanfic games be legal?

Posted by frob on 31 August 2015 - 05:00 PM

I think there needs to be a "use it or lose it" rule, where copyright restrictions are not enforceable unless the owner is actively making the work available (in particular available in the region).

That used to be the case in many regions.  Some groups have attempted to restore some of that, but are always met with megacorp lobbyists.


It is always something difficult to balance.  On the one hand, we all want to benefit from things we create.  As game developers our IP rights are often our bread and butter. On the other hand, it is hard to see good products that die but are untouchable for the rest of our lives.


Common proposals are that copyrights need to be registered and renewed.  Basically having a system where copyright is automatic for a small number of years (5, 10, 20, whatever) and then requires registration and renewal for the remainder of the term.  This allows low-interest items to fall into public domain relatively quickly while still allowing high-value products to collect royalties for many years.  


Trademark, however, has a different set of rules.  While they can be renewed as long as they are in use, they expire fairly quickly, you get roughly five years for non-use before it is automatically cancelled (there are details involved), and trademarks must be renewed every decade when they are actively used. There are some very old trademarks in other countries, like the Twining's Tea trademark in the UK. Others like Shell Oil, Levi Strauss, General Electric, and Pabst Blue Ribbon are all over a century old and still in use.




YouTube is not the court.  I don't think it's within YouTube's interest to mediate between the two parties.

This is what I got out of their dispute as well.


Fair use is an affirmative defense and it is very narrow, despite what many people on the Internet feel.  In US law, the automatically protected uses of fair use are criticism, comment, news reporting, teaching, scholarship and research. Parody was added through court rulings, and the parody exception is extremely narrow. The court was very specific about the difference between parody, comedy, and satire. While comedy and satire might use parody, they are not subject to the parody exception unless they are actually parody. You must be using the thing in an exaggerated way to be making a commentary about the thing. 


As an affirmative defense, it means you are admitting to violating copyright and then claiming you fit within the narrow exceptions laid out by law, currently stated as a four-prong defense. It is entirely up to the judge. If the judge decides you violated any of the four prongs, you have admitted to violating their protected rights.




As for the Let's Play situation, it wasn't YouTube blocking anything at all. YouTube did not claim copyright nor create the blocks; it was other parties claiming copyright and enforced through ContentID. The Let's Play people claimed it was fair. Various groups, including Nintendo and several music organizations, claimed it violated their IP. YouTube followed policy. YouTube's current policy is that in case of continued dispute that goes through counter-notifications or DMCA take-down, the content gets removed until both parties deal with out outside their system. It isn't that YouTube is blocking anything, instead following their policy that they are not a legal mediation service and their "safe harbor" provisions in the law mean if there is a dispute, the best action available is to remove the content until the other people resolve the dispute externally.

#5249963 Entities interaction

Posted by frob on 31 August 2015 - 12:14 PM

When you say "for the future", does it mean that I should execute the event as soon as it reaches the server (which in practice will mean executing the even in the future, based on the latency)?

Links with examples of different solutions to this are in the Forum FAQ item #12.


It looks like you are getting close to what Source does, that link is one of several techniques mentioned in FAQ Item #12.

#5249928 Should fanfic games be legal?

Posted by frob on 31 August 2015 - 10:24 AM

There is a wide range between what is acceptable and what is not.  It varies from person to person, from place to place.


The difficulty is that it is hard to pin down a bright-line rule, so in most places the rule is placed very strict and it is the burden of litigation that causes people to wait until infractions are severe before taking legal action.



It is often easy enough to show that the original content creator owns the worlds they imagine and publish. Copyright law protects the rights of authors to create derivative works, and in the case of fan fiction, it only takes a small number of unique items for something to be considered derivative.  If you start talking about "Coruscant", "The Force", and "Light Sabers", you're derivative from Star Wars no questions asked.  If you start writing about Legolas and Gimli, you're derivative of LOTR. If you start writing about Harry, Ron, and Hermione, you're derivative of Harry Potter.  If you've got a starships visiting the pleasure planet Risa, have some aliens like Vulcans and Klingons and Borg, you're derivative of Star Trek.


There are also potentially trademark concerns as well. Licenses usually require strict review by the trademark owner to ensure the products, including books and movies, meet the requirements of the brand. When there are some who pay to license the brand names and logos and follow the rules, it can harm them when fans use the names and devices and don't follow the rules. Poor quality work can harm the brands and dilute the value of the brands.




The bigger questions for the owners of the content, whether they are single individuals or giant corporations, is what to do about those unauthorized works.


The law in most places preserves the rights for ALL derivative works. The content owners could sue ANYONE for ANY fan fiction.  Similarly the misuse of their trademarks allows for lawsuits against any potential infringement.


However, lawsuits are expensive and time consuming. It costs time and money to defend the rights of the original content creator. Consequently most don't take action unless the fan fiction crosses boundaries that the content creator feels are importnat.



Some brands historically have chosen to send legal nastygrams to all fan fiction, no matter how small. This is usually the case when the brand is still growing and creating new stuff.


Babylon 5 was very strict when the series was running, going after anyone who published material on the Internet, but they softened up when the series was finished. When Star Trek had multiple products running concurrently in the early 1990s they were extremely strict against unlicensed fan fiction, stating a major reason is they didn't want fan-created content to redirect the stories and plots that were being developed. Even so, they tacitly permitted a few fan fiction products, and once the main products were finished with production they became more supportive of limited fan fictions since they encouraged the longevity of the products.


Others have chosen to allow limited fan fiction, but only as long as it doesn't harm the brand, and as long as it doesn't compete against planned products.


Star Wars fits that one, Lucasfilm pursued legal action against anyone they found using the characters in pornography and against anyone the felt were using the characters in ways they felt were offensive. Fans were asked to stay away from certain time years because they would be covered  by additional movies. As long as fan fiction was kept as small products, unoffensive, and outside the proscribed dates, they approved of fan-created magazines and publications. Bigger names were invited to create official books for the series, and some of the fan stories were adopted as official canon for the series.



Right now i think the line is in a pretty good place.  The bright-line rule is for any derivative work. Enforcement of the rule is under the control of the original content creator, they can decide how much or how little of their content the fans use before enforcing their rights.

#5249610 Dropbox + TortoiseSVN; Where is the advantage? (New to SC)

Posted by frob on 29 August 2015 - 02:42 PM

Less often than finding other changes, but often enough.

Patches in particular it is best to work from the code as it shipped to customers. Since products tend to continue, you proceed to Sport 2016 as Sport 2015 gets completed, or you move to Expansion 4 after Expansion 3 is ready, there tends to be several months between the time the patch is needed.

If one month out an issue is discovered and you need an emergency patch, it is difficult to build a new game image if you haven't properly stored old versions of EVERYTHING, including build tools and assets. Various assets tend to have slight changes over time, asset loaders and processors have slight differences, and normally immediately after release you update everything that has been locked down for months prior to finalizing.

Some of these are expected. These days it is common to know you will have a patch on launch day, so the code never really gets shut down. Other times the complete dev team has moved on to other tasks and the need for an emergency patch at launch was unexpected. If you're in that second situation, and your team has already deleted tens of thousand of audio lines because those characters are gone, the graphics have already been re-exported with the next iteration's new graphics format, and portions of the build pipeline and data packing have already been modified, you're going to have a terrible time building the emergency patch if you cannot roll back your assets, tools, compilers, libraries, and other elements.

#5249494 Dropbox + TortoiseSVN; Where is the advantage? (New to SC)

Posted by frob on 29 August 2015 - 02:18 AM

While distributed version control works well for code itself, it fails terribly for assets.

And games -- except perhaps text-based games -- are nothing without assets.

This is a primary reason why Perforce is an industry standard, not just in games, but in seemingly every industry that works with a lot of assets. It handles other binary assets nicely.

While a source tree is small, assets are enormous. A single PSD file for something complex, like a HUD, can easily surpass 100MB. Repeat for every model, every texture, every audio clip, every other asset, it adds up quick.

All of it still needs version control, it still needs the ability to peek back in time, to be tagged with other versions, so you can build the same game as it appeared on a specific day, say May 5th at 2:47, and be able to track it back.

That also includes libraries and software necessary for the build environments, though many small groups forget about it. If you cannot locate the same compiler version, or the same graphics library, or the same external dependency, then that old build is no good. If you depend on the behavior of some long-forgotten edition of a library but nobody can find that old version, you may end up doing a mini-port to update the mismatched library rather than just syncing to a specific day.

We suffered a pretty serious blow on one project where localization databases were kept as external databases (but those in charge didn't realize). The external databases were not backed up in a way that let us go back to an old build. We were able to make due with mismatched strings since there were few deletions, but it served as a reminder that everything needed to be backed up. We added a step to the build scripts to export the string tables and update them for every nightly build.

#5249480 Advice on weak_ptr usage

Posted by frob on 29 August 2015 - 12:05 AM

I think the issue is that you are equating pointers with connections.

You can have a file object, then close a file, the file object does not suddenly become invalid. It remains a valid object with no open file. You can use that valid object to open a new connection to another file.

Similarly with a networking object, you can close the connection this does not delete the object. It remains a valid object with no open connection. You can use that valid object to open a new connection to another network endpiont.

Just like writing to a file can sometimes fail with an error such as being out of disk space, writing to a network can also sometimes fail. In both cases this is handled through an error code. If a network connection goes bad you might want to attempt to reconnect, or cancel the connection and give the reasons to the user. It doesn't mean the code needs to destroy the networking objects. You can, but you don't really need to.

#5249273 How is this python statement suppose to be friendly? (3.4 ver)

Posted by frob on 27 August 2015 - 10:23 PM

A nice convenient tool to help build and test regular expressions is Regexer