Overview

Introduction

In this assignment, I will investigate various career options within the games industry, and find what they do, before coming to a final choice on what path I’d like to follow.

Task 1 - Research

Potential Career Options

In the games industry, there is a lot of varied roles you can be depending how artistic you want to be, or how technological you want to be.

Games Programmer

A games programmer creates the majority of the gameplay within a game. This can range from simple things like throwing a grenade, aiming a gun and firing it, or a fully functional wall running system. A game cannot function without a games programmer. This creates a permanent demand for them.

Someone in this role will need to have proficiency in some popular games engine like Unreal Engine, Unity or Godot, have the knowledge on how to work with a proprietary engine should it be relevant, as well as how to write code in popular scripting languages such as C++, C#, and Lua.

Learning about different programming languages and different engines has helped me understand what I should focus on depending on the role I want to pursue; if I want to continue using Unreal Engine 5, I should focus on learning C++.

Examples

Titanfall 2 - Movement

The movement in Titanfall 2 goes down as one of the best movement shooter games ever created. The wall running feels long enough to where you feel confident enough to make risky plays, but short enough to where you still have some danger to it; that paired with the environment moving around you, enemies firing at you, and not trying to die to the void below you creates for a perfectly chaotic gameplay.

Some potential problems with this system from both a gameplay and level aspect would be players using the wall running to sequence break and access areas of the level they shouldn’t be able to at that point, which if the games programmer hasn’t added protection for can create a potential ‘issue’ depending how you view breaking sequence.

A way I could see to fix a sequence break would be to add an invisible wall, a death box, or something to softlock the player for trying to break sequence, such as a check to see if they’ve triggered various triggers whether its a cutscene, an animation or a line of dialogue set to trigger at a specific time/area.

Ghostrunner - Abilities and Movement

In Ghostrunner, you play as a Ghostrunner, a technically advanced superhuman who’s primary objective is to climb Dharma Tower and defeat the Keymaster. You must navigate the tower which is split by floors similar to a class system, the lower you go, the worse the conditions are and the less complex the architecture is.

The ability system in Ghostrunner uses a tetramino style puzzle where you can have as many skills as you can fit into the grid.


This system leaves a lot up to the player to change how they like to play. For example, some players might really like the Dash ability, so they will put more pieces related to the Dash ability into the grid opposed to someone who really likes the Blink ability.

A problem I could imagine the developers having is a balancing issue, where you have to make every ability scaled to where no one ability has a clear advantage and overshadows every other one. One way to fix this is to make some abilities worse by default intentionally and offer a very good upgrade to make it more attractive to use.

Looking at these two games has helped me understand that programming is a role I would absolutely not rule out as a path in the industry. I have always thought that this was the role I would want to go with, as it’s what I have the most experience doing.

Environment Artist

An environment artist is someone who must aim to create a world navigable by the player and a logical and cohesive manner. This ranges from the sky, the ground, and everything in-between. An environment artist typically uses concept art provided by a concept artist to create these areas, usually expanding and breathing more life into it compared to the concepts.

A good environment artist can highlight important things in the environment without directly telling the player directly that the area in front of them is dangerous and you’ll probably die; instead, they do it through the surrounding, using muted colours to portray a sense of danger. They can also do the opposite, and have a brightly lit area which signals to the player that it’s safe and they should probably go there. Alternatively, they can use the environment to tell a story.

This role is something I tried to get started with more recently, and I have started paying more attention to games I’ve played below to see how they do their levels to make the game feel different based on the surroundings and layouts and lighting.

Examples

No Man’s Sky

No Man’s Sky is a game where you play as a space explorer who must navigate to the centre of the galaxy. Because of how many planets you can visit on your way, No Man’s Sky is an environment artists best dream and worst nightmare. No Man’s Sky has one of the largest game worlds available ever due to it using procedural generation to create vast worlds for players to explore. This means that very rarely will two players ever see an identical planet unless they intentionally visit another player.

An environment artist can have effectively full creative freedom to create whatever worlds they so please, but at the same time, they have to keep churning out planet styles and biomes, which can very quickly lead to burnout and a creative block if not handled properly.

Subnautica

Subnautica is a game where you crash on an alien planet covered in water. You must explore the depths and scavenge for materials to create a rocket to go home. This game does not use procedural generation like No Man’s Sky; instead, every piece of foliage is hand placed by an environment artist.



Subnautica is a game that perfectly captures the beauty of the underwater while also capturing the aspect of the unknown. As you navigate further down, the environment gets darker and darker, creating a more sinister tone and mood compared to the bright and vibrant environment higher up. The environment is scaled to be very large compared to the player instead of very small, creating a sense of something larger than you that you are unaware of. The environment also has a heavy usage of fog which helps with this presence of the unknown.

After looking into these games, I wouldn’t mind doing environmental artistry. It is relatively fun to create levels to play in, and mess about with different tools to make various types of environments for different types of games like shooters and platformers.

Visual Effect Artist

A visual effect artist creates any moving effects in the game that are typically purely cosmetic. A VFX artist must be able to envision how an effect should look like, create any necessary models in Blender, and know how to implement it into an engine. VFX artists work with almost every person involved in a game. They must work with the game programmers to help create a visually appealing aspect to accompany their programming. They also work with environment artists to add moving elements to the game to create atmosphere and immersion, such as a dust or sand effect in a desert, or fog in a dimly lit street.

Visual effect artists must have good knowledge in software such as Substance Designer, Photoshop, Blender and a game engine like Unreal. They should also have good knowledge of mathematics.

Examples

Cat Mushroom Cloud - trommel.bsky.social


This effect uses a mix of different smaller touches to create one large effect. From this, I can notice the circles around the impact point prior to impact indicating the location, followed by a quick white glint and some impact framing to help show how powerful the nuke was. This is then followed up by 3 or 4 omnidirectional blasts in different direction to indicate the wind, heat, damage and various extra details, accompanied by more flat circular blasts rising up to indicate air blasting away with the core piece, the mushroom cloud of a cat rising up and fading, leaving a black scorch mark on the floor.
Link
Backup Link

Elemental Beam - lobsterwizard.bsky.social


This effect uses a mix of particles homing onto a specific location as a buildup and a small wind spiral underneath, followed by a lot of impact frames and camera shake, creating the image of lethality and power before the bright solid beam surrounded by ribbons and panning textures has even come into frame. The enemy has an effect similar to a meteor coming into orbit around it which creates the illusion of massive damage onto it before slowly fading out.
Link
Backup Link

Various Fortnite - tuatara.bsky.social


Tuatara is a company that creates VFX for games like Valorant, Fortnite, Godfall and Hyper Light Breaker. In this video, they showcase various effects, such as the charge up and futuristic style particles of this Fortnite skin changing to equip a helmet and some armour, the goo materials on this pickaxe and back bling, as well as a very nice looking contrail using a blue to purple gradient ribbon.
Link
Backup Link

Visual effects art is absolutely something I would like to look into doing, since it takes the programming part of gameplay programming, and the visual design element of environment design, and combines them, at least in Unreal Engine, to create something that looks very very nice.

Ultimately, I think gameplay programming is the route I want to go down, but I would also like to branch out and experiment with both the roles I looked into, since both are still interesting fields to experiment with.

Software to Learn

There are a number of software to learn in the industry depending on the role you want to pursue. Some of these software are:

Game Engines

Unreal (C++, Blueprints/Visual Scripting)

Unreal Engine is one of the engines for multiple fields such as filmmaking, architecture, and games development. It is seen as a very professional industry standard engine and is used by a lot of game studios and film studios to create their works. Unreal features two primary ways to create things in it, those being C++ and their visual scripting language, Blueprints.

Blueprints are used primarily for an introduction to Unreal, and is a very good starting point for people who know little to nothing about programming. Blueprints are also the default for any VFX, Material and Niagara systems. They aren’t as powerful or as performant as writing raw C++ code, but it’s a whole lot easier to create prototypes and quick concepts in. Unreal also has a very intuitive level designer which can create very beautiful maps with it’s landscaping mode, foliage painter, and it’s post processing volumes. Unreal also has a marketplace which can be used to gather asset packs which can speed up development even more.

Unity (C#)

Unity is the other industry standard game engine alongside Unreal. Unity grew primarily from its ease of use compared to other engines during its lifespan, along with its ability to cross compile to multiple platforms such as Android and iOS, which made it very popular for mobile game development, while also having PC and Console support. Unity uses C# compared to C++ which has an easier learning curve and has a built in memory management.

Unity has lost a significant portion of their userbase compared to their peak after proposing a runtime fee, which meant that there was a £0.20 charge for every install of a game which reached £200,000 in revenue, and 200,000 downloads, which led lots of indie developers to migrate to Unreal, Godot or GameMaker. They’ve since backtracked after harsh feedback, but have lost a lot of users.

Godot (GDScript, C#)

Godot is a rising competitor in the game industry, featuring an easy to learn, and very powerful scripting language called GDScript which is syntactically similar to Python, another easy to learn language, where code is indented and typed. Godot also has support for C# alongside GDScript, which can create a more seamless transition from Unity which helped boost their growth even more when Unity’s users migrated over due to proposed runtime fees.

GameMaker (Visual Scripting)

GameMaker is a game engine which never grew as popular as Unity or Unreal, but still saw some sort of market usage. It supports exporting to various platforms, including PS4/5, PSP, Xbox One, PC, HTML5 and mobile. GameMaker is primarily focused around 2D graphics, with support for raster and vector graphics, as well as 2D skeletal animation through Spine.


It has a drag and drop visual scripting language similar to Unreal Engine’s Blueprints, with an option for its proprietary Game Maker Language (GML) for cases where you need custom code that can’t be done through the visual scripting.

Löve (Lua)

Löve is a framework written in C++ designed for developing games. Löve uses Lua as it’s scripting language, with many other libraries to extend this scripting functionality, such as love.js to let games run in the web, as well as Lutro, which allows for Löve games to run in libretro/RetroArch, a popular and powerful emulation frontend. Löve has seen lots of popularity among game jams and is ranked as 10th most popular game development software on itch.io. The most notable game of recent times is Balatro, a Game of the Year nominee.

Visual Effects

Substance Designer

Adobe software is generally considered the industry standard for basically every industry to use a computer. One useful software they own is Substance Designer. This powerful tool allows you to create textures for use in Blender, Unreal, Unity, or anywhere you make visual effects. It uses a visual node system, which shows what each step changes from the image, allowing for fine tweaks along the way without needing to fully rip something out to fix one tiny messed up part.

Photoshop

Another piece of Adobe software that is used a lot is Photoshop. Photoshop has such a wide usage both in and outside of the games industry that it’s something to learn in general regardless of the role you want to go into. This allows you to take a photo and edit just about every part of it. In a visual effect artists role, they often use Photoshop to edit their textures to add elements of opacity to it, such as a splatter pattern with faded edge. It can also be used to create 2D visual effects which can look stunning.

Blender

Blender is a 3D modelling program, and is considered an industry standard alongside 3DS Max and Maya, but with the upside of being 100% free and open source. Blender has a whole roster of features, such as sculpting, non-destructive modifiers, a modelling mode, geometry nodes for procedural manipulation of geometry, as well as simulations of fluids, cloths and rigid bodies. Blender is used by visual effect artists to create any meshes needed for effects, such as icicles for an ice spike attack.

Professional Marketing/Portfolios

This section covers various sites useful for showing off your work depending on your role.

Profession Independent

ArtStation

ArtStation is one of, if not the most popular/professional sites for posting art of any sort related to games. This can be anything from 3D art to concept art to visual effects, if it’s visible, it can go on this site. ArtStation was made in 2014 and is owned by Epic Games. It also features a job hiring section on site, which allows for members to highlight specific pieces of work and post themselves as a freelance, an artist looking for a permanent job, or for an employer to post hirings.

LinkedIn

LinkedIn is the more traditional professional site next to ArtStation. LinkedIn has been around since 2003 and was made for professional networking and career development rather than showcasing work like ArtStation was. LinkedIn is used in the games industry a lot to post works of any size or shape; you just made a new mechanic and want to show it off, why not post it on LinkedIn and show all of your industry professional friends. LinkedIn makes most of its money from selling information about it’s members to recruiters, which made up most of their revenue from 2015. This led to them being bought out by Microsoft in 2016.

X

X, formerly Twitter, is a social media site which has been around since 2006, used for sharing short posts, images and videos called Tweets. Using these, people have typically shared updates on any games they’ve been working on, any cool visuals or anything that might be interesting for people to look at. However, since being taken over in 2023, the site has went downhill fast with little sign of it’s former glory coming back due to rampant AI usage, along with an altered algorithm to boost these AI posts, along with political media to users who don’t engage with that style of content.

Bluesky

Bluesky is very similar to X, but if it was better. Bluesky uses the AT(@) Protocol, which is used to create a decentralized and scalable online ecosystem, one online identity for multiple platforms and services. Bluesky features feeds, which select posts based on words in them, specific users, or a certain hashtag being used in them, such as #gamedev being used to boost a post into most game development feeds.

Feeds are all hosted by a user rather than being controlled by the Bluesky team. This leads to more freedom over what content can and can’t be shown on a feed. It also reduces the chance of seeing irrelevant posts in certain ‘niche’ feeds compared to feeds with a broad meaning, such as Software development being anything from application development, game development, or web development.

Personal website

Arguably the best and worst place to show off your work is a personal website. It has the pros of being all yours, you have full control and can truly show your true colours and work on the site, but with the cons of needing to be posted anywhere to get eyes on it, only you can tell people it exists, there’s no algorithms to boost its visibility unless you put the site out there.

Games Programming

Itch.io

Itch.io is a great place to post any games programming work that you’ve done, or any assets (typically 2D) that you’ve created and want to share for others to use. Itch often hosts game jams, as well as giving you your own personal profile page to customize fully to showcase your game jam submissions and other game releases on there.

GitHub

GitHub is another site aimed more for code hosting rather than uploading builds of games. It’s useful for open sourcing games or decompilations though, with decompilations of The Legend of Zelda: Ocarina of Time, Super Mario 64 and Lego Island all being hosted there. It’s also good for any games made with frameworks like Löve, raylib, pygame or Phaser.

Visual Effects

Realtime VFX

Realtime VFX is a site I recently discovered which houses some of the best visual effect work I’ve seen. It has everything from tutorials on every aspect of visual design, some seasoned professionals advice on how to do things in Unreal or Unity, and it doubles as a place to showcase your works to other people who enjoy making VFX work and can offer advice on how to make it better.

Marketing

Reddit

Reddit is a site with a ton of varied communities, one of which being r/games, which has an event every Sunday where you can promote your game, called Indie Sundays, as well as once called r/theMakingOfGames, which allows you to promote your game, as long as you show the making of it, iteration and improvement.

Steam

Steam is another good place to market your game. Before you start properly marketing your game and releasing it, a Steam store page is a necessity, as people can come here to wishlist the game to keep up to date on any announcements about it closer to the release date.

Reviewing Others

In this section, I will look over professional portfolios for studios/individuals and list what is good and bad about the site and what can be improved.

Portfolio 1 - https://spacesauce.art/ - 3D Art

Starting with Space Sauce, this is a company which creates 3D models for games effectively freelance. Clicking on Gallery at the top brings up a lot of screenshots for their various works on games like War Thunder, Enlisted, Cuisine Royale and DCS World.

This works very well as a layout, and is very digestible. The large logos help to show what the image is for without needing any interaction. The tabs at the top also helps for sorting based on full games, so if you’re interested in exclusively War Thunder works, you can click it to filter.

The only flaw I see here is that the navigation bar at the top inline with the logo is identical to the secondary one. Both lead to the same place, creating redundancy and leaves room which could be used for other things, like shortening the top navigation bar down and adding buttons for social media. Aside from this, the portfolio is very well presented.

Portfolio 2 - https://squiree98.wixsite.com/ewan-squire-portfoli/ - Games Programmer

This portfolio is by Ewan Squire, a graduate from Newcastle University, having studied the “MComp Game Engineering” course. Off the bat, the text on top of the background is already hard to read due to it being white on colours.

Scrolling down the page, I can see another issue of sorts, being that none of the images are scaled down at all. This leads to them taking up a lot of room on the site; while this is good when done well, it doesn’t help itself when the text is off the screen while the image is on screen. If the image was scaled down and moved slightly to the right to allow for left aligned text, it would look so much better.

Finally, at the bottom of the page is a big button to view the portfolio, another button to view the portfolio, and a contact page. Ideally, you could scrap the footer navigation bar, move the View Portfolio button to the top of the page in the top right in that first screenshot with the name and text, and maybes link some socials on the header navigation bar.

In terms of actual content on the portfolio, all of it is definitely showing the skills off, and all of it is 100% portfolio worthy work.

Portfolio 3 - https://bogdanlupuuk.wixsite.com/mysite/ - Games Programmer

Next is Bogdan Lupu, a recent graduate from the University of Suffolk. As soon as you open the page, the site is very cleanly presented. Everything is where you expect it to be; you have a photo, socials. a little intro and your familiar skills shown immediately to anyone who takes a peek at the portfolio.

Navigating to the projects tab, you can see 13 projects ranging from a 2D games engine all the way up to demos of games. This is a very impressive display of range and improvement in talent. All of the projects have small entries about them which is perfect to make them quickly digestible. (This is zoomed out to show multiple entries)

Moving onto the resume/contact tab, I feel like the CV could be tacked onto the bottom or side of this page since it’s relevant, but it’s fine in its own tab. I noticed a few minor typos on both this and the projects page, ‘batchelors’ instead of ‘bachelors’, ‘presonal’ instead of ‘personal’, ‘yare’ instead of ‘you are / you’re’. Aside from that, this display of work is insanely impressive.

Portfolio 4 - https://scottbreen.surge.sh/ - Senior Games Programmer

The final portfolio is from Scott Breen, a Senior Games Programmer currently at Sumo Digital in Nottingham. His portfolio spans multiple companies across a number of years.

While the visuals of the portfolio is nothing to write home about, the content of it more than makes up for it. This is a single page portfolio which looks good on mobile and PC. It features a small about me at the top, all the professional projects on the right, along with a small bit about education and games underneath, and all the personal projects and ‘toys’ on the left.

There isn’t much to say about this portfolio, everything that is on the portfolio deserves to be there, and I can’t see any bad things about it aside from it doesn’t visually stand out from other portfolios. I would also make it slightly clearer to find any socials like LinkedIn, X, and GitHub.

Career Advice from Professionals

I asked around the few people that I know that work in the games industry, and asked them all the following:
What’s 3 things you would say to someone who’s just starting out that you wish you knew when you started?

Kyle McNally - Games Programmer

  • Don’t let perfection be what kills progress. You will find times when you want to tweak and tweak something to get it just right, and it will burn you out. Move on, change tactics, and revisit it later with fresh eyes.
  • Let Feedback dictate the details, but not your direction. I would say a great example of this is Death Stranding. A game with time stealing acid rain, floating ghost babies, and your job is to carry packages by hand across a post apocalyptic America? Sounds so outrageous, plays so great.
  • Tropes are tropes for a reason. Genres are genres for a reason. Follow your own imagination, but take inspiration from everything and don’t feel discouraged if what you come up with feels too similar to something else.

Kyle has one game available online, Knight Runner which was made in Unity in late 2020, early 2021.

Cuauhtemoc Moreno - Creative Developer and Interaction Designer

  • Technology Changes fast, Humanity does not. Soft Skills have been way more important to develop that mastering any system or technology. Striving to be a good communicator, developing more empathy, public speaking, critical thinking, writing well enough, etc. All of those things are what people are going to see more than your technical output. This is even more important now, with the rise of AI systems.
  • Make stuff. When hiring in this industry, a portfolio is more important than degrees and educational history. Game Jams, solo projects, experiments.. it’s all great not only to show what you have learned, but also to keep developing your own creative and technical skills.
  • Don’t ignore the games-adjacent spaces. I work at a start-up that does a medical device that is also a game. Everything from architectural visualisation, to journalism web playables, to applied gaming, to archival curation, to local city projects. Game ideas and techniques are way broader than just entertainment and product games! And that’s an awesome thing.

Cuauhtemoc has created and assisted numerous works, such as Sound Scouts, a hearing test mixed with gameplay aimed for young children, where he currently is CTO, a game called Amberial Dreams, a sandbox arcade platformer, as well as projects for game jams as well as fully realised games. A full list of their work can be seen on their portfolio, oddgoo.com

Bilal Adham - Games Programmer

  • Focus on the fundamentals. My first game, I wasn’t set on what kind of game I wanted to create so I started with the main menu, but I should have just started with the game objects and player character since that is what most of the game is focused on. I also didn’t do much research so my game ended up not using a singular game loop, delta time, or any other basic game principles.

  • Start small. When I began work on my metroidvania, I spent a lot of time brainstorming out a map of the game world and thinking about the mechanics. By the time I completed the demo, I didn’t use much of the ideas and the project as a whole was quite different from my original plan.

  • Don’t expect your game to be a masterpiece. Your first game especially will be riddled with bugs and won’t match up to your vision. The first game that I worked on was pretty enjoyable and I could sink in a lot of time before getting bored. When I released it to the public, it faced lots of criticism and only one other person considered it fun.

Bilal has released a demo for a metroidvania he worked on called Children of the Night. More of his work, such as a Moon Knight homebrew for the Vectrex, can be found on his itch.io page.

Zeth Carmer - Technical Artist & Art Manager

  • It’s really who you know. I mean I’ve always heard this and I knew it to some extent. But the game industry is very small and especially in today’s extremely competitive market. You really need to have a connection with someone. That means going to games, conferences or joining game jams or attending other online events. Basically just anything that you can do to make connections. And then keep those connections warm. Set yourself a reminder if you’re not a social person to check in on people every 6 months or so.
  • Learn flexible tools. I went into unity, pretty hard. In school. We learned unity and unreal, but at work we only use unity and so I really focused on unity development. When I needed a new job, everyone has basically switched to unreal. I’m sure it will change again to some other engine in the future. So learning languages that are used by multiple programs or even just learning other engines while working is going to be really important.
  • Beware burnout. I knew again that this was a thing that happened to people, but I did not learn how to recognize the signs in myself until it was so bad that I could not continue working. Make sure that you take time for yourself and for your own hobbies and generally just try to have a life out of work if you can. If you’re a very antisocial like me, even just setting aside. Rest time to play single player games or read books or whatever it is you like to do. Rest is really important and if you don’t take it eventually your body will force you.

Zeth has a range of work from UI to art design, all featured on their portfolio, zethcarmer.com

Scott Breen - Technical Owner / Senior Games Programmer

  1. The stuff we learned at university (Derby University, BSc Computer Games Programming) covered a huge amount of different areas. I’d say I have used around about 10% of it since 2009, and I don’t think I’ll ever use the rest. There was a lot of filler (web-design? really?) that will have very little bearing on what you actually do in your career. However still stick with it all and do your best. It will pay off and that 10% will still be vital.
  2. That said, to be successful in industry has a lot more to do with your dedication than your knowledge or experience. With regard to a portfolio (vital), 90% of developers have a ‘demo’, 10% have a ‘actual full game with a start and end’. The 10% will stand out because they actually put in the effort to see something through to completion. Make games. Play games. Make all sorts of games, electronic or paper-based and add them to a portfolio. Make small ones, big ones, test them out on old, young, casual and avid gamers. The more games the better, but also actually try to finish making at least half of them. It doesn’t matter if they’re perfect, it matters if they’re complete.
  3. The games industry is seemingly massive and lucrative but also surprisingly small and close-knit. Don’t burn bridges, you are highly likely to work with the same people again and again in different companies. You are much more likely to get a position in a company if you know someone there who can recommend you, so it’s all about who you know. Make connections and maintain them.

Scott has worked on numerous games over the years for multiple companies, most recently at Sumo Nottingham, but also is the founder of RetroAchievements.org, one of the websites I frequent most, where you can earn achievements similar to PSN and Steam, but for older titles such as NES, N64, Genesis and PS2 games. His portfolio of work can he found here.

Higher Education

There are a number of higher education courses which offer skills in the industry.

Games Programming - Teesside University

This course is a 4 year sandwich course. A sandwich course is a course which has a year of work placement as part of the course. This course offers these modules, which can be a good point to work from for improving skills which are used in the industry.

Some of these modules are self explanatory, like Game Creation, that module teaches you basic skills to create a game in a game engine such as Unreal or Unity, whereas modules such as Journeyman would make no sense unless you looked further into it. In this case, it is a module where you create a game as a team across all 4 games courses offered at Teesside.

Games Technology - UWE Bristol

This course is also a 4 year sandwich course, which covers all aspects of games programming. The university is a member of the PlayStation First Academic Programme, which allows students to use official PlayStation developer kits to create games for them consoles, something which can be useful for the placement year if the company develops for the PlayStation.

Task 2 - Self Assessment and Proposal

Based on research from task 1, and prior knowledge, I feel like a career in games programming is perfect for me to pursue; should this not work out, I can pivot to visual effects instead as that entire paths interests me, just less than programming does.

The end goal is to become a games programmer on some sort of big title, it doesn’t particularly matter what game or what genre, as long as I feel I’ve played a part in the games functioning, I’d be content.

Self Assessment

This is a self assessment on how I feel my key skills are.

Skills Required:GoodUnsurePoor
Creativityx
Teamworkx
Knowledge on the engine being usedx
Technical thinkingx
Logical thinkingx
Problem solving skillsx
Communicationx
Attention to detailx
Analytical thinkingx

SWOT Analysis

Strengths

  • My biggest success is probably taking part in the Army Cadets and taking on the rank of a Cadet Lance Corporal, which meant I had some responsibility over other Cadets, making sure they’re doing ok, and ensuring some level of discipline in the detachment.
  • I have a First Aid qualification, along with a Level 3 diploma in Games Design and Development
  • In college, I have completed Crustacean Elimination as a final project which I scored a distinction on for technical skill. I also work on creating achievements for games on consoles like the PSX, DS, NES, that sort of stuff, which never had achievements unlockable on them, to which I have programmed 2 sets of achievements, one for the DS and one for the PSP, with a third set in the works.
  • I have basic knowledge on multiple programming languages, as well as a good understanding of how blueprints work in Unreal Engine 5.
  • In terms of soft skills, I can work well in a team, as well as coordinating a team, I believe I am hard working and good at problem solving, both of which come from working in Greggs.
  • I’d like to think I am a friendly, funny and approachable person, but I feel like I can come off as too sarcastic sometimes.

Weaknesses

  • There have been multiple times I have messed up, I didn’t try much through all of year 1 of college and that was a mistake, I also tend to leave things till the last minute to do them, happens with college and work, I never leave work on time.
  • I am not missing any technical qualifications from education.
  • I usually tend to avoid prepping food at work unless I am the only person in store purely because I’d rather serve customers. At college. I often avoid doing anything related to 3D modelling as it doesn’t interest me like Unreal Engine blueprints and programming does.
  • I have an awful habit of giving out good advice and not following it myself.
  • People at work complain every now and again about a bad close, but it’s minor things that ultimately boil down to nothing meaningful
  • I could improve my timekeeping
  • My next goal in my career is to get a fully functional demo of a game out, which I aim to do by the end of February with an on-rails shooting game made in Unreal.
  • I feel like if I enjoy the idea enough, I can put myself to the project and push through to make it.

Opportunities

  • A lot of places are hiring for either Unity or Unreal for games programming positions.
  • I could improve my skills and increase how hireable I am by making more games. Following the advice of Cuauhtemoc Moreno, one of the industry professionals I asked for advice, making games is one of the best things to do in an industry like this.
  • I have been working on making connections by getting in touch with industry professionals around the world, creating somewhat of an acquainted relationship with them.

Threats

  • The only person holding me back from making games is me and my own lack of focus.
  • The only people who encourage me really is people in my class and myself.
  • The worst part of making a game that I really don’t like is the animation stage, since if the animations look janky, it can turn the game from a good one to a less good one.
  • Having work also doesn’t help with getting college work done, but I can work around college.

Task 3 - Target Setting

These are some SMART targets I have set to complete over this assignment.

SMART Target 1 - VFX

What do I want to achieve?Various Visual Effects using the UE5 material nodes.
Why do I want it?I saw some videos online of some really nice looking visual effects and I wanted to try make them too.
SpecificMeasurableAchievableRelevantTimely
I want to create at least 3 visual effects using the Unreal Engine 5 material system.- 3 materialsThe only roadblock would be lacking the time due to work.Making these would greatly help with understanding the material system in UE5This could be done in around 2 weeks.
SMART GoalI want to make 3 VFX materials for game use in under 2 weeks.

SMART Target 2 - Arcade

What do I want to achieve?An arcade capable of playing retro games which the user provides.
Why do I want it?I found this library online, UnrealLibretro, which would allow this to work, and it looks really interesting to work with.
SpecificMeasurableAchievableRelevantTimely
I want to create a 3D arcade which the player can walk around like an actual machine, with all the lights and sounds of the machines. It will feature a mix of games played through Libretro, a wrapper for various emulators to be played on multiple platforms.- Get games playable through UnrealLibretro

- Make an environment

The only roadblocks I can think of is burnout, lacking models, or lacking time due to juggling work alongside college.Making this work would help my understanding of Unreal Engine 5 much greaterThis could be done in under 2 weeks
SMART GoalI want to make an arcade which you can walk around in using UnrealLibretro, which should take less than 2 weeks to make.

Task 4 - Action Planning

Visual Effects

Going into this SMART target, I had multiple effects in mind which I could recreate.

Summoning Circle

Effect NameSummoning Circle
Time to Create1 Day (18/01/25)
Objective / task breakdown hereDeadlinesDescriptionEvidence
Source image/texturesAn hourFind two good quality images of a summoning circle in two different colours
Develop VFX material15 minutesConnect up the two textures to a Lerp (LinearInterpolation) node to seamlessly transition from T_Circle_Red to T_Circle_Blue
Develop blueprint to swap between two on collisionAn hourCreate a blueprint actor which uses Event Tick to set the alpha value of the Lerp node through a Scalar Parameter set on the material.
Create a Niagara system to use later in blueprint15 minutesCreate a Niagara Emitter of the type Hanging Particulates and change the material and colours. Here, I set the colour to be a User Parameter to set later in the blueprint.
Link Niagara Particles to Blueprint actor15 minutesCreate a sequence node and connect it to a branch to check if the transition is more than 70% complete, if so, set the colour to the Cyan Particles, otherwise, keep them as red.

Final Product

Link

Reflection

Overall, this effect wasn’t too hard to make, it was fun to make. The only thing I would think to change would be the particles on the reversion to red to change back quicker.

Feedback

JackThe pentagram looks good and the colours are good but the red and blue don’t really work maybe try to make the red glow or just brighter when the player is in it as if it was a teleporter the complete change of colour could imply that it won’t work or the player can’t use it. The particles above it also don’t match, change the colours and the way the particles create a dome like shape as it doesn’t look correct for the overall visuals.
ThomasIt looks good but it would look more interesting with an animation between the 2 different colours, instead of it turning white then blue and white then red etc
TrevorLooks great, think it need more animation when transitioning between colours. Make it more interesting to see.
RileyI think it’s very cool what you have made and the pentagram is amazing but I think there should be more particles
FinI really like the fade and particles but I think that you could potentially give it more impact with a small screenshake for more of a intense effect

Scanlines

Effect NameScanlines
Time to Create1 Day (11/02/25)
Objective / task breakdown hereDeadlinesDescriptionEvidence
Create material1 hourI had to create a material which used sine waves and a mask to create a looping line effect over a texture sample. The two parameters allow for fine control per instance over how many scan lines there are and how thick they are.
Source a video to test15 minutesI scoured over any clips of old SNES games which I could find easily, and found a clip from a friend playing a kaizo hack of Super Mario World.
Apply the TSR Ghosting fix5 minutesAfter importing the video to Unreal, I found the video ghosted. I managed to fix this by changing some settings on the material.

Final Product

Link

Reflection

I think this material greatly helps with older titles, and would fit being displayed on an old CRT perfectly.

Feedback

JackThe retro feel it has is perfect for what you are going for, it’s visually appealing and makes the player want to keep watching, the colouring is great as it goes with the overall feeling.
RileyYour scanline texture is amazing and works incredibly well to emulate the feel of a retro video game. One thing could be to add the CRT screen shape so slight bulged centre and rounded corners
ThomasReally great, I like it a lot. The scanline really makes it seem like its from the 80’s/90’s, so it will fit the theme of your arcade perfectly
TrevorThe scan line looks fantastic, love how it captures the feel of actual old CRT tvs. Only nitpick is that it mutes the colours abit but that was how those tvs were like.

Terrain Scan

Effect NameTerrain Scan
Time to Create1 Day (21/02/25)
Objective / task breakdown hereDeadlinesDescriptionEvidence
Create materialAn hourI created a material which uses the Object Position and Radius to create a scan effect.
The Vector3 node allows you to change the colour of the radius for the scan to go over.
Test on different terrain15 minutesI went through old levels I had, and tested how it looked.

Final Product

Link

Reflection

I think this looks very nice, and would work quite well in a stealth game to show where enemies can hear you/see you from.

Feedback

RileyI like the colour and motion but I feel that the white lines should be a 3D texture in space rather than a 2D image that applies over meshes
ThomasReally cool concept, I love the colours. It could work really well for stealth games as a stealth meter. Gives a sense of dread with the red. Maybe see if you could make so that the red gets darker as it gets closer to the edge
TrevorVery unique. Love how it looks through the terrain. It could leave the typological/geological lines of the terrain for a couple seconds like it has mapped the environment.
JackThe scan is great and really matches the feeling you intend to give using it. The colours could be experimented with to see if there is a colour that fits better as it’s slightly too light and transparent.
FinI really like the effect going from the origin, I think if you made the circle a unique pattern, maybe like dotted instead of one thick line it’ll make it more visually unique, I also don’t know if red is the best colour as it a very aggressive colour, maybe experimenting with softer colours like blues and greens it could match it’s sci-fi look. Unless that’s what your going for, I do really like how the scan covers the whole surface including inclines.

Arcade

Project NameUnreal Arcade
Time to Create1 and a half weeks (13/02/25)
Objective / task breakdown hereDeadlinesDescriptionEvidence
Install Unreal Libretro5 minutes (13/2)Simply download the plugin from the GitHub repository and install to the Plugins folder of the project
Get the material setup2 hours
(13/2)
To start, I had to create a new child blueprint from the Libretro Actor Base included in the plugin, which came with this component attached.
After selecting the core I wanted (snes9x to test out SNES games) and the game file, I set the render target and tried to load the game.
This took a while due to how I was displaying the texture. It kept locking up and not resetting itself after the game closed. Removing the Render Target fixed this.
Create IMC and IA files1 hour
(13/2)
I started by making two Input Mapping Context files. One for movement, and one for Libretro controls.
Pair all IA events to Libretro inputs2 hours
(13/2)
This was relatively easy, just very tedious. I paired the triggered event to the pressed event so it fires every frame, and I paired completed to released to stop when there is no input.
Test it worked5 minutes (13/2)Very easy, find a few games and test that they work.
I tested:
- Mike Tyson’s Punch Out!! (NES) (NEStopia core)
- Super Mario World (SNES) (snes9x core)
- Mario Kart: Super Circuit (GBA) (mGBA core)
- Panel de Pon (SNES) (snes9x core)
Link to video
Import the arcade machine15 minutes
(16/2)
I got a friend to model an arcade machine for me, which looked very nice, but lacked any texturing, so I took it into Blender and added materials for every part which could potentially have it’s own texture for a specific game.
Attach the game to the arcade machine screen.5 minutes (16/2)This was very simple, just apply M_GlowingScreen to the Screen material slot on the mesh.
Fix flipped UVs5 minutes (16/02)The model I was given had some problems with the screen being flipped. Very easy fix, just take it back into blender, flip it 180 and reposition it.
Source a control panel texture for Pac Man30 minutes (16/02)After a lot of searching, I found a website called Arcade Artwork which has very high quality dumps of arcade textures.
This meant I could easily find the right texture for the panel.
Apply the texture to the machine1 hour
(16/02)
The textures all have the downside of being massive, so they need to be rescaled inside of Unreal to be aligned properly. I then made a master material to make child instances of for any changes needed across all textures, including the variables.

Create button blueprint1 day (17/02)This took me quite a while, since I wanted to make it so that when you played the game, pressing a button on the controller pressed it on screen.

I created a button blueprint and added it as a child actor component to the base arcade machine blueprint. I then needed a way to tell the blueprint what button it represented from the machine.

I originally tried adding Tags to each button but this wouldn’t work for whatever reason.
My next attempt used booleans for each input action. I then took back to the code I had from the tags and created this. It reads from the input enumerator and gets the name as a string. I then checked to see if this matched a variable in the button blueprint called ButtonToPress.

ButtonToPress is set in the construction script by getting the name of the child actor component in the parent. If it matches, it checks to see if the button is to be pressed or released, and calls the respective event.





Link to video of buttons

Create joystick2 days
(17/02- 18/02)
This also took quite a while to do. I started by making a joystick blueprint, and adding the joystick I made in Blender.

I then tried this whole pile of nodes to try and decide which way the joystick should move. It reads from the button presses/boolean variables.

I then started working on the actual events themselves to handle rotation. The first attempt went horribly and spun the stick from the middle, meaning the stick needed to be half way inside the machine, which wasn’t ideal.
I then tried a different approach. I reached out for help, and was suggested to use a scene component, make the joystick mesh a child of the scene, and put the scene on the bottom of the stick, and rotate that rather than the stick.

Following this, I then created this using FInterp for each event called.

This unfortunately broke if you used a controller since it read both inputs and broke itself. I fixed this by creating new variables, appropriately named UpStickPressed, DownStickPressed, etc, and reworking the direction checking.




Link to gameplay video
Get Monkey Ball arcade booting3 days
(16/02 - 19/02)
This was a very on and off test, since it went up and down my importance list depending on how close to finishing.
Luckily, I figured it out.

Monkey Ball arcade is different to other arcade titles like Pac-Man, Space Invaders and Metal Slug. IT uses the NAOMI boards, which is very similar in architecture to a Dreamcast compared to a traditional board like a System 16 / System 18 or a Model 2.

This meant it needed extra stuff to load. The way Libretro emulates it is through a core called Flycast, which allows for Dreamcast and NAOMI emulation due to their similar architecture.

This came with ups and downs, the main down being I couldn’t figure out how to make it read my games as a NAOMI title rather than a Dreamcast file.

Every time I tried to load it, the entire editor crashed with an error of ‘The Core failed to load the content.‘

Luckily, I knew one of my friends is a massive Monkey Ball fanatic, so I reached out, and asked if he knew how to. As it turns out, I was missing a certain file, an .lst file, which contains all the track data for the game, and upon being fed to Flycast, the core knew to boot to NAOMI mode.

There was three main problems. The game only supported analog input, the joystick blueprint wasn’t setup to handle analog input properly, and all input was flipped 90 clockwise.

Link to Monkey Ball working

Fix the joystick for analog input5 minutes
(20/02)
This was a very easy fix, I just had to set the macro on the analog input too.
Fix the rotated input for Monkey Ball1 hour (20/02)I started by making a variable called IsGameMonkeyBall and setting it to true on the Event BeginPlay. This then gets used to check whether or not to adjust the axis settings or not.

If true, it checks the axis to see if it’s a left press or a right press, along with it being in or outside of the deadzone.

Get PS5 controller Raw Input support10 days
(13/02-22/02)
The entire time I had tested this, I had DS4Windows open to emulate an Xbox 360 controller. Now, I wanted to add native support.

Since Sony blocks access to their controller support in game due to proprietary software, I had to use the Raw Input plugin. I found a project online by DarknessFX called UEPlayStationGamepad which, upon copying the input config over, allowed me to do input on everything besides the D-Pad, arguably the most important part for some games, especially if I had any plans to implement home consoles like the NES.

After figuring out how the InputAxis mappings were set in the original project above, I found that Axis 8 is the correct axis for the DualSense controller.

Using this, I then started thinking of ways to map each input. I landed on this. I could probably condense it all down into two functions with multiple inputs, but if it isn’t broken, don’t fix it.


Start to build up an environment2 hours
(20/02)
I started with a rough blockout with simple textures, and added a bunch of machines around with no set games or special textures
Build further1 hour (20/02)I added a roof, as well as a curtain to hide part of the area away, allowing me to expand on this further after the assignment if I want to. I also added pool tables in the middle.
Gather FeedbackN/A (20/02)I sent some screenshots to friends and they gave the following feedback:
Jack: I love how vibrant it is, I’m just not a big fan of the amount of colours you can always see, I think it’s just missing something on the walls it looks a little empty and there for losing some visual appeal
Thomas: very bright, i think too bright, arcades are usually quite dark and have a moody atmosphere
Work from feedback2 hours (20/02)I took feedback and added some neon rings to the ceiling, as well as a neon strip around the arcade.
More feedbackN/A (20/02)Trevor: This is good, ceiling looks great and entertaining. Do agree with Thomas about it needing to have that shadowy lighting. Would recommend looking at references from stranger things or even the arcade at The Gate. But it’s coming along nicely.
Adjust lighting and add emissive lighting15 minutes
(21/02)
I changed the sky lights colour, and adjusted the intensity. This helped create a moody environment indoors which really helps the neon lights pop.


Turn on all the machines1 hour (21/02)I had the genius idea to turn on all the machines on Event BeginPlay. I knew of some bugs with Monkey Ball freezing everything, so when I set it to StartGame, I checked for Monkey Ball first.
Fix audio volume10 minutes (21/02)The audio was way too loud, you couldn’t even hear the game you’re playing, so I made some adjustments to the machines to change the volume of the machines depending if you’re in a machine, in that machine, or not playing at all.
Fix emissive lighting on screens5 minutes (21/02)I accidentally set the emissive colour too high on the M_GlowingScreen material. Adjusting it fixed the screens being too bright.

Final Product

Link to image folder

Reflection

I feel like this was a very successful project, and is something I would love to improve and expand on in the future.

Feedback

Sophiei like the layout, the colour scheme is nice and quite 80s, only things areif this arcade is used still and not abandoned maybe some clutter like drinks left next to machines, jackets on stools, coins on the arcade machine control panel things. or simpler stuff like having bins with rubbish in. if its supposed to be abandoned, maybe more brokenness is general.
TrevorSophie summed up my feed back perfectly but I would say, Francisco (the environment artist) had talked about everything needs storytelling to really sell it. So if you can do a pass over and consider what things would be happening to the machines. Are kids stacking Quarters on a machine as a queue, has someone spilled something and it’s being cleaned, is a machine being maintained.

Task 5 - Promotion

https://portfolio.player.gdn
All work on there is for this assignment besides the notes website, which I had beforehand.

Task 6 - Reflection

My original idea for this assignment was to create something simple, something to showcase basic skills like Object Oriented Programming, or how to make a basic zombies FPS game, but instead, I set my eyes on something bigger. I felt like I could accurately create an arcade environment which has the technical capability to play actual games.

I feel like from doing this assignment, I would like to pursue a career in Games Programming. This is supported by my choices for HE, my interests, skills, and my SMART targets. If I cannot do this, I may attempt to pursue a career doing Visual Effects, as I enjoyed making them. I think I would like to continue the Unreal Arcade and build it into something bigger and better, including my own games.

I have plans to make more visual effects, and create an even bigger game using the arcade as a jumping point, with plans for stuff like building your own arcade, sharing it with others, and creating your own games too.