Jump to content

  • Log In with Google      Sign In   
  • Create Account


Member Since 23 Feb 2001
Offline Last Active Today, 07:19 PM

#5204034 Code appearance, is it really important?

Posted by slayemin on 13 January 2015 - 03:23 PM

1) Software programs are never completed. They may be complete for now, but requirements / needs will change over time. That means the program needs to change as well or it will become useless / irrelevant, and you're not going to find a business person who has invested hundreds of thousands to build software that can't adapt to their changing needs. What this means is that someone will need to read and understand the code, the quicker the better, and most often it is not the same person who wrote it. This person is the maintenance programmer. They are angry people. They want to murder people who write bad code. So don't give them a reason to hunt you down.


2) Elegance is simplicity. The principle of occams razor applies. If two competing techniques yield the same result, the better technique is the simplest technique. For coders, this means less chances for bugs, less code to maintain, and usually better performance.


How much effort should you put into writing elegant, simple code? As much as is reasonably possible given your skill level and constraints. It will never be the last time anyone looks at that code.

#5203210 Advice for first mobile game engine

Posted by slayemin on 09 January 2015 - 09:13 PM

The reason I recommend Unity is because it is a mature engine which has multi-platform support, including for mobile games. It also has a pretty big community behind it, so its easy for a beginner to find articles for the help they need. Yeah, it has a bit of a learning curve. You might spend a month or two, or three learning how to use the tool. But take it from me, a guy who wanted to avoid learning a third party engine as long as possible by creating his own engine, you will save SO much time trying to learn another engine / editor. I spent 12-18 months trying to build my own engine. It works, but its not very good. Certainly not good enough for a shippable game. If I wanted to add extra features and capabilities, I could look forward to spending a large amount of time implementing it, and it still wouldn't be nearly as good as the out-of-the-box implementation done by a team who spent many months sweating over the same problems. I'm not talking about adding a function or two, more like "I need to have multiplayer, which requires network code! shoot, that's going to cost me 2-3 months minimum to just get something up and running" vs. "oh, I need to add networking. Let's just look up how to use the built-in engine tools within the documentation and implement it", which would cost 2-3 days. These days, if you are a very small team and want to make a game -- and you're building your own engine -- you're doing it wrong. If you have a huge and experienced development studio which has a track record of shipping many games in the past, it isn't a bad idea to build your own engine (but you should have a really good business reason for that! Such as licensing, technical limitations, or pushing the tech forward).


Unity has multi-platform support, a mature community, and you can try it out before paying any money for it. You can also write C# code to script out any game behaviors you need, so that's pretty handy.

The most viable alternative to Unity is Unreal Engine 4 (which I'm using). You can pay $20/month to get full access to the whole engine, all of its source code, and be making games in no time (or how fast you can pick it up). You don't necessarily need to write code, you can implement game play logic using their "blueprint" system to visually script together game logic. If thats not powerful enough, you can always add in C++ code to supplement your BP code. UE4 also has multi-platform support, but is a bit newer on the market so the community hasn't had as much time to develop and create tutorial content (though some exists).


Picking either UE4 or Unity will give you more than you'll ever need, so choosing one or the other will never be a disappointment. 

#5203151 C# seems good, but....

Posted by slayemin on 09 January 2015 - 02:33 PM

I actively use both C++ and C#.


With C++, you can very easily shoot yourself in the foot if you mismanage pointers or forget to deallocate heap memory. It's one of the biggest sources of common bugs, especially with beginners.


C# and Java try to help you avoid these problems by taking care of most of that backend stuff for you. They both give you a garbage collector which will clean up your unused objects, but you lose control over when that happens. This can cause slight performance issues, but I have yet to see them myself and I wrote a rudimentary game engine using C# and XNA.


What really determines "speed"? I would argue that algorithm choice and implementation design are a hundred times more important than language selection. If you have 10,000 objects in a game world and you need to run collision detection on them, the technique you select is going to have a bigger impact on performance than any slight boost you'd get from using an unmanaged language. In other words, bad code / algorithm choice is much more responsible for bad performance than language choice. Aim for O(LogN) algorithms instead of O(N*N), and you'll generally be just fine. Even C++ will struggle with bad algorithms.


My recommendation: Use C# until you find a really compelling reason not to.

#5202982 UE4 - Make pointer to custom UObject editable in Blueprint

Posted by slayemin on 08 January 2015 - 08:35 PM

Oh. This just occurred to me.


You should look at your UCLASS macro. Your class probably isn't showing up because its not visible to the editor. You'll want to add something like
UCLASS(Blueprintable, BlueprintType)


This should make your class visible within the editor and allow you to derive blueprints from your class. It may also make your class visible on that dropdown menu.

#5202934 UE4 - Make pointer to custom UObject editable in Blueprint

Posted by slayemin on 08 January 2015 - 03:44 PM

What kind of problem are you getting?

Is the widget not visible within the details tab within the editor? Are you getting a type conflict which prevents you from adding the BP?


Also: You'd probably get a faster and more accurate response by looking around on the UE4 forums.

#5202931 Advice for first mobile game engine

Posted by slayemin on 08 January 2015 - 03:37 PM

Check out Unity.


You won't be able to avoid getting around the fact that you don't write code well, so you'll have to improve on that skillset.

#5202086 Resume Feedback

Posted by slayemin on 05 January 2015 - 04:23 PM

When I look at resumes, I try to figure out a few things:

1) Does this person know what they're doing?
1a) what is their skill level?
1b) What's their project track record?

1c) Is their experience relevant to the position?


2) Can I depend on this person to take ownership of a task and see to it that it gets done on time and to a high degree of quality?


3) What value can this person bring to the team? What can they do? How do they help me make more money than what I pay them?




If I was hiring for a programmer:

As it stands right now, your resume would be quickly discarded without a second thought. I'd look for stronger candidates. Who knows, maybe you are a strong candidate, but your resume just doesn't tell me that. All it has are a bunch of short non-descript terms for things I'm vaguely familiar with. Take "OpenGL deferred renderer, shader permutations (GLSL), and multiple lighting models." for example. It doesn't tell me much, if anything. What's involved with that stuff? What did you do? why did you do it? what problem did it solve? did it work? What was the result? Pretend I'm an idiot HR manager with a vague head for business and zero technical knowledge. How does this illustrate to me how you'd bring value to my company? Connect the dots, spell it out for me -- or I may either not connect the dots or connect them in ways you didn't want me to. (it's like programming! leave no room for guessing and assumptions!) What if my company doesn't use OpenGL or GLSL? Does that make your skill useless? You also barely mention everything. When you say, "2D collision detection", I have no idea how involved that is. Did you just do a simple function to test for overlapping axis aligned boxes, or did you do something as elaborate as creating something like Box2D? I have to assume its the former, which leaves me underwhelmed.


I also wouldn't care one bit about your jazz certificate.



The purpose of a resume is to get you an interview. You have to give me enough meat to chew on to consider you to be a viable candidate. That doesn't mean you write an essay or your life story, you just give me enough to go off of so that I can say, "it wouldn't be a waste of my time to interview this person. Let's bring them in!". Then, at the interview, you sell yourself and you do it hard. Don't go to an interview without a clue on what to say or do. Don't expect a bunch of one-sided questions from employer to employee, be the one to pitch yourself! Introduce yourself, demonstrate your value, see if its a job and company you would want to work for, then close the sale. Ask for the job.

#5201431 Any good open source game engines?

Posted by slayemin on 02 January 2015 - 06:16 PM

I'm starting a small indie game project and I'm looking for an open source game engine to work with. I need open source tools because I want to allow community content in my game but most proprietary engines are not redistributable and make modding support tough. I need an engine that offer networking, decent lighting, an editor, and a common scripting language. Any suggestions are much appreciated.

Yeah... that's not going to be a small project.

Unreal Engine 4 supports all the things you're looking for, though I don't think you'll really need to dig into the engine source code itself. It's sort of open source, where you can download, modify, update and look at 100% of the code needed to build the engine, but you don't own the rights to do whatever you want (ie, you can't freely give it away or sell the engine yourself).

#5201374 Being approached by a publisher

Posted by slayemin on 02 January 2015 - 01:58 PM

First and foremost, you don't want to get ripped off. You don't want to sign a contract which signs your rights away, gives up creative control, or gives up your intellectual property rights. So, be careful for any terms which may do so without appropriate compensation.

If they're paying you money to make this game you've prototyped, you should also keep in mind that you may not want to work on this game as a solo developer. You may find that a few months down the road, you need help in areas that you don't have a good skill set in, or you just have too much work for one person. This means hiring someone to work with you and that usually equals paying wages and that means you have to have a place for them to work, and that comes with some slight facilities costs. Whatever happens, you'll want more money than you personally need due to unforeseen cost overruns or future expenses.


That being said, since you're dealing with someone who you've never done business with before, you can't necessarily trust them. Especially as an international relationship. The simple response is to agree to some contracts, but what happens if one party breaks the terms of the agreement? How are the contract terms enforced in international law setting? It would be easy for someone like you to take the money and just disappear without a trace and there's very little legal recourse. Or, you could sign some agreement where you deliver a finished game and expect to get paid for it, but never do. I think, in a scenario like this, what would probably work best is some sort of milestone payment system, where you and the publisher agree on a set of milestones for the project, and you get paid each time you reach one. And, to get things started, you'd need some seed money both to start working and as a sign of good faith and commitment on behalf of the publisher.

Keep in mind, every publisher is treating your product as a risky investment. They want to make money off of it to recoup their up front costs, so you're going to get pressure to monetize the game. You'll have to explain to them how you plan to make money off of this, and if you don't, they'll plan it for you (and you may not like their monetization strategy).

Anyways, take my words with a heavy grain of salt. I've never worked with a publisher myself since I'm independent. But these are things I'd look out for.

#5201065 First Game Guidance

Posted by slayemin on 31 December 2014 - 05:19 PM


Have you read the FAQ on the right? I know its easy to miss, but its got lots of valuable information for people just getting started.


I have two recommendations for you:
1) keep your first games SUPER simple. For a complete beginner, making a game like pong would be quite challenging but also a good introduction to making games. To accomplish that task, you have to understand the game loop, how to handle user input, how to display scores, how to trigger victory and loss conditions, how to write AI and where that fits in, how to move things on the screen in real time, etc. You can even accomplish this with a black background and white rectangles, no need for graphics yet.


2) The best resource for getting started is a solid book on beginning game programming. I recommend something on C# with XNA (ignore that its deprecated). Sure, books cost money, but who cares? You get super high quality content which has been vetted and compiled into a coherent series of chapters. Its rare to get that by reading online articles. If you really resist buying a good book, the second best starting place is probably over on Riemers XNA tutorials. He also publishes a book, which is probably better than his online articles.


Again, start super simple and buy a book. Every great project has humble beginnings. The first step is always to get something to show up on the screen. Good luck!

#5199044 Where should I start learning game development?

Posted by slayemin on 18 December 2014 - 08:47 PM

You can also check out Unreal Engine 4. They have a special student license so it will help you with learning without paying.


UE4 comes with a bunch of starter content and a bunch of documentation and tutorials, so you can literally place a textured cube into a game world in less than a minute. There are some nice video tutorials which go through how to build a house, step by step, and wire it up with blueprints to get some interactivity going (ie, push a button to open a door). No code required!

#5198911 Is Java a good Language for Games?

Posted by slayemin on 18 December 2014 - 03:20 AM

Short answer: Yes.


Java is a tool (like a paint brush). A tool is only as good as the person using it.


Bad artists will make bad art, regardless of how good their tools are.


Good artists will make good art, regardless of how bad their tools are.


Sensible artists will make amazing art with the best tools they can get their hands on, but their tools won't limit what they can and can't do.


I mean, Rollercoaster tycoon was written in Assembly. That's insane. But the developers still made a great game. There's tons of free game engines out there and people still make terrible games with them.

#5198910 Need Guidance and Advice

Posted by slayemin on 18 December 2014 - 03:15 AM

1) Personally, if I was in your position, I'd keep my job as a financial adviser. You can do your job and make lots of money and just play games in your free time. Making games is entirely different from playing them and not nearly as financially rewarding.

2) If you want to get into game development anyways and lift the curtain behind it all, here is what I'd recommend:

IF you want to be a programmer:
Get good at mathematics. Get proficient at everything up to and including Calculus and linear algebra. The cartesian coordinate system will be something you use every day. Start super simple. Pace yourself. And most importantly, be dedicated. Don't give up when things get hard and frustrating. Push hard to overcome all of the challenges you'll be faced with, because there will be many. There are tons of resources online to help you get started, so the internet is your oyster...

IF you want to be an artist:
Get good at drawing. Draw till your hands hurt and your room is full of art. Don't just fill your room with trash, try to improve. Get familiar with the digital tools used by most artists (Photoshop, Maya, Mudbox, X Normal, etc). Get smart with materials and shaders.


IF you want to be a producer:
Read up on PMP and start figuring out how you can put what you read into practice. Learn about the unforgiving iron triangle of money, features and time and how you need to balance it all out.


IF you want to be a game designer:
Hah. Good luck. Everyone wants to be a game designer. But, legitimately, you're going to have to design a lot of games and prove you know what you're doing. A designer will have to work quite hard to figure out how to balance the game, come up with interesting game mechanics, design levels, etc. It's harder than the mystique suggests.


If you want to be a game tester:
Its a pretty good foot in the door job with less technical skills required (just write well and be analytical). It's not a fun job though. You play the same god damned game over and over again for 8+ hours a day, doing the same things and trying to break the game and then documenting how you broke it and what happened. It gets tedious quickly and you have to test games you may have no interest in ever playing (unicorn adventures III anyone?).

#5198906 My Game Plan

Posted by slayemin on 18 December 2014 - 02:53 AM

C# is a good starting point.


Keep in mind, you're going to be learning two things at the same time:
1) How to write C# code
2) How to write a program using logical instructions

The two are not the same. You can accomplish #2 in any language, but the means you're using in this case is via C#. So, when you're struggling to make something work, you need to be careful to ask the question: "Is this a language syntax issue or an issue with trying to figure out how to correctly write instructions sequentially?"


So, with #2, you can actually accomplish this by writing your instructions in english using pseudo-code, such as "Add two to the value X." or "Turn the space ship by 45 degrees and then apply the thruster."

Why is this important? Because you're going to eventually get to a point where you say, "How do I write a for loop in language XYZ which iterates over ten items?". The end result is the same (logically speaking) but implemented differently depending on which language you are implementing it in. So, "programming" is a language independent, abstract discipline, in which you get good at it through lots of indirect practice.

When you're just getting starting with making *any* type of program, you want to start SUPER small and simple. Start with printing the classic "Hello World" onto the screen. Then create a "Guess my number" type game, where the computer picks a random number and you have a fixed number of tries to guess it. Then, create tic-tac-toe. Then try creating something more complicated, like break out. Graduate to tetris. Then maybe pac man or some other old school atari games. Stick to 2D until you get really familiar with the game development process. When / if you eventually shift to 3D, your literally adding an additional dimension and the amount of work grows in an order of magnitude and the complexity increases equally (ie, you can figure out what someone is clicking on very easily in 2D, but in 3D you need to shoot a ray out into the game world and intersect it with a 3D object).

When things get difficult, I find what helps the best is to try to write out what I'm doing in pseudo-code and work out the solution to the problem on a hand-held whiteboard. If I can't solve the problem outside of code, what hope would I have of solving the problem with the additional complexity of code?

Also: If you *really* want to get good at writing code, get good at mathematics! Get good at trigonometry, linear algebra, algebra, etc. You'll be relying on the strength of your math skills every day. You don't want your math skills to be your lowest common denominator which limits your capabilities. Getting good at math should also directly help you get better at writing and conceptualizing good code. for example, if you know the quadratic equation and you want to write a function to solve it, you already know what the objective is and what the answers should be when you test them, and you should be able to break the algorithm down into its component steps and verify that the values are the expected values. This is essentially what all programming boils down to: Do the steps make sense? Do the values match the expected values? Does the final product match the expected product? Now, put it all together to build a program which appears to do magic!

#5198899 0 experience in programming and game development

Posted by slayemin on 18 December 2014 - 02:23 AM

Well, im finishing school this year and i am leaned to begin a career as a game dev, i really like animations, modeling, cinematics, etc. but i never tried making any of these, also i have 0 experience in programming, i love playing games and thats why im choosing to start in this trade.


Please guys, advise me and give me tips to begin learning before starting university with 0 experience.




P.S: im bad at drawing sad.png

If you like animations, modeling and cinematics, and that's what you want to get into, then you need to get good at producing those types of work to a high degree of quality. That means you need to get good at producing art. The fact that you aren't good at *drawing* is concerning, though not a show stopping problem. Get better at it through practice!

Game programming has very little to do with the artistic side. The closest you'll get in programming to artwork is becoming a graphics programmmer, and most of that is more science related than art related (such as figuring out how light interacts with surfaces of different materials and shapes and distilling that into mathematical formulas).

My best recommendation is to pick up the book titled "Game Plan". It gives you a detailed synopsis of all of the various roles necessary to building and shipping a game. The roles aren't just limited to art and programming, there are tons of other roles and needs which need to be filled by people who know what they're doing! Check out the book and find the role which aligns most closely with your interests and skill set, then get better at that.

One thing to keep in the back of your mind: Video games are software. Game development is a subset of software development. So, getting good at various parts of the software development process will make you valuable as a game developer, and when you are tired of making games (which may happen based on industry statistics), you can move on to other sectors of the software development industry. You have a fall back plan for financial and career security!