Jump to content

  • Log In with Google      Sign In   
  • Create Account


We have 4 x Pro Licences (valued at $59 each) for 2d modular animation software Spriter to give away in this Thursday's GDNet Direct email newsletter.

Read more in this forum topic or make sure you're signed up (from the right-hand sidebar on the homepage) and read Thursday's newsletter to get in the running!


Member Since 08 Apr 2011
Offline Last Active Today, 07:14 AM

#5199353 A few general questions to point me in the right direction

Posted by axefrog on 20 December 2014 - 09:01 PM

One thing I've found frustrating learning graphics programming is information overload - not knowing what approach to take for a given problem, or indeed what approaches are even available for a problem. Obviously "Google is your friend", but when you get a mass of different results and possible approaches, it can be hard to know which techniques are most commonly used, which are easiest to implement, which are outdated and have been superceded by better techniques, and so forth. I'd prefer to avoid wasting time on outdated techniques and wild goose chases as much as possible.


So here are some questions that maybe that the experienced graphics devs here can answer...


1) Paying for papers? To implement this or that algorithm it is clear that in a lot of cases I need to read a paper which describes an algorithm to solve the problem. Do you find you often have to pay for these papers? I have noticed that a Google search for an algorithm of some kind frequently results in me being stonewalled by payment gateway before I'm allowed to access a given paper. Is paying for papers just something I should accept is going to become the norm for me?


2) Patent concerns? As an extension of the above question, how afraid should I be of patents? Are you guys having to hold back from implementing what is described in certain papers due to patent infringement concerns? Does paying for papers usually grant me a license to use what the paper describes? What's the usual approach here?


3) Drawing 2D vector graphics? I've been learning the Paradox game engine this past week. I've started with 2D graphics so that I can learn the foundational stuff, and in the process I've found that it doesn't really give me anything for procedurally drawing and filling vector paths (e.g. lines, circles, bezier curves, etc.). Seeing as I have the option of creating an empty texture, populating a buffer with raw data and assigning that to the texture, I'm assuming I probably need to learn some algorithms to do so. Just to get my feet wet I learned Bresenham's line algorithm, which obviously is kind of old and ugly, but I started to realise as I looked for alternatives that there are a lot of ways to do things, and a lot of different papers describing those different ways. If I want to draw vector graphics to a byte array, ready for use as texture data, am I likely going to have to buy some papers and figure out how to translate what they describe into code and accept that it'll take me a while but ultimately I'll have a great vector library I can use for years to come? Or am I missing something obvious that would make my life easier?


4) Current vector drawing algorithms? If the answer to the above question is that I'm going to need to read papers and figure it out, is there a resource that I can refer to that highlights the most common modern algorithms and/or techniques for drawing vector graphics? If not, can you recommend any standard modern algorithms that I should be trying to implement? I want to be drawing curves, ellipses, straight lines, rectangles, etc. I want the option to stroke and fill in different colours (and possible with patterns or textures).


5) Shader programming? I understand the basics of shader programming, as I have followed basic tutorials and lessons in setting colours, interpolating and so forth. In other words I understand the basic concept behind shader programming. I know the GPU Gems series offers a lot of miscellaneous techniques for doing random pretty things, but it's not really structured at all. I was wondering if there is a particular book (or online resource) that focusses on shader programming and takes a beginner from a basic foundation and builds up to implemention of various advanced techniques. What resources do you recommend above others?


6) Bonus question - vector glow effects? In Limit Theory, the developer has nice glowy effects around his vector shapes, which he generates procedurally. I don't need to know how to implement this right now, but it would be nice to have an idea about where to even start implementing such an effect when I'm ready to do so. Should I want to do this, what should I look into? See below for an example of what I'm talking about:



Edit: regarding question 6, I found a clue in this: http://forums.ltheory.com/viewtopic.php?f=6&t=1843


Edit: found another gold mine of information here: http://www.iquilezles.org/www/index.htm

#5196524 The magical games atmosphere ?

Posted by axefrog on 05 December 2014 - 05:51 PM

I'm not really sure you even know what you're asking. You should try to hone in what you mean by "good atmosphere". Are you sure you're not just referring to the nostalgia of the games you enjoyed in the past as opposed to how you feel about newer games now that the ideas are no longer new and no longer invoke the same kind of excitement that you used to feel?

#5190635 Name for an MMO (Browser) Game

Posted by axefrog on 01 November 2014 - 03:16 PM


What about latin?

Progress -> Profectus, Processus

Politics -> Respublica

Simulate -> Simulo, Imitor


#5190296 Help with a game idea

Posted by axefrog on 30 October 2014 - 11:27 PM

I think the topic of why a beginner should not do an MMO has been done to death, so check out this thread over on gamedev stackexchange, it has some great info:



Start smaller. Much smaller. If you're new to not only game programming, but programming in general, you need to lay a lot of groundwork in your skill set before you can consider something even remotely as complex as a large scale multiplayer game. Think of a nice, simple game idea that interests you and build that. If you are still fixated on something you know is beyond your skill set, try to break it down into all of the things you can see that it is composed of and start building small games that teach you those basic techniques in isolation, or coupled with 1-2 other aspects that you should learn. By teaching yourself those things individually, you'll build the groundwork you need to be able to eventually tackle your bigger ideas.


To draw a parallel to myself, I want to write a 3D game engine of my own, partly for the learning experience, and partly because I am a control freak when it comes to my code, and I want to build a highly procedural game on top of it. To do that, I've broken down what I need to do into a lot of smaller stages. For example, for the rendering, I started out rendering a plain old static cube on the screen. Then I worked out how to animate it. Then I worked out how to texture it in a few different ways. Now I've moved onto learning lighting, and to do that, I need an understanding of calculus, so currently I'm teaching myself calculus so that I can continue learning lighting techniques. As I progress, I'll learn  more and more things and as soon as I have a baseline set of skills to build a simple game, or even just a fun tech demo, I will do that. I'm thinking a simple little top-down car game will be a good project to apply what I've learned.


But I digress. My point is, work out what you don't know and systematically fill in the gaps by doing small, fun projects that interest you and teach you specific nuggets of knowledge which you can later apply to build something more ambitious.

#5190215 Best book for Shadow and Lighting ?

Posted by axefrog on 30 October 2014 - 02:52 PM

In addition to Real Time Rendering, I haven't read it yet, but I bought a copy of Real Time Shadows, which came highly recommended to me, though I can't remember by whom.


If your calculus and linear algebra is lacking (or nonexistant), I suggest you head on over to Khan Academy (it's free!) and do all the sections on those subjects. I'm currently working my way through Real Time Rendering and without that foundation to read and understand the mathematical notation and to do basic linear algebra and calculus, you'll get lost pretty quickly, and I imagine this would be the case with pretty much any text on these topics.

#5189833 Recommend a book on differential geometry

Posted by axefrog on 28 October 2014 - 06:37 PM

Thanks for the input. I guess I'll hold off on it for now. I have other fish to fry anyway. I found a youtube tutorial playlist from a math teacher on the subject, so i might look at that at some point when it becomes relevant.

#5189612 General Programmer Salary

Posted by axefrog on 27 October 2014 - 11:18 PM

Just be glad you are not a web dev - they get paid $20 - $40 per web page.


"Per web page"? Web development rarely is measured in terms of pages anymore and hasn't been like that for ten years or more. It was only relevant to measure like that when HTML was the primary technology and static HTML sites were the standard. These days, a web developer typically uses one our more back end languages and has some level of database skill, with JavaScript and CSS to boot. The more skill in any of these areas you have, the better you'll do. Skilled web developers easily make over $100k/year in some places.

#5189185 General advises on conception of a game engine

Posted by axefrog on 26 October 2014 - 01:58 AM

Buy this book:



#5189030 Experienced programmer, looking for most effective/efficient way to dive into...

Posted by axefrog on 24 October 2014 - 11:07 PM

I don't know how helpful it'll be, but I am in a similar position to you - look at the link in my signature - I've been blogging about my own progress. I'm mainly going the C#/DirectX route, but the process and books are mostly similar overall. Ultimately, there is a shitload to learn but it's totally doable if you dedicate the time to do it.


My recommendation would be to have a goal that you'd like to be able to implement. Something that inspires you, that will keep you focussed. Something that excites you every time you think of being able to do it. Then break that down until you have a list of basic things you know you're going to have to learn. For me, I started with a a 3D rainbow-coloured cube (i.e. coloured vertices, no texture). Then I figured out how to render several cubes on the screen, and how to do so using hardware instancing. I then added animation to make the cubes rotate. After that I moved on to learning how to texture a cube, how to render a texture with transparency, how to dynamically create a texture and use that on a cube's face, and at the moment I'm in the process of learning lighting.


If you don't have the mathematical foundations, make sure you at least understand high school algebra and basic linear algebra (vectors, dot products, cross products, etc.). It's pretty easy to find books on those subjects (The "for dummies" type books are just fine). I also really recommend "3D Math Primer for Graphics and Game Development" by Fletcher Dunn and Ian Parberry. Check out http://www.arcsynthesis.org/gltut/ and also get yourself a book on OpenGL. I haven't done any OpenGL yet, so I can't recommend any books in that department, but using Amazon star ratings and reading the reviews as a guide is a pretty good bet (4-5 stars is ideal). Then basically start creating sample learning projects where you learn each basic skill one by one in isolation. After a while you'll know enough that you can combine what you've learned into a simple engine that you can build on and continue to learn from. I'd also recommend "Real Time Rendering, 3rd Edition". I understand it's a bit of a bible in the graphics programmer field, and I know I'm finding it to be very valuable. Once you've established some competence in the basics, your own needs will dictate what books to buy next and what papers you need to read.

#5189019 So many programming positions available...

Posted by axefrog on 24 October 2014 - 08:58 PM

I am genuinely serious. As a recent example, a company I worked at for most of 2013 was doing a round of hiring while I was there, so I was asked to sit in with the team lead on a number of interviews and I would say only 20-30% of the candidates could actually solve that basic problem correctly. They all had a go, but some looked way too stumped for what should have been a walk in the park, some massively overcomplicated the logic for no obvious reason, and a bunch of them made really stupid errors like forgetting that integers could be negative, and so forth. It was quite shocking, really. Many others could not answer a lot of basic questions assessing their understand of object oriented programming, many, who were applying for a web development role mind you, really only understood how to do what amounted to VB-style drag'n'drop programming (despite what their CV said) and barely knew any CSS or JavaScript. I think the team lead had done a bad job of screening, but it was quite interesting to see how many people were applying for intermediate-level web development work and barely had junior-level understanding of what they were doing.


I think the problem is that many people (a majority, even) enter this field as a "career" choice but don't have any specific passion for it. Some are quite intelligent and have a good work ethic and so still manage to make pretty competent developers over the courses of their careers, but without that genuine passion for it, most just learn on the job and when they leave the office, they immediately stop thinking about anything to do with development. It's just not what they would do if money were no object. In contrast, many (most?) of the people here in these forums have a genuine desire to build, to create, and to understand what they're doing. Coding happens whenever we can find time to do it. The simple fact is, the more time, effort and passion you put into something, the better you're going to get at it, and most people in the industry are not coming from that mindset. That, and people are often just lazy and don't get around to making the time to keep their skills up to date.

#5189004 So many programming positions available...

Posted by axefrog on 24 October 2014 - 06:19 PM

I would echo smr's sentiments. In all software development sectors, I have often come across anecdotes from people who have been out of work for long periods of time and had a lot of trouble getting work. People who actually know what the hell they're doing do not have this problem. Having been on the hiring side of things numerous times myself, it is amazing the basic knowledge you'd assume an applicant should have that they simply can't demonstrate. Simple algorithmic tasks, such as "given an array of numbers, write a function to return the highest number in the array", are routinely failed by candidates who seemed great on paper.


So the disconnect here is, yes there are plenty of positions available, and you can easily get one if you really know what you're doing. But, again as smr said, good people are hard to find. The droves of bad developers out there will always have trouble getting work as compared to someone with real skill, and it is from those bad developers that you'll consistently hear tales of the industry being difficult due to so much competition.

#5188049 Deciding on a Game Engine?

Posted by axefrog on 19 October 2014 - 05:41 PM

I have to ask the question - if you really want this, why is $19/month a huge deal to come by? That's less than $5/week. If at any point you prioritise casual consumption expenditures (a new TV, a coke and chocolate bar, a fancy coffee from Starbucks), then you need to reframe your expenditure on your tools. They are your tools, just as a carpenter doesn't complain about having to buy a hammer or fuel for his vehicle, as developers we should find value in paying for the tools of our trade. And $19/month isn't that much really.

#5187529 Why not use UE4?

Posted by axefrog on 16 October 2014 - 06:21 PM

One advantage these days that we have if deciding to build our own engine is that there is a massive wealth of knowledge readily available in terms of tutorials, books and published papers. Not a whole lot of R&D is required as compared to, say, ten years ago. It's just a matter of reading and understanding the materials, then applying them.

#5187228 Why not use UE4?

Posted by axefrog on 15 October 2014 - 02:37 PM

Out of general curiosity, what makes you want to build your own rendering engine as opposed to using UE4, given the miniscule price point?


For me, I'm still just learning and also I use C#, as well as not feeling at home with C++. Arguably, learning C++ would be a lot less work than learning how to write a renderer, but I'm also a bit of a control freak and like the idea of knowing my code inside out. None of these reasons are totally rational really when viewed from a time efficiency standpoint, but I guess I enjoy the learning process as well.


What about you?

#5186839 Texture coordinates and shared vertices

Posted by axefrog on 13 October 2014 - 11:54 PM

Thanks for the link, some good info there.


As unimpressive as this is... behold, my first textured anything, ever:




Thanks, all.