Advertisement

Game programming is hard

Started by March 12, 2015 08:37 PM
11 comments, last by pcloverz 9 years, 7 months ago

Hi,

I worked last year into 3d games and participated into two titles sports simulation, did some stuff like sounds, skid marks,..etc.

I'm into the way of getting fired soon, tasks getting hard and I couldn't do them... I lost the confidences at all, however I have doing programming for 7 years, but worked on business applications,..etc. Game programming is really different and it needs a lot of algorithms and imagination..

Now I lost the confidence at all after failure in two tasks, I even want to be a taxi driver and leave the programming career... my education is electronics engineer and never studied programming in the university, I taught myself everything... which basically is nothing

How would I restore my confidence :S ?

Stop feeling guilty and beating yourself up. I speak from experience, when your mind is not clear but filled with these thoughts, every little problem will seem like an impossible mountain. Just talk to your manager honestly about how you think you're not working at your full potential, how you want to improve and what you can do together to help fix that situation. They didn't hire you, and they're not keeping your for no reason. I remember you made a similar thread months ago about how you think they want to fire you, and you're still there. But those thoughts in your head are still there too. That's the problem.

Advertisement

he threated me last employee appraisal of getting fired if my performance won't be better. I lost the confidence in software development in general. I suck :S

I looked at your project its very nice. Can I work with you ? Maybe I learn more ?

Okay, following up with all your other posts and threads from recent months, it is a bit hard.


First, the potentially most critical one.

I lost the confidences at all, ... Now I lost the confidence at all after failure in two tasks ... leave the programming career... which basically is nothing ... How would I restore my confidence :S ? getting fired if my performance won't be better. I lost the confidence in software development in general. I suck


Those statements, both in this thread and in others, are a concern.

If you lose confidence bad enough to think frequently of death, you need to get help.

If you lose confidence enough that you cannot hold a job, you need to get help.

The things you recently described -- a series of failures, having your job threatened, facing the possibility of losing some of your career dreams -- can seriously harm your mental state to have some of the things happen that you described.

Those are very real issues. The mental concerns can be just as severe as breaking bones.

You wouldn't say to someone, "You just broke your bones, they are sticking out of your legs. Just walk it off for a while, you'll feel better", instead you'd get them immediate medical care. What you described can cause serious mental injury that needs the help of mental health professionals.

Keep up with your mental health. If you are interpreting the entire world in negative terms, get help. If you are thinking a lot about death, get help. If you are feeling emotional pain and despair bad enough that life doesn't feel worth living, or bad enough that it is painful to face the world, get help.

That is far more important than having a dream job.


Now moving on to lesser issues like careers.

recent threads ... Maybe I learn more ?


In some of your threads you are talking about building a Space Invaders game. In those threads you were struggling with some very basic issues, fundamental issues of data representation. Based on those comments, my interpretation was that you were a high school student or other person interested in being a professional software developer some day, but were not yet.

Then you had some discussions where you mentioned you were working in a professional game studio. I was confused at first, wondering how you could be lacking core knowledge of software development. Then you wrote a post about how you had a meeting with your boss, and he hinted that you may not be around in the future. My advice there was to sit down with the boss and determine exactly what he meant so it would not be misinterpreted. Be absolutely certain he was saying you will be fired, versus discovering if he was telling you a specific way to improve your abilities.

I have doing programming for 7 years, but worked on business applications,..etc. Game programming is really different and it needs a lot of algorithms and imagination.


Yes, that is very true. Most people have no idea what goes in to making games. I've worked for years both inside and outside the game industry. Business apps are usually much easier.

What is acceptable in the business world has always been amazing to me. It is pathetic how a machine can be handling a small volume of processing requests every second but because of abysmal developer skills the server performance plummets. One such example, a business client had servers that queried a roughly 60TB database for around 40KB of data, sliced and diced the data into JSON format, and returned a roughly 60KB response. The transaction times to the database were quick, about 20ms. But the time for these Java programmers to accept the response, convert the byte arrays into a bunch of strings, split those out into substrings to provide a uniform interface, put those into a map so they could be looked up 'conveniently', look up the few items they need in the map and copy the strings, compose those strings into a response, and finally return the response. Naturally they couldn't touch the database directly, business logic needed to go through a data tier to a different data tier library. These seasoned, tenured business software developers were able to handle around 30 requests per second on a server. Each of these roughly 80KB requests ended up performing around ten thousand Java string allocations and around three megabytes of memory, requiring about 200ms to process.

Their solution to slow performance, which all the teams in the organization thought was completely reasonable, was to buy more machines. The organization saw no issues whatsoever in having a large load-balanced server array of 10 machines to handle the requests. Some investigation showed these machines were doing nothing more than repeating what Oracle gave them, all they did was translate JDBC calls into JSON data. Few of those business developers understood the line of questioning, asking why their Oracle server was able to easily handle the load, wondering why they didn't just provide a thin wrapper to the others in the organization to just call the database without introducing a 200ms low-performance layer. Ultimately we managed to get them down to around 70ns (which they treated as a major success). I learned they didn't even bother to add performance metrics to their software until they were ready to launch, and suddenly realized they were taking more than a half second per request; they had a nightmare scenario that took six months to drop it to 200ms.

They were happy they could regurgitate data, processing around 5MB of actual data and around 150MB/sec of unnecessary overhead. They were not bandwidth limited, nor were they compute limited. A profiler showed they were filling up their 16GB of memory with garbage collection running two or three times per minute. While they knew quite a lot about writing queries, they had no clue about how memory works on hardware and how to extract high performance from machines.

Contrast with games, where major titles I've worked on have been well designed and we don't start to see concern until we hit around 2GB/s of data. We profile early, profile often, measuring everything we do. We have continuous builds that automatically run and test the programs, logging memory patterns and sending alerts to key people when frequently-used structures pass critical size limits or when performance drops more than a certain percent.

Games are very different from business software. You need a deeper understanding of the machines to do it well.

programming for 7 years... I worked last year into 3d games and participated into two titles sports simulation, did some stuff like sounds, skid marks,..etc. ... Now I lost the confidence at all after failure in two tasks ... my education is electronics engineer and never studied programming in the university, I taught myself everything... which basically is nothing

These are closely related so I moved them together in a quote.

The tasks you described are basic tasks typically given to beginners, junior developers, and those recently transferred to the project to help them get comfortable with using the technology.

If we hired someone with seven years of experience I would expect them to be able to handle just about any task quickly and independently. It may take a few weeks or a few months to get up to speed on the project, but after that I should be able to give you anything from making a dice-rolling system to making characters animate to building scripted game objects to building minigames.

Learn programming in a structured environment like a university generally means you have broad knowledge. It generally means you were forced to learn topics even if you didn't like them. This is one reason why self-educated programmers or those who ONLY attended "code camps" for their skills tend to be worse programmers; if you only study the topics you like you will never master the topics you don't like or don't know about. You will have a small island of knowledge, and you will quickly drown when placed outside that small domain.

In that regard, you write have been on the team for almost a year. With seven years of programming experience, my expectation is that you SHOULD be able to handle just about anything assigned.

I even want to be a taxi driver and leave the programming career... my education is electronics engineer and never studied programming in the university, I taught myself everything... which basically is nothing

Considering the other posts and what you have written here, it may be appropriate to consider a different career.

I've known people who thought that they wanted to go into games, but once they entered the career they realized they had no aptitude for it and hated the work.

One of them graduated with a CS degree, said in private that they hated the program but loved their college job working in a garden center nursery. They got a game programming job as their first job out of college, and after a year of misery decided to go back to tending plants.

Another one had been a successful game programmer for about three years. He also had a guitar in his cubicle and occasionally we'd be treated to some excellent music and singing, he liked to play in one of the side rooms but it was not sound proof. After several years of working together, he said his goodbyes -- he was returning to school to get a second degree, this time in music education. While he was able to make games he had discovered that was not his passion.

You might fall into either of those camps.

The first one thought that since games were fun to play he thought they should also be fun to write. He had seen that some people have fun and exciting careers in game development, so he believed that if he just pushed through yet another obstacle, one day he would love the job. Except that was not a field he actually enjoyed, they were not tasks he actually enjoyed, it was not a work environment he actually enjoyed. While some people love creating algorithms and working with data logic, most people hate it. He really accomplished a lot, completing a lot of tasks he hated trying to reach his childhood dream. It took him years to realize the childhood dream was actually terrible for him. You might be similar.

The second one did enjoy some of his tasks, he was fairly good at it, and he could have continued for the rest of his career in the field. But it was not his passion. If you talked about game topics he could discuss it, but if you talked about music he would get caught up in the discussion, would be excited and engaged, and could share experiences and ideas and hopes and goals. He was able to make games, but that was not his passion. He made the right decision to follow his passions into a different career. You might be similar.

You mentioned driving a taxi. I can certainly understand some of the draw for that as a career. After a short time you know where everything is, so driving becomes easy. The work aspect is minimal, you sit in a relatively safe box for many hours each day. You get to meet a lot of interesting people, some will want to talk. There will be the occasional jerk, but most people will be sociable and engaging, or at least not a burden. The pay isn't bad. If you want you can find a quiet corner and take a break, not earning money but enjoying life.

It might be that this can be turned into a good thing. Consider carefully what you really do enjoy.

For me, I love making games. When I have nothing else to do and want something fun, I find that I still build games. When I engage in conversation I am most passionate about the topics. I engage with friends and acquaintances. An old friend-of-a-friend was asking online about help on building a robot for a youth group, and they didn't know how to figure out where the robot was. We talked for hours, figuring out what sensors they had, and I helped them build all the math to effectively build a world space, using a few triangles and various trig functions like the rule of sines and such so their robot could build an internal world. Basically we built a virtual world and spatial system just like a video game's world, fed by moving the robot a small amount and finding known markers. As something I love and am passionate about, it was a great time.

But if I didn't love it, if I was like many people I know who hate doing math and hate thinking about geometry, that project would have been a nightmare.

If you need help in that, one excellent book is "What Color Is Your Parachute?" The book is update every year and is a global best seller, so you can find copies of it in every library and used book store. Get a copy of the book, search for a section called the Flower Diagram. Work through it. It can help you discover what your real passions in life are. I've seen that exercise transform people's lives, as they make the discovery about what they really want to do by thinking critically about what they enjoy when they are on their own.

If in doubt, do the flower diagram from that book. It can help.

life advice by frob

Sadly posts cannot be upvoted here, but here you go: +1

It's always nice when someone makes a lengthy post about an interesting subject.

Here's nu addition to the clear story of Frob;

- it may sound strange at first, but remember that you are in control of your own success/ future
- if you yourself don't have confidence in yourself, it's likely that your boss will

My advice would be to take back control. Pro-actively plan a meeting with your boss, tell him you will only succeed when/if you get clear focus and do things differently, prepare well and ask specifically what you need to be succesfull and of added value to the studio. If he cannot deliver that, make the decision yourself and don't let the studio "surprise" you. All the best.

Crealysm game & engine development: http://www.crealysm.com

Looking for a passionate, disciplined and structured producer? PM me

Advertisement

Programming is hard.

Indie game development is more like being a self-recording, self-promoting singer-songwriter. Don't expect it to be easy at any time, any more than you would a successful singer-songwriter even if you played covers in a weekend warrior band for a few years.

Stephen M. Webb
Professional Free Software Developer

I worked as game developer and do it as hobby project, yet my daily business is application developer. There're other challenges, but I think that application developer is often easier than game developer.

I like to compare coding to doing art. I really love doing art, but I'm not good at it, still I tried to improve over several years (to be honest decades).

What I personally learn by doing it is:

1. I will improve when praticing, and I will get better and I got better more than I have ever thought of by simply praticing.

2. Still, there are soo many people doing art which is much better than mine and I know that I will never be the next picaso (I'm lacking something to grasp the real concept behind art to be honest).

3. Would I do art in a game studio, the pressure would crush me, I would not be able to compete with the rest, yet I'm sure that I would be a good addition in a less demanding environment, when I would practise more.

4. Eventually I accepted that I'm good at coding and not at art, even if I love doing art and I would get better over time, it is just easier for me to do what I can do best.

@frob: +1

openwar - the real-time tactical war-game platform


You wouldn't say to someone, "You just broke your bones, they are sticking out of your legs. Just walk it off for a while, you'll feel better", instead you'd get them immediate medical care. What you described can cause serious mental injury that needs the help of mental health professionals.

This reminds me of the Emotional Hygiene talk from TED:

This topic is closed to new replies.

Advertisement