The Minimalist Lifestyler Screenshot

Monthly Reflection #6 – I Love Game Jams!

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

During August I worked on my current flagship project Against Sahara, participated in the Zanga Game Jam 2018 and reviewed my work schedule to come up with something better.

Against Sahara – Current Status

I’ve bought domain name againstsahara.com for its future marketing website (nothing there yet), and I’m in the middle of finalizing the game’s design after building prototypes and testing.

I should be finalizing the design (concept/story/game rules/art/etc.) by 6th September next week.

Zanga Game Jam

The 2018th edition of the Zanga Game Jam happened from Friday 17th to Sunday 19th and we had a local site at Corporate Hub 9 in Amwaj Lagoon – Muharraq.

I joined in with a couple of new devs and built with them The Minimalist Lifestyler around the theme Minimalism.

The Minimalist Lifestyler Screenshot

The Minimalist Lifestyler Screenshot

This jam is the 4th I’ve joined in the past 12 months, and I don’t plan on stopping anytime soon!.

They’re an awesome way to meet and work with new people and play around with fresh ideas πŸ˜€ .

New Weekly Schedule for a Healthier Self

I felt like my growth was stagnating and my health was deteriorating slightly, so I decided to experiment with a new weekly schedule.

Starting from last work week of August (26th – 30th), instead of small blocks per day for various activities I separated the week into blocks.

On Sunday it’s Gym Day, when I focus entirely on exercise

Monday is Study Day, where I focus on improving existent skills and learning new ones (currently learning Houdini).

From Tuesday to Thursday is project work, which is mainly business activities for Z’s Laboratories and Against Sahara for now.

The effects so far are promising!, starting the week with heavy exercise left me energized for the rest of the week, and dedicating a specific day(s) for study and work made me more focused and ended up a bit more productive than usual.

But it might just be due to excitement of the change so won’t know for sure till I review results during next month’s reflection.

What’s Next: Learning Houdini & Building Digital Demo of Against Sahara

I’m going through Houdini’s official “Houdini Fundamentals” book at the moment, and plan to complete it by end of September.

I wish to make my own assets for my games and chose Houdini as my tool of choice, so this is in preparation for making Against Sahara’s art.

Once I finalize the game’s design, I’ll start building the final version of the game, starting with a story-less and art-less demo.

This ends this month’s report, hope you enjoyed and if you have any feedback please comment below πŸ™‚ .

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.

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 October.

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!.

About Z’s Laboratories

Subscribe to my Newsletter

Required *