How to make a game around the same level as the sample game?

I am now learning the c++ code part of the UE 4. I have read some codes of the sample projects provided here (for example, Sample Survival Game, Unreal Match3, Platformer Game etc. ). I can read through the classes, understanding about 50%. But if I make the game, I will certainly not be able to code things like this. Or, I don’t even have a concept of how these things are coded in such ways. For example, sometimes for a very simple thing, I may just use one function to achieve it, while they spend tons of classes. I even doubt whether those codes are necessary or simply adornments, 'cause I sometimes delete lines of codes and the project still runs perfectly.

I watched all of the video tutorials, some twice and even more, but I think these only cover the most basic parts. If I wanna make a game at the level for sale, these can’t be enough to help me.

So how can I get rid of this embarrassing stage? Any recommendations?



A fellow David! Welcome to the world of game development! It’s a continuous learning cycle. The best ways to make great games is to… make games.

Start simple. Create by imitation. You see a cool game out there that looks basic enough? Try to create it. I started, way back in 2005, by creating clones of Pong, Breakout, Tetris. Each project taught me something. The most important thing, being, finishing a project.

Once you feel confident and aware of the toolset, raise the ambition. Participate in game jams to really focus in and practice for a weekend. Epic Games provides one each month!

It’s a long process. Don’t expect to overcome all challenges within a day, week, or even month. There is a LOT to learn in this field. Some choose to be generalists (your gameplay programmers), some choose to specialize (artificial intelligence, graphics, physics, audio, tools). Find what makes you happy and go for it.

When you feel comfortable, join an independent team and help!

Ask LOTS of questions. Sure, hunt on for help, but don’t feel bad if you need to ask a question (here or on other forums).

Regarding the code you see. Part of being a good programmer is learning how to architect the house. We just don’t throw boards down and call it good. We plan, write maintainable code, and constantly improve the code base. This naturally leads to way more classes, functions, variables, etc. Deleting some of this stuff may not show issues today, but they’re usually purposely planned. Just because deleted code still works today, doesn’t mean it works in all scenarios.

Keep going!

Practice, practice, practice… Watch more tutorials, experiment, start small and work you way up. Making games on even a decent scale is no small task. It takes teams of experienced developers awhile to make stuff. So don’t feel bad about where you are at, just keep developing and learn all you can along the way. Don’t be afraid to start a project only to learn you did it all wrong and scrap it, at least you learned something from it.

Thanks mcgraw! The most irritating thing I have had now is that when I see some classes or functions that I don’t understand, I want to right clicked it and peek the definition(I am using VS 2015) and over and over again. Then finally I arrived at some very basic classes, like UObjectUtilities, AssertionMacros, etc, which I almost don’t understand. I wonder how we should deal with these functions. Should we know exactly how they work, or should we just know how to use them? I feel that without knowing exactly how they function, I can’t use them as easily as I could. But that requires way too much knowledge than I can reach.

That’s good! You’re hunting & exploring. Thankfully this is open source so you can see exactly what you’re interested in.

But, at the end of the day. It’s extremely difficult to keep all of this in your head. The Unreal Engine is 18+ years old. The best thing you can do is become familiar with certain areas of the engine, take notes, and continue to revisit areas anytime you’re confused. At some point things will “stick.”

Do what you can in order to become familiar with certain areas so you begin to understand where to look when you have an issue. Running into an input issue? Have a general idea of where input handling happens. Running into an AI issue? Graphics? Physics? Etc. Etc. Overtime this will feel almost second nature.

As you make more games a lot of this stuff will stick and you’ll understand where to look. Memorization not required. Patience is. Keep moving!