Brancaleone
Prophet
tl;dr: when he was working for someone else being lazy wasn't an option and he was forced to be disciplined.
This week is a little longer of an update as I cover 3 topics:
Joining me this week is longtime follower and friend Neil from the big island of Hawaii. Nic couldn’t make it this week so I swapped in another N friend to the west of me. We’ll see if you notice.
- Putting to practice some of the realizations from the break
- Progress on the 3d Dungeon Generator
- Progress on the Lore and fantasy in the world of Vaelun, the setting for Archmage Rises
You can learn more about Neil’s game Echo Dawn Turning Tides.
I haven’t fully decided yet, but I might be hiring a programming/game dev grad in Ontario. It has to be someone living in and graduating from Ontario in order to get government funding.
So if you are a good programmer, who loves RPGs, and are graduating from your program in Apr/May contact me! It could be the best, or worst job, of your life! It definitely won’t be mediocre!
That's true, of course, but I don't know if they went in expecting a financial success (or even a recoup of investments).Also, if measured by # of copies sold (and $$$ of profit) they game will never realistically recoup the investment he has made (in both money and time). That can be a hard pill to swallow.
Last update I had the notion of hiring a grad to help out on the programming. I’ve talked with various government agencies and interviewed several candidates.
One of the habits in 7 Habits of Highly Effective people is to “Begin with the end in mind.” This has caused me to think through bigger questions, not just to look at the current temporary need but the larger picture: what am I doing? Where am I going with all this?
Hiring a grad is not easy. Most of my career I have hired people with experience, usually 5+ years in the field. Only one time have I hired someone straight outta school. It worked out, but I left the decision making process mostly to the senior programmers that would be working with the newbie. But in this case, I’m the one who has to teach and mentor and inspect their work.
The problem with a grad is they don’t know anything. Sorry to those who spent a fortune getting an education, but that’s the cold hard truth. So when hiring a grad, it is not about the past, which is known and can be prodded, but about the future: the potential of the candidate. This has proven more difficult than it sounds. For me anyway.
I’m close to making a decision and will let you know as soon as one is made.
Until next time, be well!
I’m close to making a decision and will let you know as soon as one is made.
Meet Daniel. The first full time local team member on Archmage Rises. Daniel is here to write code and chew bubblegum. And he’s allllll out of gum.
A few weeks ago I thought long and hard about life, the universe, and everything. And 42 wasn’t cutting it.
It was time to make the long play: to start building up the studio with a team capable of people finishing a game faster than 5 years with the purpose of making multiple (sequential) titles. It’s time to turn Pro. Pro Pro.
I need a party of intrepid adventurers eager to build the kinds of games worth making and with the skills to pull it off.
Enter Daniel the core engine programmer. Daniel is like the Tank, the first one you need if you have any hope of survival, and someone who enables the other more specialized classes to do their thing. Right now he is focused on learning Unity and C# so he can start finishing tasks on Archmage Rises. In a few years it is our hope he will be technical lead of our second or third title.
I’ll also add that had I not walked away for a month, I probably would not have the perspective necessary to make a move like this.
That's true, of course, but I don't know if they went in expecting a financial success (or even a recoup of investments).Also, if measured by # of copies sold (and $$$ of profit) they game will never realistically recoup the investment he has made (in both money and time). That can be a hard pill to swallow.
Especially in indie development, some actually do it for themselves, more so if it is their first/only project. Of course it is awesome if it makes money, but there is undoubtedly a "bucket list" aspect to it as well.
I have a feeling this guy is in it for the sake of doing it. If business was his primary concern, he'd have long failed already and likely given up.
This week Nic and I dive into how the 3D dungeons are coming along, and specifically how the game AI will decorate and display rooms based on Theme and Purpose.
But first, new programmer Daniel has finished his unity training with the Zenva course Discover Unity Game Development. If you are interested in learning Unity this is a good place to start. I reviewed each lesson with Daniel as he completed them and it really did teach him the fundamentals. It took about 80hrs to do them all (about 40hrs of video, 40hrs of doing). Archmage is a big-ish project in Unity with a lot of advanced Unity UI stuff created by Nic. I think this course prepares people well to work on real projects.
Dungeons.
When I created the 2D dungeons in Archmage it just threw random crap on the screen. It was a purely random dungeon room generator. I wanted to fix this to provide a sense of place and purpose, a story if you will, of the dungeon. But how?
When I started working on redoing the dungeons I invested in trying to distill the essence of the dungeon crawl. What makes a dungeon interesting? What are the characteristics to each scene that are memorable? Fortunately superfan Brindor recommended this excellent book:
What I like about this book is it is light on rules/system and heavy on ideas and thoughts. I don’t care about specific rules for asphyxiation, but I am interested in the ideas behind it!
Using this book I was able to discern each dungeon needs a reason for existing: to hold something, protect something, to service something. Once you know that reason it suddenly becomes clearer what rooms should be in a dungeon, and which ones shouldn’t. If humanoids are to live there, there must be a place for food storage, source of water, sleeping quarters. If the place is designed to hold some ancient evil or super valuable artifact or off limits knowledge, it will be trapped and have lots of locked doors.
I embarked on the 3D dungeons just seeing if i could make a room, any room. Once the structure and lighting were in place I started putting stuff inside it. Unfortunately it looked exactly like what it was: random crap in a room.
How do I signify a room’s purpose? I found this map sparked my imagination:
While the rooms are unlabeled they have a visual language that communicates what kind of room and therefore experience the player can expect in there. There are very few props in each area, yet the ones there tell all that need to be told.
Now, what system would enable room purpose, something that could define the props allowed to be shown? It is complicated because while a bed is clearly in a sleeping area, what about a desk? It could be in a bedroom or a study. What about a chest? It could be in a barracks, a treasure room, or a study. We came up with a tagging system. Each prop can be tagged with the kind of purposes it can fulfill. There are some problems with this and I may have to solve this differently soon, but for now that is the solution we have and will pursue it until it tells us otherwise.
One major complication (pain-in-the-ass) is some objects can be placed anywhere, but not all. So a table and chairs looks pretty good pretty much anywhere and orientation doesn’t matter. Even if multiple tables and chairs are in the same room that they don’t align to any set pattern doesn’t seem to matter, it looks organic.
But beds? Beds look terrible this way. Cupboards? Cupboards look awful unless they are up against a wall, and not too close to a corner or door. This has necessitated creating layout objects that know how to lay themselves out. Ultimately it is a sophisticated and highly reusable system, just not something I intended to make.
Bad! Bad beds!
Good! Good beds!
Getting objects to lay themselves out in patterns is necessary for structural things like columns. If there is just one column, it can be anywhere in the room and look ok. But as soon as there are two or more, they must be laid out equidistant from each other or a nearby wall. It is this “pattern” code developed for columns that I plan to use for beds and whatever else comes up (benches in a chapel, tables in a classroom towards a lectern).
It’s been a long time coming, but I’m pretty close to the end now on this dungeon stuff. Once the tech is all working right I can continue making content, getting textures, lighting, and props that all work together instead of the placeholder stuff I’ve been using.
BBQ Bomb was right, these 3d dungeons are a rabbit hole. But I think the results are better this way and I’ll be proud of it. Sometimes when I code there are points where I say “wow, this is terrible, i’ll never use this system again” and sometimes it is immediately clear the system is good and can be reused for multiple purposes. This is how i feel about this system. It will work for Archmage Rises and beyond.
Since the last update, I completed celebrating my 20th wedding anniversary with my wife. She may not like me very much, but she sure likes trips, so I predict another 20 years for us!
Meanwhile, Daniel completed his training regiment and started working on integrating the 3D dungeons tech into the main game. In this video we show the start of it actually working!
I think it is fair to say Archmage Rises has lots of tech but little content. With Daniel focused on integrating the tech, this allows Thomas to focus on content. A pattern we hope will continue!
The Training Regiment
For those interested in what it takes to be a solid game dev programmer at Defiance Games here is a synopsis of the post mentioned in the video. It came out of discussion about what has been the most valuable resource as a game dev programmer.
1. C++ FOR DUMMIES
Learn real low level-ish coding and Object Oriented Programming principles in the raw. I have read other books that teach OOP, but this is the one that really made it click for me. Suddenly, in a moment, the veil dropped and the power of a whole new world was revealed. From this book I was then able to understand what the heck Stroustrup and Don Box were talking about! Well, almost… :-p
2. LEARNING C#
There are plenty of C# books out there, but this one by Jesse Liberty is my favorite. It’s funny, it’s thorough, it’s straight to the point: Learn C#. Not learn C# as you build websites, not learn C# as you make games, just straight forward C#. It covers OOP, LINQ, Events, Delegates, Interfaces, Visual Studio, debugging, everything one needs in their toolbelt. Because game dev is hard, you never know what it will throw at you, it’s so important to know the main language well. It is also interesting to see how C# differs from C++ above, what is nicer about it and what it cannot do. C# lies on top of C++ concepts. Like .Dispose() is really just a C++ Destructor.
3. DESIGN PATTERNS
The difference between a junior (novice or noob) programmer and an experienced (veteran) programmer is the veteran sees problems as similar to other problems he’s solved before. Meaning, the junior sees every problem as completely new and requires it’s own unique solution. And they are paying me to program around here, not to sit and think, so let’s just start coding!
A veteran knows there is probably some version of a generic solution that applies here. Design Patterns are the distillation of decades of programming into a nice set of common solutions to most problems.
I really appreciate how it begins making it’s case with a dungeon generator even though it is targeted to business software devs.
4. GAME PROGRAMMING PATTERNS
A former EA systems developer decided to write a book about Game design patterns, because games are unique and require their own kinds of solutions. This book takes the knowledge from above and expands and extends on how to apply it to game dev. Best of all is the price: Free! How un-EA of him! Love it and refer to it often.
5. REFACTORING
As a professional you have to write professional code. But what does that mean? My definition of professional is:
Refactoring by Fowler puts developers on the right path to concise elegant code that can be understood by others. He gives rules of thumb for how to sniff out bad code and turn it into good code. Like if you are cutting & pasting, you’re already doing it wrong. Or if you have more than 3 if conditions, you probably have the wrong object model. This sort of stuff isn’t normally taught, just caught.
- Concise code that makes its purpose clear to others
- Code that is easy to change or extend
- Simple and elegant (as opposed to convoluted and complicated)
There you have it. A firm foundation from which to become a game dev programmer. If you have read and understood (grokked) the above, and want to work in the quiet Canadian wilderness, give me a shout. I may have a job for you!
Into the trash it goes.Design Patterns
Into the trash it goes.Design Patterns
can I play my mage as a dual wielding fighter?the play-how-you-want mage simulator
This week we show off the new lighting, texturing, and interaction of the 3d dungeons. When we showed the 3d dungeons working last time they were not connected to the actual dungeon rooms in the dungeon, they were just randomly generated every time you clicked a door. Daniel has now fully integrated the 3d views in with the original code. It didn’t take him long to get it working perfectly: navigating around, searching items and finding treasure, setting off traps, and getting into combat. This is the baseline from which we can now expand into new areas of interaction.
On the content side I was able to put in new wall/floor textures and greatly improve the lighting model. Unity offers two forms of lighting: gamma and linear. Linear provides a slightly more realistic render, but not all older hardware supports it, especially Mac or integrated PC video cards. I made the decision to go with gamma for maximum compatibility and because I thought it looked nicer for our style. The art style of Archmage is neither realistic nor cartoony. I call it something in between those: fantasy realism, like the work of Larry Elmore, Clyde Cadwell, and Jeff Easley. The gamma lighting model seemed to fit better in with that.
One small way we are integrating the 3d dungeon in with gameplay is the lighting of the room varies based on the source of the light (torch or spell). Daniel put in some slight flickering to reinforce that you the player are holding the light. The more powerfully you cast the light spell, the further it reaches into the darkness.
Everything and the kitchen sink apparently.WTF is this guy doing????