4 ms·
I have been getting into Unreal the last few months and had the opposite experience. I found the visual programming language frustrating to use and reason abou
by isopede 9y ago
I have been getting into Unreal the last few months and had the opposite experience.
I found the visual programming language frustrating to use and reason about. While I loved the discoverability of working with blueprints (it is easy to find new nodes), I found that actually working on game logic quickly devolved into an unmaintainable mess of literally, spaghetti code. It was great for prototyping, but horrible at actually building something maintainable and understandable. Reading other people's blueprint setup is even worse.
I found the workflow even more frustrating. Blueprints are stored as uasset binaries, and as such make traditional version control impossible. Changing a single default parameter in a blueprint rewrites the entire file, and can not be diffed, merged, or reviewed, making git/p4 log nearly useless.
I know there is a builtin diff/merge in the editor, but it's pretty limited and I would say it's quite a far cry from what "normal" developers are used to in other parts of the software world.
I have since switched to using mostly C++, and only using blueprints for derived Actors to set up art (meshes, materials, etc). It's definitely slower to set up than using the blueprints. I'm not happy about being back in a place where segfaults can happen; the compile-play-crash-restart cycle is much longer than it should be. I'm not a huge fan of C++, warts and all. In return, however, I can actually read the code, grep it, review it, etc. Do "all the things" you're supposed to do as a good software engineer. I really don't know how the AAA game studios are managing real games with blueprints, I kind of doubt they are.
At least as an experienced software developer but amateur game programmer, I found it much more comfortable to sit down with C++ and learn their API, than it was to perform game logic by dragging around 'foreach' boxes and doing arithmetic by crossing lines.
- peterlk 9y agoI was also frustrated with the poor git support by blueprints. I ended up just writing long commit messages so that I could read about what I (thought) I had changed
- isopede 9y agoI think they could go a long way to fixing this by building a textual representation of blueprints. I can see art assets being unmergeable, but as far as I can tell there's no good reason why nodes, the netlist of connections, and their parameters couldn't be stored in text. At least this would allow diff, merge, and code review with standard tools.
- pfranz 9y agoI've found the git support to be lacking. Every game studio I've known uses Perforce mostly because it handles lots of binary data much better. Because of the way games are developed, DCVS don't have as many benefits.
- isopede 9y agoPerforce is great for binaries, but really kind of a substandard experience for code, at least compared to hg/git. I also tried Git LFS and it is a hot mess.
- pfranz 9y agoI don't have much firsthand experience with Perforce. I've set it up, attached it to UE4 and just appended commits. I have been on the miserable side of git and binary data, LFS and other solutions seemed like awkward solutions. Even ignoring the distributed aspect of git, the things I loved as a solo developer was immediate branching, a sane way of merging, and things being fast because there was no server to talk to (coming from SVN and CVS). Now that I think more about it, I think some of the game studios I'm familiar with were using Git for the engine and artists were using Perforce for their assets.