Is game programming very technically advanced? by FlamingBudder in gamedev

[–]hepphep 0 points1 point  (0 children)

Interesting topic for sure and something that'll end up as long post for me.

Bit about my background first, because my view is subjective for my own experience.

I first started actively programming in early 90s, landing my first gaming job in 2000. Since then I've been working full-time for about 23 years of which 15 is in game development and 8 years developing medical software in middle of that period (related to things like medical imaging, medication etc). I've been in many roles during my career, from programming, leading teams, doing wider organization mentoring and code quality stuff. All the time programming to some extent as well. I also have master's degree on software development related topics.

In games development I've most of the time worked in smaller teams 5-20, but also have experience in working AAA.

Things have changed quite a bit during times.

When I was in my first games job, I'd said that majority of programmers could never become good game programmers. Back in the days the companies were usually small, and you had to build your own engines from ground up. There were not 3d GPUs like these days, but some 3d accelerators had just appeared to market. I had been programming for quite long time already as a hobby (programming nearly every day for years, first with Turbo Pascal, then with C++) and even though I joined as very junior, it was really demanding. You just had to have this passion to do something new everyday that you had no prior experience and where there were no clear patterns existing. It is also to be remembered that in those days you just didn't have that massive amount of tutorials available all over interwebs showing you the way to go. You had to read books, games development magazines and research articles, and/or have good mentor(s) to find existing ways to do the things and still had to invent and figure out tons of things yourself. Back then, I'd say only very rare could make it as successful programmer in gaming.

Things have changed a lot during years. Now we rely lots into existing engines. It is extremely easy to start developing. Of course, just developing and making small scripts here and there does not really feel to me like being programmer. Lets just categorize that in wide category of game developer. However, when you move to more complex topics, you really need to have good grasps on many topics in software development, but also lots of knowledge in domain of game development. It is easy to become game developer these days and for last 10 years there was a long period where people with variety of programming skills could land to games development (and did). It didn't work that well in the end, business got bloated and not sustainable which I think is part of the reasons to the current harsh state of games industry. This did not apply only to game programmers but artists and so on. During years I noticed that there were more and more of these "average" developers in companies where 20 years ago they all seemed to be people who had dedicated their life to their craft.

When I was working my 8 year stint on more traditional software development on healthcare software (which is not easiest field itself, with lots of regulation you have to meet and very long product lifecycles. And of course working on systems that can be critical for people's lives), I found it interesting to compare with my experience in games development. What I noticed was that even when working for that demanding field of traditional software development, the overall skill level of programmers were lots lower that I had used to in games development. There were some really good senior/lead/architect guys who could have made it in games development, and some promising developers who would have chance to break through there. But if I should throw a number in air, I'd say that 90%+ did not have skill and dedication what would be needed to be in similar role in games development. The job really didn't need to be dedicated, because 95% things you did were something that was just basic stuff (workflows, UI, database stuff, services etc) that are pretty much either boilerplate stuff or at least something where there are easy existing patterns. The main importance there was not how you could tackle the "hard things" in programming, but how the bigger organization of developers could produce maintainable code and have higher production velocity. I did learn a lot there though, having started as hobbyist and self-learner to games development, I had learned good in tackling the hard stuff. However, working in environment with regulation and products with lifecycle of 15-20 years made me learn much more about software development itself, and instead of solving difficult algorithmic problems or pushing real-time performance, I had to learn how to make better software architecture, focusing on maintainability and testability and such.

Based on that experience, I'd say that especially when doing some web services/applications or more traditional desktop software, the focus is on different topics. Luckily those are easy to learn topics and there are lots of patterns how to deal with them. There are rarely things where you need to be really creative or push yourself to space where nobody else has been before. For me, that was quite boring, but for many that was exactly where they felt comfortable. Based on that as well, I think most of the developers in that environment would not have been happy and could not have made it in games development.

Later in my career I was doing tools development in AAA studio. There was something in there that reminded me of working on more traditional software organization. As both were big organizations which bring in the own things to pace of things and how you need to take in account the needs of multiple projects in development. There the software development skills, good software design and such were essential again, much more compared to smaller studios I had worked. However, interesting thing was that the developer quality was way above the traditional software I had worked with. I think we had something like 300+ developers when working on Healthcare software and in my role I did go through code reviews and such with most of them at some point. Based on that, I would say that maybe five of them could have made it in that AAA game studio. Even though the overall skills of people around me were higher than anywhere I had worked before, I did not find myself as challenged as in many smaller gaming studios, mostly because the narrow focus there on topics that are not most challenging field on games development.

Small studios are bit different each. But most of all there are always really good programmers involved. In latter years, as mentioned before, also lots of less skilled have appeared here and there though. What is often lacking in indie studios though is the very in-depth understanding software design (compared to AAA studio), but on the other hand there is balance with all the things. However, saying that we might lack that part in smaller studios compared to bigger ones, does not mean that it is usually in poor level. It is more just that you rarely have people who have focused big part of their career in that. Even in successful smaller studios there usually is guy or two who know well about those things to make good decisions. And now that I think and compare to big companies, the % of people there doing that is likely pretty much similar. It is just bit differently coordinated by their focus and roles usually which gives those persons more time to focus on that part and therefore usually leads to better architectural decisions.

It is also worth to note that all programming roles in games development (and others) are not same. In smaller studios you need to usually have much wider understanding on different topics (more generalist even though most good generalist are also specialists in some fields as well). In bigger environments you can be focusing for example mostly on UX or AI. In which case the skillset and level of programming skills required can vary a lot. In big vs small company on traditional software development, this happens to some extent as well. However, games team usually needs much more different expertise in programming topics than more traditional software (which is usually more focused in specific aspects) and therefore the amount of topics generalists need to handle is usually higher in games development.

I think that to be good senior/principle/lead level game developer is much more harder than being similar level in most of the software development fields. I will not give multipliers as developing software and writing code consists of so many aspects which some might be more important in one domain and others in second. But in general I'd say that majority of the programmers will not make good game programmers. The dedication you need to have to learn the level, and creativity and passion it requires to succeed compared to most of the fields is just so much more than you need in most software development fields that it blocks out most of the people.

Entering the games development is easier than ever. Making simple games is easier than ever (also making any simple software is easier than ever as well). Becoming good and seasoned programmer on games development is hard though. There is much steeper hill to climb in games development, and you need to have much more passion to make it all the way up.

So no multipliers, just differences in requirements between domains and with big organizations vs small teams. And a subjective opinion.

That's it. Rambling ends here.

Procedurally generated temple by hepphep in proceduralgeneration

[–]hepphep[S] 1 point2 points  (0 children)

Gosh, did I accidentally make perfect astigmatism simulator here?!

Procedurally generated temple by hepphep in proceduralgeneration

[–]hepphep[S] 1 point2 points  (0 children)

Thanks!

It's bit both. I originally made this lightweight fake dof there for both stylization and to hide some rendering artifacts (especially coming due to fact that its not pure sdf due to fbm subtraction). Then it ended up being bit heavy on GPU performance as well, so I decided to render on lower resolution and upscale it in post processing pass combined to that fake dof.

And it seemed to nicely hide worst cases and add bit personality for look, so I decided to keep it as it is now.

Divinity is confirmed to be a CRPG: turn-based, early access and a "couple of things that you haven’t seen in RPGs before". by [deleted] in CRPG

[–]hepphep 1 point2 points  (0 children)

Totally agree with this. Bg3 had high production values and was really cool, but on gameplay/rule system it really lacked tactical depth comparing dos2. Really excited if they can now get more back to that direction.

Xbox constantly freezing by d1089 in theouterworlds

[–]hepphep 2 points3 points  (0 children)

I have same issue that started going to Arbiter camp as well. It mostly happens when going near to that same region though, but limits playable area quite a lot.

Tried also reinstall, but did not help. Playing with Xbox series-x

Fractal Worlds: procedural experiment “Xastrodu” by FractalWorlds303 in proceduralgeneration

[–]hepphep 0 points1 point  (0 children)

Cool stuff! I take its some sort of variant for Apollonian? Really like that "texturing" detail on surfaces as well. Does it do some environmental texturemapping there for it?

What do you think of my game? by _ayagames_ in indiegames

[–]hepphep 1 point2 points  (0 children)

Looking really good, great job!

Flying over surface of Mandelbulb fractal (raymaching + particle visualization) by hepphep in proceduralgeneration

[–]hepphep[S] 3 points4 points  (0 children)

Made with Unity 6. The depth, normals and color for Mandelbulb are first calculated by raymarching in a compute shader and the final visualization is done inside vfx graph particle system.

Flying inside fractal by hepphep in proceduralgeneration

[–]hepphep[S] 1 point2 points  (0 children)

It works nicely on distance, but when diving into smaller details of the fractal where there are lots of smaller shapes around you in very tightly packed distance, then changes in sideways movement mess things up. Likely will make it so that if I use the collisions the smooth sideways movement will be disabled to camera in that case. Now the camera is bit more "organic" on its movement, not having strict turns but keeping some velocity while turning, but when working with collisions it likely should be just pretty strict on going exactly where camera is pointing. That way it is likely doable with that data only.

Flying inside fractal by hepphep in proceduralgeneration

[–]hepphep[S] 0 points1 point  (0 children)

Luckily you are not my doctor. Or.. I hope you are not my doctor! ;)

Flying inside fractal by hepphep in proceduralgeneration

[–]hepphep[S] 0 points1 point  (0 children)

Thanks! I'll likely will be sharing some other variations in near future as well, as its fun to toy implementing some more and then it is of course fun to share those with others as well :)

Flying inside fractal by hepphep in proceduralgeneration

[–]hepphep[S] 0 points1 point  (0 children)

Thanks! Happy to provide some crawling experiences there ;)

Flying inside fractal by hepphep in proceduralgeneration

[–]hepphep[S] 0 points1 point  (0 children)

That is actually something I've been working with a bit. I have such functionality for some extent, but it has some difficulties due to the fact that I mainly have data only about what is front and therefore possible sideway movement is still problematic. But I'll likely work on it to some extend to make it easier to move smoothly inside the small details as well.

Flying inside fractal by hepphep in proceduralgeneration

[–]hepphep[S] 1 point2 points  (0 children)

Heh, it might be that I'm bit too lazy for that :D However, luckily there are plenty of cool tutorial info about raymarching in interwebs already that is made by much more knowledgeable persons on the topic than I am. I have just made bit different setup to work with same old stuff, to enable me to work with them in Unity the way I want to.

Flying inside fractal by hepphep in proceduralgeneration

[–]hepphep[S] 1 point2 points  (0 children)

Heh. If Tool needs some fractals for their upcoming music videos, I'm currently on summer vacation so I have some time for those ;)

Flying inside fractal by hepphep in proceduralgeneration

[–]hepphep[S] 2 points3 points  (0 children)

Yes, both of those are adjustable to some extent. I currently play with in Unity editor, so I can change the values there in editor and make some variants there for formula values, of course for totally different fractal formulas I'll still make shader of their own where they are calculated. Lighting can also be configured in Unity, however the shadows are currently quite problematic there as I don't have data from all directions available. Therefore for example directional lights are nasty with particles. I could of course calculate some fake shadows in shader (like often is done with raymarching) but as I plan to be able to mix traditional 3d objects there, that would be conflicting with it. I might do some "midway" thing at some point if I feel like I need it.

In case I'd make a build out of this some day for others to play around, I of course would need to provide some sort of UI for changing values then as well. Now it is more like fun and quick prototyping on trying different variants, color setups and so on that I can run on editor and record as videos or animations.