Game Architecture from Hell - A real world example of what NOT to do in BP

This is the event graph. Sorry it won’t zoom out any further to get everything. There are also 34 functions (many which don’t fit the screen as well), and another graph this large.

There are over 100 variables in this BP alone.

No wonder our game is stuck in development hell! The more bugs they fix, the bigger this get, and the more bugs are introduced. I came to this tutorial to see if I could make any sense of what was going on. Yup…

Wow, thanks for sharing Jason. This could be helped a lot by collapsing many of these areas to functions.


Thanks! I’m going to be trying to work with the team on re-factoring and re-organizing, one area at a time. Will take some time, but I think this course has given me enough skills to be able to cut it down quite a bit.

@ben @sam you guys are really amazing. More content!

As always I can only but agree with what Ben said.

A good way to code and this is something Ben has been promoting in this tutorial from day one is to brake everything in small functions and choose a name that tells what the function is all about without having to look at the internals.

The way I code is like this but taken to extreme , I further break the function to smaller functions again with names that indicate what they do, then those broken to smaller functions and this continuous until I end up with functions that are just one line and only 5-10 nodes.

This what coder call “self documented code” , though personally I strongly disagree with the idea that code is able to document itself but I agree of course at least it gives a first good idea of what the code is all about.

This method can work for both writting code and understanding because in both cases it will allow you each time you browse a function to only see a bird eye view that describes a very simple structure that in top level loos a bit like

Start Menu -> Options
L-> Start Game
|-> Load Game
L-> Save Game

then in separate window

Start Game -> Load Map -> Load user data -> Begin Play

separate window

Begin Play -> Execute Level Blueprint -> Begin Game Loop

separate window

Execute Level Blueprint -> Random Generation of Map -------> Connect with Server
L > adjust difficult to player level_____|

and so forth


Appreciate the reply. Very helpful indeed!

1 Like

Thanks Dimitris

1 Like

I would love to see this @Jason_Sharp after the refactor. Please do share back.

Privacy & Terms