Posts Tagged ‘game development’

Monthly Reflection #5 – Time To Switch Gears

Written by Zainab Al-Ansari on . Posted in Blog, Reflections

Every last working day of the current month I publish a report reflecting on the previous month. These reflections exist to demonstrate my progress, share my experiences and help transfer what I learn to others.

The Past Month

I mentioned last month how my lighting and coloring senseΒ suck,Β so I did quite a bit of studying this month, mainly on the visual side of things.

I signed up to The Gnomon Workshop for a 1-month subscription and went through the following courses:

Lighting & Coloring Practice

With practical skills you have to apply them to learn, and so I practiced lighting and coloring using a pre-made scene from the asset store:

This slideshow requires JavaScript.

What’s Next: My First Commercial Game

Since April 2018 I focused almost entirely on building up my game dev skills, and it’s finally time for me to put them to the test.

I already started working on my new project in late July, and plan on finishing a demo by mid-August (hopefully).

I’ll be announcing and showing a physical prototype of the game (final game will be digital) during our local game dev community’s next meetup on August 4th.

Stay tuned for the announcement on Twitter on Sunday, August 5th!

As for the UE4 VFX course, I didn’t apply what I learned just yet since I decided to prepare a demo for Gamer’s Day in Saudi that will be happening in September.

I’ll be going through it again at a later date, either during the new project if I decide to create original VFX for it, or after finishing the game.

This ends this month’s very short report, hope you enjoyed and if you have any feedback please comment below :).

picture of a game programmer at work by Sergey Galyonkin

How to Hire Your First Programmer for Non-Techie People

Written by Zainab Al-Ansari on . Posted in Blog, Software Development

Why I’m Writing This

A friend of mine is currently in the middle of hiring her first programmer for her new game studio, and I offered to help steer her towards a more suitable hire as I saw many startups struggle or downright fail after hiring the wrong person.

I decided to turn this into a blog post in case it helps someone else too.

But I must put a disclaimer: My professional development background is mainly web development, while my professional background in games development is negligible as of writing this article. As such I will be tackling this as a general programmer job, not specific to games development.

The Impact of Your First Hires

I’ve worked in multiple startups before and I can say with confidence that your first five hires will determine your entire company’s culture, or at least the development team’s, now and long after they’ve left the company.

So, before looking at their qualifications, look at their personality, and whether it fits with the culture you wish to develop.

For example: If you wish to nurture a culture with good life/work balance, then don’t hire any workaholics among your first five.

Your First Hire

Your first hire will most likely be your future team lead, assuming they stick around long enough.

For this person, they need to:

  • Work well in a team.
  • Be capable leaders (pushovers and tyrants not suitable to lead programmers).
  • Understand business, and experience working in a startup would be great too.
  • Have a high sense of integrity and work ethics (you don’t want someone who doesn’t care about the success of the team/company making important decisions or writing your game’s base code).
  • Love to help and teach (they will be doing lots of that to you and your other hires).
  • Be able to architect software well.
  • Be able to estimate how long a task will take reliably.
  • Be productive programmers.
  • Think of performance and other lower-level issues than simply coding.

What Questions To Ask in The Interview

You know best if the person you’re talking to will fit culturally with your company so I won’t touch on that here.

Instead, I’ll focus on the more technical questions to ask to determine those last 4 points I pointed out in the previous section.

Question #1: Show me your portfolio.

Simple: no previous work = no hire. You want someone with actual programming experience building published projects.

Preferably using the language(s)/tool(s) you’re hiring them to build in.

Question #2: Which code versioning tool do you use?

This is a trick question πŸ˜€ .

It doesn’t really matter which versioning tool they use, what matters is that they use one AT ALL.

Using one indicates that they care about their productivity (or worked with one who does, anyway).

Which tool to use depends on the project and learning new ones doesn’t take too long, roughly 15~30mins a day for one work week is enough.

Question #3: How do you document your code?

Code documentation can be done in many ways, most important are code comments.

But other forms of documentation can be necessary too depending on the project.

If they don’t write comments, don’t hire them. This should be a minimum requirement for any hire.

If they write bad undocumented code really fast they will be suitable only for building prototypes and other throwaway code.

Question #4: How do you plan and organize your projects’ code?

There’s no right or wrong answer to this question, because it will depend on the project.

The important thing is that they do have an answer.

If they stumble and stutter and are generally unable to answer this question, it means they’re not suitable as a first hire.

This refers to their ability to architect software well.

But note that simply thinking about how to organize a project is very basic and minimal, and not an indication of a capable developer.

Question #5: Which software design patterns have you used in the past?

This is a fun one :D.

I expect most to fail this question (at least here in Bahrain).

If they have used any design patterns in the past, then that indicates they’ve delved deeper into the realm of programming and software development than most around here.

If they haven’t, then they should at the very least know what a software design pattern is, be aware of them and be interested in using them in the future.

Question #6: How do you debug a problem?

They should be able to explain to you their debugging process step-by-step (Hint: Googling or asking for help should come last).

If their favorite “debugger” is Google they’re not skilled enough for this position.

Question #7: Have you followed TDD or a similar development process before? If yes, which? If not, why?

Test-Driven Development is a technique used in software development to maintain quality and make sure requirements are met in an efficient manner.

Similarly to previous questions, the actual process they like to use isn’t that important (I won’t advocate TDD over other processes, as the best depends on the project/team).

The important thing is they should employ some formal process in their development, whether it’s an internationally standardized one like TDD or something they came up with themselves.

Question #8: Do you use the same programming standards/best practices across your projects? If yes/no, why?

This is basic and if they don’t follow any standards at all they’re not a good hire, not as your first or your last.

Following standards is a very simple indication on whether they write clean code or not.

It’s also important for the team’s overall productivity, as using the same naming conventions, folder structure, etc allows team members to work well together.

Making up their own standards is ok, as is the case with development processes it doesn’t matter too much which they prefer.

Advice Going Forward

If you noticed from the questions I posted above, they all pretty much ask of the interviewee’s workflow and the way they think as a programmer, not their actual problem-solving skills.

This is important: problem-solving can always be built up through practice, as is the knowledge about a given tool or language, but workflow and thinking like a programmer takes years to develop and if they don’t have them already, they won’t develop them anytime soon.

For testing actual development skills, I would recommend a practical test in case they pass the first interview.

You should ask a senior programmer whom you know and trust to check on their code, otherwise you’ll be stuck simply checking if it works and that’s not really good enough.

PS: If you have hired a programmer already you should definitely have them interview with you. They should at the very least be able to indicate if the interviewee is better or worse than they are.

This concludes this guide and hopefully you benefit from it.

If you have any questions or concerns please comment below.

Thank you for reading! πŸ™‚ .

Monthly Reflection #4 – Game Release!

Written by Zainab Al-Ansari on . Posted in Blog, Reflections

Every last working day of the current month I publish a report reflecting on the previous month. These reflections exist to demonstrate my progress, share my experiences and help transfer what I learn to others.

The Past Month

I received my new Alienware 17 R4 laptop, and with it was able to package my pinball game without any hiccups!.

All the freezing and crashing problems I suffered with Unreal have more or less disappeared as well.

Other than that, I wrote the Learning Game Dev guide I promised last month.

My Second UE4 Project: Z’s Pinball

A simulation of a classic pinball machine, made in 4 weeks using UE4’s Blueprints (no C++ just yet).

Things I learned from this:

  • How to code using Blueprints
  • How to make editable Blueprints of assets using Blueprint Splines and exposed parameters
  • How to create basic Materials
  • How to use decals
  • How to create simple VFX in Unreal Engine’s Cascade Particle System
  • How to make a simple UI in Unreal
  • How to package and cook games in Unreal
  • Basic performance optimization
  • Using Git with Unreal

What’s Next

During the making of Z’s Pinball I realized how dreadful my color sense is πŸ˜†

So, I’ll be focusing on visual skills during July. Namely color, light, VFX and perhaps some modeling.

This ends this month’s report. Your comments and feedback would be greatly appreciated, so do comment below. πŸ™‚

How To Learn Game Development Effectively in 8 Simple Steps

Written by Zainab Al-Ansari on . Posted in Blog, Learning

Want to learn to make your own games but confused where to start?

Watching tutorial after tutorial without anything to show for it?

Find yourself in an endless cycle of learning and re-learning, without ever achieving the skill level you want?

 

Then, I wrote this for you.

What this article is about

This won’t be your typical “Pick Engine X” or “Learn to Make Games by Making Your Own Flappy Bird” kind of article.

While those have their value, often times the problem beginners often miss is something a lot more fundamental than what engine to use or how to make a small game.

It’s the HOW, the WHAT, and the WHY you learn.

i.e, your LEARNING skill.

And that skill, in relation to game dev, is what this article is about.

If you actively developed your learning skills in the past and have your own way of learning already, then following my way will do you more harm than good so please don’t apply what’s written here.

About Learning

When it comes to acquiring knowledge, practical or otherwise, there are specific ways and methods that are particularly useful for a certain type of knowledge.

Game dev falls under what I like to call the Maker category.

The Maker category as you can tell from the name, pertains to skills that result in “produce”, as opposed to, say, using the English language and its rules to communicate.

I won’t touch on other types, but the steps written here will be effective on other “Maker” skills like cooking or drawing. Simply change the subject in step 1 and you’ll be good to go.

These steps are like the tip of the iceberg when it comes to learning, they won’t cover everything you need but applying them will still cause drastic changes to your pace and quality of work.

So, let’s get started.

Step #1: Start With the Game.

What’s the game you wish to make?

What got you interested in learning game dev in the first place?

Is there a game that make you go “I wish I could make that!”?

Often times people get interested in making games because of something they played or an idea they had.

If you don’t have a particular game that you want to make, or you have too many, then it’s time to choose.

This game will be your end Goal.

And it better be something that gets your blood boiled, or you might end up quitting half way.

Now, write it down and hang it somewhere you will see it everyday.

Step #2: Dissect it.

List down ALL the skills needed to make your game.

Research as necessary.

Be specific.

“Making game music” isn’t specific, “Making instrumental music using an electric violin for Adventure story-based games” is.

It’s at this step where you will choose the game engine, in case of video games, that’s most appropriate for your game, as well as other tools.

Never again google something as generic as “What’s the best game engine?” or “Is Unity or Unreal better?”.

Game engines, and any other software or hardware you will be using, are tools and whether they are the “best” depends on what you will be making with them.

You wouldn’t say a shovel is better than a spoon now would you? If you’re digging dirt then the shovel is better even though you could still take forever and dig using a spoon.

Step #3: Choose the One.

Out of all the skills you’ve listed in the above list, pick one and learn that, and only that.

I emphasize the only because the fewer and more focused things you learn at once, the faster you will learn overall.

Choose the skill that make up your biggest pain, or what you consider as the most important skill that you have yet to learn for the sake of making your ultimate game.

Step #4: Choose Your Teacher Wisely.

Those random YouTube tutorials you’ve been following are harming you and your game more than you can understand at your current skill level.

While those teaching online (or offline for that matter) usually mean well, if they themselves are just starting to learn or have low to mid skill levels then whether you know it or not they’re teaching you bad habits.

Those bad habits are costing you time now, and might cost you your entire game later.

When choosing an online course, a book or any other learning resource, the first thing you should look at is the author.

Not the cover, not the promises of what you will be learning, not the hours or even the cost.

The author.

That author should be making the sort of things that you want them to teach you to make, at a level that they are considered to be experts in their given industry.

They don’t need to be famous, but they do need to be professionals who know what they’re talking about, and are someone studios/other companies would hire to work for them at senior or executive levels.

For example, let’s say you wish to learn to animate characters. Which would be the better teacher: A professional animator who has been working for Disney for the past 20 years or someone who is a really good teacher and has been teaching animation for several years but without ever having their work in a professional project?.

Of course it’s going to be the Disney animator!.

Even if the animator is a bad teacher, simply watching him/her work for an hour will teach you more than any non-professional could in weeks.

The absolute best choice would be someone who is both a good teacher and a professional.

Pick only one.

Once you chose your teacher/learning resource, make that your only source for learning this particular skill.

Don’t fall into the trap of endlessly switching between courses/books/workshops/whatever.

Just choose one source, a book, or an online course, or a local workshop and learn only from that.

Constantly switching between sources will cost you time and money with little gain, so stick to one and master it.

Be willing to spend.

You won’t find quality learning materials for free, be willing to pay for your education. It’s an investment in your future and dream so don’t skimp.

If you can afford to buy a game you can afford to pay 30$ for a course or a book.

Step #5: Make. And Make it Small.

Hopefully the resource you picked in the previous step is practical in nature and has exercises for you to do (following along a tutorial doesn’t count), but if not then no worries.

Design a very small project to apply the things you learned, or as you learn them.

These exercises shouldn’t take more than a month and preferably only hours or even minutes depending on what the skill is.

Remember, this is only one skill out of many, the goal here is to get you to an adequate level in this particular skill, not someone who would be hired to do this one thing.

As an example, my own current pain skill is lighting and coloring 3D scenes in Unreal Engine 4.

To improve this skill I’m taking color theory and cinematic lighting courses on The Gnomon Workshop while applying what I learn in pre-made scenes from the asset store where I only modify the lighting setup.

Step #6: Reflect.

Log your progress.

It could be in the form of pictures, videos or even tweets, but note what you just did.

At the end of every project, look at where you started and where you are now.

This exercise has two purposes:

  1. Seeing progress from project to project boosts your confidence and enthusiasm to keep learning.
  2. Seeing your progress has stalled will let you look into problems much earlier and point you where you need to go.

You don’t need to share your log with others, but it could help keep you on track.

Step #7: Make it Bigger?.

If this is your first or second skill then skip this step for now.

But if you’ve learned 3+ new skills so far, then it’s time to combine all these separate skills into one bigger project.

Simply putting it all together will be difficult and push your skills into new heights.

An example would be: if so far you learned to 3D model low-poly objects in Blender, then you learned to Texture 3D models, and then learned to Animate 3D characters, then it’s time to design your own low-poly 3D character from scratch, build it and give it life.

Limit the new skills that need to be combined together.

Learn around 3~6 skills at a time before combining them, with a hard top at 10 skills.

Step #8: Rinse & Repeat.

Time to go back to step #3 and choose the next skill to learn!.

One skill and project at a time, and you will reach your goal enshalla.

 

This ends this guide, if you have any comments or clarifications you want then comment below.

And please share to anyone you think would benefit from this post.

Thank you for reading!.

To invest in yourself is the best investment of all! by Randall Tiongson

Monthly Reflection #3 – Invest in Yourself

Written by Zainab Al-Ansari on . Posted in Blog, Reflections

Every last working day of the current month I publish a report reflecting on the previous month. These reflections exist to demonstrate my progress, share my experiences and help transfer what I learn to others.

The Past Month

In May I worked on a Pinball simulation using Unreal Engine 4 as a learning project.

I meant to release the game by the end of the month, and while I did finish it, I just couldn’t publish it.

The UE4 Editor is a Power-Hungry Beast

I own a 9-years-old Dell Inspiron N5010 with a dual core 2.4GHz processor and an ancient AMD Radeon HD 5000 graphics card that, with care and an excellent build quality, is still working flawlessly.

However, it’s well below the recommended hardware requirements for Unreal and, although it runs Unity 3D without any problems, it just can’t handle Unreal at all.

I’ve been working on the lowest editor settings and the most FPS I get is 23.

That wasn’t too bad in the beginning, but later on UE4 proved to be buggy and unstable, constantly freezing and crashing while I work or try to test the game.

The most pain I suffered was when it was time to compile and package my project. Despite it being a small Pinball game, it took hours for a single build, and it often failed with errors that had nothing to do with my actual code πŸ˜‘ .

So, I gave up.

Instead of wasting so much time (several days so far), I decided to buy a new gaming laptop that more than can handle Unreal.

Gaming laptops are over priced in Bahrain (like, think 2x its actual worth) and my budget is tight, so I bought an Alienware 17 R4 from Amazon for around $1330. Here’s hoping it comes in one piece 🀞.

I’ll be attempting to package the game again when the laptop arrives.

Investment is Key to Growth and Self Fulfillment

If you’re an amateur or hobbyist, then my advice is to stick to what you have till game dev becomes an important part of your daily life.

But, if you’re already committed to becoming a pro and starting your own studio, then it’s extremely important to invest in yourself And your tools.

Never again follow some random tutorial on YouTube or go through low-quality courses just because they’re free.

While their authors mean well, amateurs unintentionally teach some really bad habits that are costing you a ton of time and effort without you realizing it.

Invest in your education and choose courses and books made by experts in their fields, don’t shy away from paying for high quality knowledge.

Also, buy the tools that would greatly improve your workflow.

Whether it’s a Visual Studio plugin that vastly improves your C++ workflow, a license to some expensive software or more capable hardware, investing in your tools and speeding up your work allows you to create more and higher quality content in less time with fewer hiccups.

I can’t emphasize on how important these two points are. If you’re in this for the long run, then not investing might hamper you or downright stop you from achieving your goals.

What’s Next

I completed the 30 Day Blog Transformation Challenge course on Udemy, and while waiting for my new laptop to arrive I’ll be focusing on my blog for a week or two.

I’ll be writing a guide to learning game dev effectively, and will touch on choosing your learning materials in more detail.

Other than that, while working on Pinball the skill I lacked the most was coloring and lighting. I will subscribe to Gnomon’s Workshop and do their color courses.

I’m planning on using Houdini in my work too for creating assets and VFX, so I’ll go through Gnomon’s Houdini fundamentals course as well.

To know when I post my guide or other articles, subscribe to my RSS feed or newsletter .

About Z’s Laboratories

Subscribe to my Newsletter

Required *