Jump to content

  • Log In with Google      Sign In   
  • Create Account


Member Since 26 Feb 2007
Offline Last Active Yesterday, 12:26 PM

#5222120 CMake or Custom ?

Posted by on 08 April 2015 - 03:06 PM

My two cents: I honestly can't imagine making a better bespoke build system than what already exists. In my experience, a build system is to be leveraged and extended, but not replaced -- that is, when you feel limited by it, its usually because you don't fully understand how to use or extend it with custom steps.


But its absolutely the norm that a complex project *does* extend its build system, it won't every last thing you need out of the box. And they're built to be extended with custom steps -- there are hooks all over to allow you to interject into the build process.



But fully custom, or even heavily modified (beyond easy recognition) or just plain complicated builds, are to be avoided. I had a gig once where my job was to perform static analysis of Xbox 360 titles and report back where there were dangerous practices or performance anti-patterns, so we'd get projects from various AAA studios. Once there was one with a very large and complicated build system. The normal process was that there was a Wisual Studio project and it was just good to go, but this one with the complicated build system was crazy -- in the end, what they ended up doing was having their build engineers create us a Hyper-V image on a physical hard drive and literally shipping it to us overnight. Even then, we had one of their build engineers on-call who would remote into the virtual machine to fix things when our tools changed how things worked (which was usually not an issue) -- they also were doing things that broke our tools, like issuing *single compiler commands* that spanned larger than 4096 characters in length (which exposed an incorrectly handled buffer copy in our tool, and took us a week to figure out).


Long story short, bespoke systems are usually brittle and often complicated, almost by definition. Existing build systems do a good job at the job they're meant to handle, otherwise they would not be so widely spread. Attempting a bespoke system on your own means you have to do all that mundane stuff just as well as the others before you might even get to gain any ground with your unique vision -- unless its a requirement, you're probably better of extending one of the existing systems with what you need.

#5221928 Using Vector Graphics for games

Posted by on 07 April 2015 - 02:28 PM

Does it make sense to build a game that has SVG images and then allows the user to select a resolution then converts the images to the proper sizes for the resolution and saves them as png files. I'm thinking this could save a lot of HD/memory space on the lower end systems running my game.


Rather than doing this all client-side and at runtime, another approach would be to do it at install time -- possibly with each level of detail occupying a compressed archive on a server somewhere. You can have the installer check the resolution and only download the necessary assets. You'll want to allow the user to get another package later (say, if they upgrade their display), and you'll probably also want to allow them to download multiple LOD packages (a user might use low-res textures on his laptop on the go, but want the high-res textures when he's docked to a larger, high-res display at home.)


For physical distribution (e.g. on a DVD) you can put all the LODs on disk but only install the ones the user wants.


This whole system can be extended to support other variations, as in localization, where language glyphs might be translated in the textures, or assets have different design cues based on different cultural norms.

#5221912 Lossless compression usage

Posted by on 07 April 2015 - 01:10 PM

The fact that LZW is used for that is interesting—thanks for that.  I've been generally uninterested in adding LZW support to Squash, I'll have to rethink that.  Any chance you could share the names of some of the platforms which can decode LZW like that?


Yes, I had to check whether its been revealed on a non-NDA basis first. Its the XBox One. This public powerpoint from Microsoft/AMD reveal that the asynchronous 'Move engines' (a fancier DMA unity, basically) can both compress and decompress LZ data -- I'm not sure how inclusive of all the different LZ compression formats that is, though. It also can decompress JPEG, can swizzle textures, and perform memset-type operations. I believe that the PS4 does at least jpeg, and might do LZ as well, but I'm not certain.


I don't know if you want to ignore the memory-mapped files -- They are platform specific, but in practice the two platforms (Xbox One and PS4) are similar enough that there might be common ground. But I'm speculating' I don't know, and probably couldn't say if I did.

#5221720 Lossless compression usage

Posted by on 06 April 2015 - 05:04 PM

Just a quick note -- when you're talking about what kind of files are used in games, you're really talking about two sets of files -- the ones used during development to iterate on, and the ones that are delivered in the published product that are derived from the development files. You wouldn't normally have cause to compress the development files, but it might be interesting none-the-less -- game assets are huge and getting huger, which ought to be clear from the fact that some large games weigh in at 70GB or more as they sit on store shelves. But even if development files are not interesting, at the very least you'll want people to keep straight which type of files (development or production)they're speaking about in this thread.


You'll also find it common that many games rely heavily on bespoke file formats that might even vary from platform to platform even for a single game. Game developers like to be able to stream on-disk content straight into memory sometimes, so that the file contents don't need to be parsed. This means that platform-specific compatibility considerations such as padding and alignment (or other, performance-impacting considerations) get built into the on-disk formats for each given platform. Sometimes this 'raw' form of the platform specific data is compressed -- though I think this will almost universally be LZW, because at least one of the current platforms has hardware that can essentially DMA a file into memory and do the decode in transit -- I believe both current consoles also do this for Jpeg as well.

#5221488 Is it realistic to expect to make money in Unity Asset Store/UE4 Marketplace?

Posted by on 05 April 2015 - 11:11 AM

Okay, thank you again, frob. It seems that as a beginner, I have months, or even years of work ahead of me, before I even get the chance to earn some small amounts of money. Not very encouraging sad.png


If you can do something really well, right now, then there's nothing holding you back. Asset makers with a professional pedigree can make money because they deliver professional results -- not because they went to school or worked at a well-known studio. They probably did do those things and that probably does play a big role in the level of results they produce, but its not a requirement. No one's going to dig up your school transcripts and resume before buying assets from you -- if they're good, that is.


Keep in mind that we're talking about non-exclusive assets if we're talking about the Unity Asset Store -- that means also that the assets that will make real money need to be universally appealing, as well as high-quality. You could deliver a very well-executed but niche texture and only see a handful of lifetime sales, and it still wouldn't be worthwhile unless you were able to price it 10 or 100 times higher than a similar-quality texture with more universal appeal. That's another part where experience comes into play -- you need a sense of what will sell, you can't just throw things against the wall to see what sticks.


I would suggest though, that most people do not start by delivering a level of quality that's fit for retail. Most everyone at some point started at the bottom where they literally could not pay someone to take their work, and then they got better and couldn't give their work away, and then they got a better still -- good enough to give their work away, and then the got much better and could sell their work at discount rates, and then they got better again -- more than they ever had before -- and finally they could hope to make a living at it. Everyone starts at the bottom unless they're some kind of virtuoso.


Its not meant to be discouraging, but its reality, and you'll need to pay your dues like everyone else did before you.

#5221199 University Degree - CS vs. CSGM

Posted by on 03 April 2015 - 03:22 PM

Switching to a standard CS degree and simple taking the games classes as technical electives may be something to look into. From what I know, it's not difficult to switch majors, especially if they're in the same department.


Am I missing something? You said that the core CS curriculum is identical except for the difference between taking 10 free CS electives or the 10 pre-chosen games electives -- ergo, if you enroll in one program but also take the 10 different courses from the other program, then you will in effect have both degrees. There is no switching. I would presume that the school will give you both degrees (literally) if you complete it all satisfactorily. There is no 'switching', you just start with one and then do more.



Since most entry-level jobs are fairly siloed, could a dual degree balancing both sides potentially work against me? Or would some studios see it as a possible benefit in the future?


When it comes to skilled work, I've never really heard of being more educated being a problem. You might be perceived as 'overqualified' I suppose, but if that's so clear cut then surely you'll be able to get a presumably better position anyways. Now, if you go into an interview for a technical role, and when they ask about why you took cinematography and suddenly your face lights up and its all you want to talk about, that could cost you that job because they might become concerned you're not in it for the long haul and are really just waiting for a film job to come along -- but there'd be no problem just saying its something you were always interested in and took it mostly for your own enjoyment, usually that kind of initiative is seen as a positive.


I think in general most employers are looking to either fill an immediate need (e.g. they need brains in chairs to do a finite amount of defined work) in which case they only care whether you'll be able to jump in be immediately productive, or they're looking to make a longer-term hire (someone who has a well-rounded base, and can be shaped into more specific roles) in which case they certainly do want you to be well-rounded. Basically, their feeling on your less-related educational experiences is not going to be harmful to you, it's generally a positive if they care at all.

#5221173 How do you stop your game from being stolen/torrented?

Posted by on 03 April 2015 - 01:10 PM

You can't stop the pirates, period. You can slow them down, perhaps, but any measures you employ in this way will also potentially block and irritate your legitimate customers. It's my opinion that you should simply not waste brain power worrying about locking pirates out of your single-player campaign. A better strategy, if it fits, is to have a compelling online component (whether its required or optional is a separate choice, but for me it needs to be optional in the sense that I must be able to play single-player portions of the game without a network connection.) this could be co-op or pvp gameplay, or it could be highscore/social compoenents, or even something like facebook integration -- basically any carrot to entice the user to want to connect online -- and then you verify that they are legit, which encourages them to pay up. This also prevents you from incurring any service expenses on behalf of pirates (you'll only provide network services to paying customers)


Its also generally a mistake to think that every time someone has downloaded your game illegally that it equates to a lost sale, so view piracy stats with a huge grain of salt. I saw a study once which suggested that something like 3 percent of pirated copies represented actual lost sales (people that would buy the game if they had no option to pirate it). The same study suggested that most piracy represents a sort of unfettered trail-version for many pirates -- they'll pirate a game simply to try it, they may not even play it more than a couple times. Only very rarely are pirates actually enjoying the fruits of your labor Scot free for long periods of time.


TL;DR: You cannot really reduce piracy, you can only increase paying customers. The best way to do that is to provide the most compelling experience you can, while strongly incentivising them to pony up some bills. Don't worry about the revenue you've 'lost', build the revenue you can. You'll see a higher return on converting customers (including former pirates) than you will on thwarting the die-hard pirates.

#5221169 preventing system crash or power outage from wiping savegame: best methods

Posted by on 03 April 2015 - 12:51 PM

If you aren't dealing with life and death matters, it just isn't that big of a deal. You're obsessing about an edge case that is nigh-on irrelevant in a game project.


I wouldn't jump through hoops trying to make a perfect, fault-tolerant game, but in this case the usual and appropriate idiom is widely known and relatively easy to implement -- Create the new save file, then swap names with the old save file. Augment this with the ability to verify save file integrity and you're good. For bonus points, keep the old save file around for one more save, and roll back to it if the integrity check of the most recent save fails. I don't think any of that would be an undue burden to implement. and that'll cover all bases short of some truly heinous bad luck or being sucked into an episode of The Twilight Zone.


If you actually need greater resiliency than that, use something like SQLLite if you can. You need to use an existing solution in that case, its not the kind of thing that just anyone can sit down and write in an afternoon or even several months of afternoons, most likely.

#5221162 Need help choosing a language

Posted by on 03 April 2015 - 12:21 PM

There's no sensible reason to "start with C# and gradually move to C++". Just pick a language and learn it. All the choices will be valuable learning experiences.


I'm not quite sure how to read this myself.


If you're saying "just pick C++ now since that's where you want to get to." then I disagree.


If you're saying "Whatever you choose now will be the first of 10 or 20 languages you'll learn eventually" then I agree, but still think C++ is a poor first choice unless you have someone to mentor and guide your progress.

#5221152 University Degree - CS vs. CSGM

Posted by on 03 April 2015 - 11:50 AM

That's good to know. I think my goal overall is to come out with a well rounded humanities knowledge on top of an engineering degree. As for doing a double major, that's something I'll have to see with my course load. Judging by your response would you say it's favorable to pursue a non-technical degree? I've been wanting to take advantage of their cinema school ( George Lucas went there)


I wasn't so much talking about an entirely different program -- I mostly meant that it would be relatively easy to take those 10 other electives in addition to the games tract, and then you (should) have both their "regular" CS degree, and their "games" CS degree and you can put both on your resume. Minors in math or physics are also relatively easy to pick up by piggybacking on a CS degree as well, and are seen as a great bonus to anyone hiring CS grads.


But if you want to take unrelated coursework that's great too. Its college -- you'll likely not have the opportunity to devote yourself to your education essentially full-time ever again, so make the most of it. Most game production jobs are fairly siloed as either art or technical, but there are a few jobs that span both, such as the 'technical artist' -- usually this is a person with a background in traditional or digital art and in computer science, but I could see cinematography as a reasonable substitute for the art side -- mostly a technical artist is someone who can help the technical side understand how to support the artistic vision, and help the art side understand the technical limitations and processes, and usually has a role in defining what that balance is, and might contribute to tools the artists use and work closely with graphics programmers. Of course, many games these days also need cinematographers proper, though they don't need the CS background.

#5221139 trouble parsing quake3 md3

Posted by on 03 April 2015 - 10:58 AM

It would only display as IDP3 on a little endian machine if they read it one byte at a time and you converted it one byte at a time.


That seems to be what he's doing, and its unlikely he's on a big-endian machine. If OP wants to continue reading in single bytes, they'll have to be re-ordered; the other solution is to not read in single bytes, and instead read the format using the precise primitive types.

#5221136 Need help choosing a language

Posted by on 03 April 2015 - 10:37 AM

The single most important thing to do is to start programming -- in any language. Making the 'right' language choice in the beginning seems like a big deal now, but its literally one of the most inconsequential choices you will ever make as a budding programmer. Syntax is easy, its the programming that's hard. Programming is not mindlessly typing C++, or Java, or assembler code -- programming is taking a big problem and splitting it apart to its atoms, then creating the best machine you can imagine to put it back together again while balancing performance, elegance, maintainability, and more -- and working with others to build that machinery on time. 



Now, all that said, you can make choices that are better or poorer, and the poorer ones are to be avoided. Cobal or Perl are probably bad choices because they lack applicability in games. C++ is terribly complex -- its gotten a lot better with the newest language revisions (C++11/14, and soon, 17) but its still complicated enough that its probably not a great first language unless you have someone to guide and mentor you; on the other hand, C++ is the lingua franca of the games industry and indeed most of computing -- there's a pretty high return on knowing C++ when you do take the time to learn it correctly, but it might be premature as a first language. Java, in my opinion, is a poor choice because it forces you to use the dogmatic version of OOP they prescribe because its built into the language rules, and much of which flies in the face of what we understand to be better OOP practices now -- C# suffers some of that as well, but the dogmatism is less prevalent and it gives you more options and conveniences for making it a more 'livable' language. Some people would disagree with me, but my take is that C# is an objectively better language than Java. But successful, popular games have been made it both languages.


If I were pinned to making a recommendation, it would be C#. Or possibly plain old C. Either of those are relatively proven and are industry-standard. If I venture away from mainstay languages, I've been looking at a language called Nim lately (formerly called Nimrod) which I suspect would make a great first language because it has a very friendly Python-like syntax, a very nice macro/template system for you to grow into, and it integrates both a garbage-collected heap (like C# or Java) and a manual heap (like C or C++), and you can choose to use one, the other, or both in your programs.

#5221132 University Degree - CS vs. CSGM

Posted by on 03 April 2015 - 10:14 AM

USC has a reasonable reputation as far as I know, and since they are a traditional school offering a games tract there's no reason you couldn't *also* take additional electives as you see fit, and if you take enough of them you could even come out with dual degrees. Yes, it'll cost some more money, but if you can take advantage of summers and/or can bare the load of one additional course per semester it won't even cost you any more time. The goal is not to do the minimum you need to get your slip of paper at the end, but to come out the other side well-rounded, capable, and able to continue learning on the job and on your own time.


If your concern is to have a resume where the word "Games" isn't polluting your education line, then you'll need to dual-degree it; but if you just want the knowledge, you could supplement your games courses with free online/MOOC classes -- Stanford offers their entire CS curriculum online for free, IIRC.

#5220985 Direct3D 12 documentation is now public

Posted by on 02 April 2015 - 01:22 PM

Indeed. Looking at https://msdn.microsoft.com/en-us/library/windows/desktop/dn770336(v=vs.85).aspx which points to https://msdn.microsoft.com/en-us/library/windows/desktop/ff476329(v=vs.85).aspx suggests that D3D12 supports D3D_FEATURE_LEVEL_9_1 hardware. Can someone confirm if that is the case?


I don't know for sure, but this probably won't mean D3D_FEATURE_LEVEL_9_1 hardware on the PC -- You still need a WDDM 2.0 driver and Windows 10 in the loop, and you're simply not going to see that support from ISVs for such old hardware.


What this probably is for is mobile GPUs in phones and set-top-box-style devices. Many of those devices are kind of weird in the fact that they are simultaneously quite modern in many ways, but also not in others because the silicon or power cost is too high for such a small device. In that respect, mobile GPUs are very modern but only provide the most indispensable parts of a GPU, and so mobile hardware that supports only a 9.1 feature level (WRT bells and whistles) don't look much at all like the Direct3D 9.1 hardware we remember on the PC from 10+ years ago -- the parts that are there tend look more like modern GPUs. In fact, modern-looking but "Direct3D 9.x" hardware is very prevelent in that space -- only very few of the newest mobile GPUs do D3D10.x or 11.x feature levels.

#5220980 Is it realistic to expect to make money in Unity Asset Store/UE4 Marketplace?

Posted by on 02 April 2015 - 01:04 PM

I think, really, that its like any other business -- except you have the "location, location, location!" part already answered.


Identify a need that isn't being adequately met, execute it fully to requisite standards (its not good enough to just be the best of bad options), price it attractively -- get good value for your own time invested, but remove all question in the potential customer's mind whether they could do it better, or cheaper, or both. I forget the name of it, but there's a control-mapping component that's very popular, and I think Unity actually acquired/invested in them. Here at Microsoft, we recently bought the company that created (and successfully sold) the UnityVS plugin (which integrates Unity with Visual Studio for scripting) so that we can give it away for free to help people make more and better games for Windows platforms using Unity. Those are examples of lucrative, core needs that someone decided to meet and made a good living at it.


Now, as a seller without a professional pedigree, part of identifying opportunities that aren't being met is also being honest about which ones you can fully and successfully execute on. Do only the things you can do well, don't pass yourself off as more capable than you really are. That's how bad reputations are born, and nothing kills person-to-person business like a bad reputation.


Another avenue, if you work on your own projects, is to monetize the components and assets you might have made for your own work, perhaps some time after you release your project so that there aren't a bunch of games that look like yours or have your systems.