Advice Needed Regarding Final Year University Project

Hello! Im new to these forums, I dont generally post in forums at all.

A bit of background about me:

I am a computer science student pursuing a career in game development. I have had interest since the age of 12, at that age I was playing around with flash making small games. I have just finished my industry placement year as a software engineer at a cooperate contracting company. I will now be heading back to university to finish my final year and hopefully obtain a good graded degree in computer science.

My final year project:

For my final year project I plan on making a networked game, hopefully using UE4 and various methodologies and experience’s I have picked up from my work placement. I plan to implement most of it in C++ as it would be easier to explain to my professor as well as show that im not just dragging and dropping.

What I require advise for:

So well first up, how do you develop? What do you follow waterfall? Agile? At my work placement we used Scrum I was hoping I could apply some concepts of this to the way I work even though I will be the only developer.

Second, is test driven development recommend? I really liked doing this at my work placement as it helped insure everything was atleast moderately tested before release, what are your thoughts?

How to even do unit and integration testing? What frameworks should I be looking at ? Is there anything similar to JUnit or ScalaTest? As well as is there anything such as Mockito to mock the server for integration tests?

How would you recommend I approach the networking, bear in mind anyway I implement networking I have to fully understand it as I will have to explain how it works to my professor and why I think it is optimal. I would much rather like to implement my own solution (as in I don’t want to just modify some option which just “turns on” networking).

And well any other advise you would give me regarding my project or to pursue a graduate job as a game developer. I begin work on this project in October, and would like to be fully ready for it by then.

I look forward to reading your input and opinions, I am on holiday from Monday to Japan (woop woop :D) however I shall reply after then.

Many thanks in advance! :smiley:

Using Unreal 4 for your assignment may be a bad choice, because it will be difficult to demonstrate the kinds of things you’re expected to demonstrate - much of the engineering side of things has already been done for you and a lot of it is abstracted away. You’d basically be doing just game play implementation, and a lot of that tends to be implemented in a manner dictated by the engine. Case in example, the networking is heavily abstracted to the point where you just tell the engine which variables need to be sent across the network, so by building a networked game, you’re not actually demonstrating much in the way of understanding networking at all. I’d also expect you’ll end up spending an awful lot of time in the editor rather than programming your game, which may not be the best use of time.

As a solo developer, methodology is pretty irrelevant since you’re obviously just going to be hopping from the most important feature to the next. Ideally you want to be implementing your core features, then iterating over them a few times. This is kind of an agile process. Since you’re evidently green when it comes to games, pick up The Game Producer’s Handbook. It’s not a particularly good book for serious developers, and it’s a little outdated, but it does spend a good amount of time talking about game development methodology and process from a software engineering standpoint. Typically speaking, game programmers don’t really need to know anything about these methodologies, since it’s the responsibility of the production team to implement them in conjunction with department leads.

It’s a complete waste of time unless you’re doing something like writing your own math library, and chances are everything you’d want to implement is already covered by the existing library incorporated into the engine. Logical mistakes in gameplay code often manifest themselves as unexpected behaviour within the game that is fairly visible, and unit tests will rarely be adequate enough to catch them since they only really operate on a per-function level, which is far too narrow in scope.

As mentioned before, networking is already handled by the engine, it’s integrated and heavily abstracted away. Rolling your own networking from scratch would probably be possible, but those layers of abstraction and the existing solution could potentially give you a really hard time.

My advice would be not to use an out of the box solution. Sure, Unreal 4 is nice and shiny, and has good tools - but a software orientated degree isn’t about using tools to make shiny things, it’s about making software. You’re much better off finding a basic rendering engine and doing your own stuff on top of that or just taking an API like DirectX / OpenGL and working from scratch. Narrow your focus and deal with only one aspect - if you want to explore graphics programming, work on a basic rendering engine in DirectX / OpenGL. If you want to do networked gameplay, implement a basic game using a library like Ogre. If you want to do something like AI / Pathfinding, then you might want to use a game engine and focus on that. You’ve got limited time, so narrow focus is a much better way of getting something finished that is in a respectable state - being a jack of all trades is going to render you a master of none.