Monday, August 24, 2020

So blogger erased all of my 2020 posts!

 Well I'm not sure what happened but I had resumed some blogging in early 2020 and done several posts .. I came back today to write some more and found tha tll my posts from 2020 are gone?!

It is not as if anything earth shattering was lost - but it is a little disconcerting.

At this point it makes me unsure whether its safe to continue writing here or not?

So .. since no one reads this anyways and I'm mostly talking to myself I'll just continue as if nothing happened!


So SUPER quick recap!


FRAMEWORKS! ARCHITECTURE!


That's what I've been working on!


I found that one thing (of many) that has been vexing my ability to finish certain projects is the gigantic mass of highly coupled messes that my games have become.

Interestingly enough in the past 2 years at my day job I have become quite interested in clean architecture and realized that I had not been applying these principles to my game development.

So I have begun re-writing two of my longest term projects into clean re-useable packages.

As a result I have a new Rogue-Like set of packages, and a new Match 3 framework.

The Rogue-like being more complex dictated that it be cleanly divided in to several big pieces:

  • map generation
  • map drawing system (separate than the generation)
  • procedural content system with subsystems
    • monsters
    • weapons
    • consumables
    • armor(clothing)
  • inventory system
  • movement system
  • combat system
  • floating combat text
  • state management

The coupling between these systems is fairly light. For most of them I made external packages that I can make an update to and then import it in to my project and drag in a few prefabs and get it running quickly.

This is a very nice change from my old patterns!

The match 3 gem framework is largely split into a few big pieces but tries to separate all game logic into a 'server' side and most of the graphics and client actions into the 'client' side.

This is in preparation (I hope) for one day adding multiplayer support; but even if not it certainly keeps separation of concerns into two larger buckets so its been much easier to change game logic while I develop it without breaking the front end.

 So .. hopefully be back to add more progress if this does not dissapear from this blog as well!

Sunday, November 24, 2019

Further Analysis of Chocolate Pants leads me to abandon it again!

So since I last updated I have spent almost another 30 days trying to get Chocolate Pants repaired and perhaps back in a state where I can add a new feature.

Unfortunately what I found is that the rabbit hole of repairs was rather deeper than I suspected.

Two of the largest categories of problems came from prefabs that had lost their link to some other object or script and Unity 3D breaking changes where something is either removed or changed entirely in its implementation enough to be a breaking change for me.

One great example of broken items was the Unity swap from TextMeshPro being an external library to an internal one. All of my UI was severely broken and no longer worked. Somewhere in the low hundreds of text objects were now invalid scripts.

So when 1 broken item results in 200 or so fixes needing to be done in a complex object hierarchy and each time I fix something it unveiled another layer of items needing fixing...

Going through this exercise I realized one of the problems was my design was too tightly coupled - creating a cascade of breakages.

One example is references to my PlayerBehavior script lived in dozens of places it should not. Also the PlayerInventory lived in dozens of places it should not.

Eventually I came to the conclusion that if I were to move forward repairing Choclate Pants that it would need massive refactors.

So that really gave me pause that I need to think about do I want to crawl through this level of code writing should I do a fresh project, or do it in Chocolate Pants and deal with all the continued technical debt of hundreds of broken items.

So at least for now - I have started a fresh Rogue-like Unity 3D project where I am attempting to create a very clean architecture.

We'll see how things look next month!

Tuesday, October 8, 2019

A brief history since Saturday, May 28, 2016

Wow..

I had totally forgotten that my last post here had been Saturday, May 28, 2016.

This reminded me of why I stopped updating, and made me realize my last post left a lot of things out.

So a brief history to catch this blog up.


My kickstarter for Rise of Dagon failed and  I continued for a short time to try and complete ROD by myself.  I eventually came to the estimate that I would both have to cut the features fairly dramatically (due to lack of funding) AND it would take a minimum of 2 more years.  But as I thought about it - in all honestly - it would probably longer because we are all natively bad at estimating how long things will take

Eventually with that sobering realization I had to admit to myself I would almost certainly have to give up- I just couldn't see how I was going to finish the game.

So I decided to take the architecture of Rise of Dagon and make another game.

ROD was an  Eye of the Beholder / Legend of Grimrock style game. Which is to say turn based, grid movement, party based , first person RPG.

So if I took those ingredients and mixed them up - such as take out a party based, first person, RPG and made it a Rogue-like instead I would much closer to finishing a game (I thought).

In fact a big win is I would not need to finish my level editor nor hand craft a dozen levels or so.

Instead I needed to write a procedural dungeon algorithm using my level format.

So that's the first thing I did in my new spin-off project "Chocolate Pants the Unicorn", CP for short.

The procedural dungeon generation first pass took a fairly short time and I spent the next year getting the project to a fairly decent state.

The first 3 levels were in place and I had it up on early access on itch.io but then two things happened.

Firstly my father died, and secondly I changed jobs.

Both of those events are what we call 'life events' and cause a lot of stress and change and both of them require time to settle down and re-adjust.

I was not overly close to my father, but his passing was upsetting. It did effect my motivation and drive - but perhaps not to the level of depression. 

It was just enough that I had to focus on my job - instead of gamedev to keep myself on track.

So I struggled for 3 or 4 months of no updates on my CP project before I gave up on that too.

And now we are almost caught up!

About 18 months after that the only project I have finished is a co-project with a friend called Make America Glow Again on iOS and Android.

I have tried to start MANY very small projects - hoping to find something VERY small that I could finish myself but nothing was motivating enough to return to.

So here I am , rebooting Chocolate Pants the Unicorn!

Monday, October 7, 2019

A long painful pause, and rebooting a long dead project.

It's been a long time since I've updated this and a lot has happened. I could probably write a book on it - but no one would want to read it so let's skip that.

What does matter to a passing game developer who might stumble on this is that after about 18 months of time I have started trying to reboot my Chocolate Pants the Unicorn Roguelike project.

I first attempted the reboot about 4 months ago; when I did one of my largest pain points was that the developer of Particle Playground (upon which I relied upon 100% for my particles) had cancelled support for the product due to Unity rewriting the particle systems.

I had to choose to stay on the old Unity 5 and the last published version of Particle Playground or update to Unity 2019 and get on a modern platform and see how things looked.

So as painful as it was I decided that upgrading was really the only honest way forwards - the chance that I'd get blocked by a show-stopper on a 2 year old version of Unity was medium to high risk and I didn't want to get back into the project to find myself stuck again.

So I spent around 10 days trying to upgrade the project - most of the was broken code due to the inability to compile my scripts because of breaking Unity changes.

After 10 days of effort my project compiled BUT I now had the famous problem that haunt Unity which is when you get compilation errors in a class it often breaks the serialization of the prefab in the editor.

What this means is somewhere around half of my prefabs were completely broken and the entire game was filled with countless null pointer errors.

I went ahead and quit trying to relaunch at that point, I just couldn't handle wrapping my head around it.

Four months later - I finally realized that nothing is inspiring to me about the dozens of "small" projects that I've tried to launch in the interim - and all I think about coding is RPG/Roguelike style games.

In other words - I needed to dig back into this or start a new project.

So here I am - relaunching Chocolate Pants the Unicorn - and I have the first screenshot of a completely broken level to share .. but hey at least its loading now!

Lets see where this goes!

Saturday, May 28, 2016

Level Editor update, questions about early access, Kickstarter failed


As you may have heard (probably not because no one reads this anyways) my Kickstarter failed!

I had a particular roadmap planned out to reach video production gameplay goals for the Kickstarter campaign but now that the campaign has failed I have had to re-evaluate what features I need and in what particular order.

Had I been able to fund my project I would have proceeding in particular direction and had considerably more resources available to me.

Now that those resources are off the table the question at hand is given this is a single player RPG can I go to early access?

I feel that going to early access with part of my single player campaign is a fairly bad move - players will grind through that rather quickly and then be crying out for more content that is going to take a considerable amount of time for me to produce by myself.

Doing that would hypothetically result in an initial good release but would be followed by a lot of negative feedback/reviews from customers who might not be happy with my pace of updates.

User created content can far outstrip my personal ability to produce content ; but without a level editor there will be no user created content!  Given this I felt the best way to proceed forward would be to pivot my focus towards the level editor.

The first step of doing this was to tackle a task I had been putting off which is to "refactor" the level editor into a much more manageable architecture.

I had designed it on a 'as I need' basis and literally thrown functionality in anywhere I could to get things moving for the Kickstarter.

But now I need the Editor code to be solid and easy to work with in the sense of extending it and adding new features, but also in the sense of troubleshooting/debugging any issues that come up.

So I spent approximately the first 30 days after the Kickstarter refactoring all the core level editing functionality to point at the Level Loader class.

The Level Loader of course .. was meant to load saved levels in to the game.  But as you can imagine as you are editing - you are literally loading a level ... on the fly!

Previously I had "on the fly" editing being done in an Editor class, and final "in game" loading only in the Level Loader.

There was also another type of loading which was "inspector based loading" where you get into the individual details of any one grid square and change those details.  This represented a 3rd place code lived to load elements of a level.

So after refactoring all this - all loading is done in the LevelLoader now!

Having achieved this I then added several new features which I demonstrate in this video:

- ability to have an in-game preview window
- ability to toggle to a full screen gameplay mode
- ability to drag & drop monsters in to the game
- ability to toggle a skylight for ease of editing or previewing actual dungeon lighting conditions
- new create level dialogue with configurable elements
- a new player arrow icon - with a emissive texture to make it easy to see regardless of lighting conditions

Other work I did that is not shown:

- refactored the save/store/loading of levels into the local users directory structure ; this ensures users can save their levels to disk where they have permission ; it also gives a default place where I can look for levels to load that the user has created
- added ability to set custom save level names
- added loading dialogue that presents a drop down list of all levels available to load
- fixed quite a few bugs
- refactored the GUI to be more streamlined/minimalistic (more work to do here in the future)

So my next set of goals is to add even more functionality to the level editor; some of these additions should happen pretty quickly because they are just similar to functionality that I've already demonstrated here.  Other items of course are more unique and will require specific work to implement.

Thanks for reading, see you next time!

Tuesday, March 1, 2016

So a very kind person shared my game on facebook, but then this happened..

So if you've tried marketing a game these days you know just how hard it is to break through to people - especially with all the noise and advertisements - and yes even other great games competing for everyone's attention.


So I get lucky .. and a very kind person I don't even know  shared my game on Facebook ; but Facebook scraped my webpage and picked the icon for one of my mobile games from 3 years ago instead of the correct one.

So now all this person's friends think The Rise of Dagon is a game about a chicken with an astronaut helmet!

And that pretty much summarizes exactly how good my first day of my Kickstarter campaign has gone also!

The actual icon is:



You can check the campaign out on Kickstarter here as well.

Oh well tomorrow is another day!

4th Year Indie Retrospective - From not even knowing how to program to taking my biggest risk yet on 8th game.

Four years ago I decided I was going to become an independent game developer. At the time, I didn't even know how to program.

"Sure sounds unrealistic!" , you say.  And you'd be right.

The Rise of Dagon after 18 months of work.
I did have an ace in the hole though: I have a rich history in doing other things like art, design, and project management over the past twenty years to bolster me and as you will see I leveraged those fully.

So I was fortunate in that becoming an indie developer was really a matter of could I learn to program/develop the game myself.  Again no small order; but perhaps a bit more realistic.

For more backstory to my history and how I learned to program I've covered each year of my Indie journey separately and you can read much more detail about those here in Year 1 Retro, Year 2 Retro, Year 3 Retro so I won't go too deeply on those at this time.

My first iOS / Android game Pirates Jewels
The first three years I shipped multiple games.  I shipped and iOS title first, then quickly thereafter on Google Play Android.


Within the first year, I also shipped a title on Wildtangent for PC Desktop which has been my biggest success as of yet, but sadly Wildtangent just pulled it (probably fair the sales had gone down over the past 3 years).

Oddly enough Holiday Cheer was a game that I never intended to make but my wife told me in October that I should make a holiday themed game because it might sell well!

So I took her up on her advice and re-skinned Pirates Jewels (my first game) in just under 30 days and fired off emails to various websites like BigFish and Wildtangent.  I sincerely expected to NOT hear back from them but my to my surprise they were excited and wanted to push to get it in the December update on their site.

Much to my surprise, they actually plan titles well in advance so I was actually late to the party when I emailed them in early November!


I went on to make a few other match-3 related games but over time I came to the conclusion that I was doing the wrong thing.

My first game accepted by a publisher was Holiday Cheer.
You see I was making Match 3 games for a couple of reasons - the first was because I was trying to make a 'simple' game that wouldn't undermine my chances of success.

In that goal I totally succeeded as you see I was able to make several games in the genre and even make a bit of money!

The other reason was because marketing research I had done told me it would be profitable to do so as its the one of the top 3 game types in the casual genre.

In the end, though I lacked many things needed to compete in the casual market nor was it personally satisfying to me either.

You see making a few thousand dollars is certainly nice - but it doesn't pay my rent and it doesn't even actually pay for all the time I invested in making these games either.

So I did what many game developers want to do .. I started on a passion project.

In my case, role-playing games are where it is at.  I've loved RPG's since about 10 years old when I found out about pen and paper D&D.  I moved on to classic computer RPG's like the AD&D Gold Box games and then games like Eye of the Beholder, Baldur's Gate series and on and on from there!

It really didn't take long to decide at that point - in fact, I had something (as most of us do) in my "games I want to make one day" list!

Eye of the Beholder a classic dungeon crawl RPG.
You may  or may not have heard of Eye of The Beholder but if not you certainly will have heard of Legend of Grimrock.

These games represent the quintessential dungeon experience in my mind.  They put you in the game in first person perspective and make you feel like you are really there.

So 18 months ago I began this project, having never made an RPG before, but determined that I was going to make a game that I really loved and cared about this time!

What many indie's who finished games know is that often when you ship a game - no one cares. As often as not you will ship a game to the sound of resounding silence.

Maybe your mom and dad care, "Good job son! I'm glad you finally stuck through and finished something.  Now when are you going to get that job flipping burgers and pay for your own car insurance?"

But if when you're done no one actually cares then you have to question: what is it you are actually getting out of the game? Certainly not money or recognition?

Certainly one can argue then that you did not market your game properly - and maybe that is true.  But a very valid counter argument is maybe you did market your game to the fullest of your current extent which includes lack of finances to push out paid-for marketing.  You can send emails to Youtuber's  and gaming websites and such - but if they just delete the email then the net effect is "you haven't done any marketing!".


So you have to ask yourself what is it you actually want to get out of making your game?

It's happened to me more than once so I've had to ask myself and the answer I've come up with is: I want to make games I'm passionate about so when I'm done I'll have fulfilled my dreams and what I'll have is something I really care about that rewards my urge to create something I really love.

Ultimately I think many of us know this is the right answer; but it's incredibly difficult to reconcile with  the advice we get in the indie game dev community which is  "make something small, cut it in half, and then make it smaller yet!"  or "don't make an RPG! first!".

Those pieces of advice are good; I have no beef with them.  But they don't deal with the passion side of things very well. Those gems of indie advice ask us to invest ourselves in things that don't inspire and the truth is it takes a very dedicated hearty person to persist and create when they are not inspired.

For me the takeaway is: you should follow that advice to learn the basics, but at some point you're going to have to follow your muse when it calls!

 If not you will end up going in circles making things just for the brief rush of saying "hey look I made this voxel clone prototype" or "hey look I made a sidescroller prototype" but you might find yourself with the lack of drive to actually finish because there's no vision of what this game really is in the end.

Very early on I considered changing to UE4 over Unity 3D
So I took off - I just started doing what I do:  I made lists of things I needed to figure out!

My first list looked something like:

  • what kind of level format will I have?
  • what is the best way to implement a class system?
  • what is the best way to implement items?
  • how do I handle monster's? do they get their own classes?
  • what engine should I use?
  • what art level should I shoot for ?


There were many more questions but each one became a truly engaging and interesting topic to me and that drove me forward!

I'm not convinced that I know everything that I would like to know about all of those topics yet - but I at least have a solid understand of them and can implement them in my game now.

The Struggle is Real

I have struggled with producing this game in many ways such as creating 3D models is very time-consuming.

I'm very lucky to have a background of 20+ years of indie art production so I can make quality artwork like this Servant of Dagon model I did in Silo 3D and Mudbox:

Servant of Dagon model I worked on for The Rise of Dagon
But doing so takes a lot of time!  Yes I know many people reading this are indie programmers with no artistic skills at all and this really sounds like a stupid complaint but the real fact of the matter is spending 3 weeks making one 3D model for your game is 3 weeks you are not coding your game!

It became painfully apparent over time that I was going to need help to make The Rise of Dagon so I decided to take it to Kickstarter.



I have spent almost the past 6  months researching Kickstarter and learning about what to do, and what not to do.

One really good resource was the Funding The Dream podcast series by Richard Bliss.  He invites many experienced Kickstarter project's members on his show and goes over every topic imaginable.

I learned more about fulfillment of rewards, building a good campaign, video tips, and most importantly critical tips about Taxes that could completely derail your project if not handled correctly!

In short if you fund very late in the year you will have to pay taxes on that income in the year you earned it. So if you funded very late in 2015 such as December - you will need most of that money in 2016 !

But your taxes will be due in 2015 because the income was earned in 2015!

Some people's projects have been completely destroyed by risks like this that they never saw coming so I highly recommend you do proper research if you're going to do a Kickstarter.

So here I am 18 months into this project and finally ready to pitch out to the world and ask my family, my friends, and hopefully a gamer community who loves RPG's to back me and help make this project a reality.


I was lucky enough to be recognized by Highsight on Twitch as one of the top 10 indie games of 2015, which was a really amazing recognition and really inspiring to me! It does make me feel like I just have to get my game out in front of people and it gives me hope!

But still, I fear that I'll fall flat on my face. I've done blogging for almost two years on this project , but I still feel like I have no community.

They say you have to bring your audience to Kickstarter - do not expect Kickstarter to have one for you and the fact is before this game all my products have been on other people's portals for casual gamers.

I may have sold a few thousand games but I doubt even one of them could name my game studio or even cares.

So I have very little "crowd" to bring to my crowd funding campaign.  its my biggest risk yet as an indie game dev.

Failing at this point will be big and hurt.  But you have to put yourself out there if you are passionate and believe in your self and your project. And the thing is .. I really do believe. I'm making this game no matter what because I'm truly passionate about it!

I sincerely hope that I find a community and they back my game - but even if they don't I'll be here next year hopefully about to ship this game in my next post mortem.

Until then thanks for reading and good luck in your game developing!

Drop me a comment and let me know if you have any questions or feedback about my campaign as I really would love to hear from you!

And if I may ask you ; please consider backing my project.

Thank you!