Jump to content
  • Advertisement
  • entries
    21
  • comments
    20
  • views
    1740

About this blog

Devlog of Rick Henderson And The Artifact Of Gods, eoguelite endless 2D horizontal-scrolling shoot 'em up made in beautiful pixels with Unity 3D.

Signatura.png

Entries in this blog

 

Perspective of living as an indie dev in my country

Game development is a really nice job, at least when you’re an indie, not a cog in an AAA crunching machine. You can sit in the comfort of your home and have no expenses for commuting, office rental and eating out, at least that’s how i imagine it to be. But the real question is – can you earn a living wage by doing it? You can read a lot on indie game developer hardships these days. Things are looking quite grim – Steam is not showing too much love for indies, some are afraid the subscription models will start to be a to-go model in selling video games, accessible game engines are making games easier to produce and that makes for a stiffer competition – it’s really hard for your game to be discovered. I’ve seen too many good games with lousy sales numbers because nobody know that they actually existed. A lot of devs are wondering is it really worth it anymore? Is it possible to live by making good games with niche market or do you need to strike gold with new Nuclear Throne or Minecraft? We’ll leave aside the marketing part of the story – you all know it, start as early as possible and build a community, preferably with your own brand if you released games before.
And now, let’s delve into the cold, dark world of numbers. For this analysis, i will be using some Numbeo statistics. According to them, cost of living for a single person in capital of Serbia is around $500 (without rent, which is around $200 for a small flat). It may be a bit hard too look at those numbers objectively, but i don’t know how i would survive with a salary of $500. Realistically, you need $100 for bills regardless of the flat size (if you want flat cable internet, cable TV and a cell phone subscription. Heating, electricity, water and garbage disposal have to be paid) so you’re left with $400, which is enough for you to eat (strictly at home) and maybe spend $50 on leisure. Forget about savings, driving a car and going out.
When i take my family in consideration, the math is following, to live relatively comfortably and maybe spare a few dimes on the side, you need about $2,000 for a three member family (for easier calculation, let’s presume that your SO has no income). That amounts to $24,000 a year. If you are selling your game for $10, Steam takes 30% and you are left with $7. Now, you probably think “Wow, only 2 grand to live comfortably with a family? What is this dreamland you’re living in?” and yes, Serbia IS a cheap country compared to most of the European countries and that is all fine, but my country has no tax treaty with US and it makes a lot of impact compared to other more expensive-to-live-in countries that have tax treaty with US. So, i have to give another 30% in taxes to the US. So, i’m left with meager $4.90 if i’m lucky to sell the game at full price.
But that’s not the end of taxation, i have to pay some taxes in my country too. If i earn up to $23,000, i don’t pay any income taxes, but from $23,000 to $45,000 i pay 10%, and over that i pay 15%. Let’s say i managed to earn more than those $23,000 a year and i have to pay 10% of income tax.  That means i need to have a net profit of $27,000 to earn a nice living wage for me and my family. To make a net profit of $27,000 i need to sell around 5,500 copies of the game at full price. That’s quite a number. Now, according to this article, the average game on Steam will sell about 2.000 copies and make $12.500 in revenue in its first month. The average game will make $30.000 in its first year. I’m not quite sure what do they mean by “make”, but i guess it’s the revenue. So if you’re from around here and make an average game, you’ll be left with around $15.000, which is around $1250. A fine salary that most of the people living here dream of (average is around $350-$400) and it’s ok if you’re living alone and have no family to support. But, lest we forget the cost of making the game itself. Unless you are a multitalented person that knows how to program, draw in 2D, model in 3D, rig and animate, design sound and make music, you need to spend some money to pay someone who does any of those better than you and has the time to do it. Until now, i spent around $4,000 on Rick Henderson. Sure, there’s some stuff like assets which are one in a lifetime expenditure and some of the art made will be left unused, but i need even more to finish the game (reason why i’m making an IndieGoGo campaign), so if all went perfect from the start, i think i would need minimum $5,000 to make a game of this caliber. So let’s readjust the figures. I no longer need $27,000 but $32,000 net profit so i have some money to invest in the next game, and that translates into 6,500 copies of the game at full price. How did the others do?
How some of the similar games fared on Steam? I will use the data from the big Steam leak from last July in this one, so some data may be a bit off, but not too much i presume. Taken into account will only be some games of a newer date, since older once basically guaranteed sales once they were on Steam.
Super Hydorah – This fantastic game sold only 2,073 copies. It was already selling for a year when data leaked, so i presume it didn’t sell many more after that. But the price was a bit high i must say, €20. If it did sell 2k copies at that price, that’s cool, especially considering it’s a one man game.
Starr Mazer DSP – Still in early acces, but sold a nifty 5,500 copies for 10 bucks a pop. Nice, but their press kit says three of them are making the game, and paid artist is doing graphics.
Drifting Lands – Not really your usual shmup, but fits the genre. 8,275 copies for €18,99. Also, at least two guys work there, but probably more, so it’s not much of a success.
Steel Rain – We’re getting into five figure sale numbers. A whopping 10,440 sold games, full price €9,99, but there’s almost two digit number of people in their studio, so i’m not sure how successfull this was. Monolith – 10,880 copies sold by three guys. Price – €7,99. Great success if you ask me. I suppose they sold a decent number of copies since then too. Super Galaxy Squadron EX Turbo – 25,940 at €8,19. I suppose a lot of those copies sold at a discount, and as far as i can see they happen pretty often. Now it’s on sale at €2,99 so i guess that’s closer to median sales price. There’s a lot of them there, so i can’t even presume how many of them took part into making the game actually (and reaping the profits). Sky Mercenaries – Made by PolarityFlow, team that also made Steel Rain. 30k+ copies, regular sales price €9,99, pretty good. Steredenn – These guys kicked ass. 50k+ copies made by only two of them plus musicians and a pixel artist which probably had their fixed cut. At €12,99, hell, even at half the price, this game made a small fortune for them. One game it’s like to point out to is Star Saviors, game that sells for €0,99 and has sold 300k+ copies. I haven’t played it but it’s not my cup of tea regarding rendered graphics, though i must say it looks like it feels good to play and makes me wonder of the pricing policy and what is right to do.
I didn’t take into account games like Ikaruga, Mushihimesama and Crimzon Clover, they’re quite specific and have their own audience. Bear in mind all these developers live in countries which are more expensive to live in than in my country, but also have tax treaties with the US to some extent.
Summa summarum
When i take all things into account, i didn’t move my point of view too far. I still believe that you need to have a top notch product (compared to few years ago, where you could be cool if you have a contagious game with maybe not so good graphics) to even scratch the surface. You need to start marketing your product as soon as possible, build a community and be involved if you want to have a crack at selling your game in a decent number of copies that will enable you to live nice until you launch your next game.

View the full article

FatPugStudio

FatPugStudio

 

Interview with Play! Zine

Hi Uroš, we’re glad that we finally have the chance of doing this interview. For starters, can you tell our audience a bit more about your project – what is Rick Henderson? In short, Rick Henderson is a horizontal-scrolling endless shooter. Five factions, five bosses, loads of guns, perks, great music and beautiful pixel art graphics. When you get to the end, you go on – until you leave your bones in space. How did the whole story start and where did the idea come from? You’re not really into game development business, this basically started out as a hobby, right? In 2013., unhappy with the direction my career is going, i got enrolled into Java course in a small software school hoping that i’ll change the course of my business tenure towards programming. It seemed logical to me, i was in front of the screen since C64 and i am more than average Joe in that regard. I have to admit i was totally lost, abstract thinking was really not something i was good at. After finishing another course, this time a year long one, things were much better, but i still didn’t get that „click“ in my head. I was always pragmatic and decided to try out Unity because it’s using C# which is quite popular and you can see the result immediately. I realised i liked it, the things i did started to get the shape of a real game and i decided to follow the path that was getting laid in front of me. Are you working on the project by yourself or do you have associates? Besides me,only (paid) associate i have is @lighterthief, great Dutch artist who does pixel art. I found him via Pixelation forum. Game was supposed to have very simple graphics, but cooperation with him gave birth to something new, wonderful art full of colors that revives memories of old shoot ’em up from golden era of home computers of the nineties. We know that making music is one of your passions. Are you having any plans of making some of your own music for the game and what kind of soundtrack can we expect in the game? I’d really love to, but when you work alone, time is an extremely limiting factor so i decided to pass that satisfaction to others this time. I contacted a lot of musicians on Bandcamp and managed to strike a deal with two of musicians (for now), Mlada Fronta and Cryocon. Mlada Fronta is Rémy Pelleschi from France and Cryocon is Dan Exton from USA, great guys. They agreed to lend me their music to use in the game, and i’ll be giving them all the proceeding from soundtrack and part of the funds that will be gathered via IndieGoGo campaign (if all goes according to plan). You can expect a lot of good synthwave and electro. You can listen to the 9 tracks that will appear in the game here with more to come soon. What technical skills did you need to possess before venturing into this project? After all, this is a one man job, what does one have to know to start working on a game like this? For individual engagement in the world of game development you need great organizational skills and rational approach to work. Only after that tech skills come in, which are not hard to learn. C# is a simple language, Unity itself has an uncomplicated API and web is full of tutorials which can help you learn anything. If you don’t know how to draw or make music, you can always pay someone to do it, which i wholeheartedly recommend, people that know how to do everything are a rare sort. What were the greatest challenges while working on the game, what is hard, what is dull, what is simply boring? I wasn’t really expecting that, but a lot of things are uninspiring and tedious. Finding and squishing bugs is on the top of the list, and testing is not any less mind-numbing, while waiting for compiler every time you hit the play button on a 10 year old CPU. Greatest challenge is to be consistent and do at least one task every day. Feeling of progress is very important because there’s a lot of work to do and motivation is an easy thing to lose if you don’t have a sense that you are reaching towards something. On the other hand, what part of work is enjoyable for you? Actually, i really enjoy the marketing side of the production lately which requires as much time as a game development. Positive reactions and a good-natured, quality critique are beneficial for motivation and work quality. What 2D side scrollers were inspiration for you? What do you consider good in the genre, where do you see room for improvement and innovation and how does that fit in your game? Galaga Deluxe, Project X, Xenon, Raptor, Steredenn, U.N. Squadron, R-Type, Z-Out. This genre exists for more than 30 years and it’s hard to reinvent the wheel, but from time to time some shiny gems appear like Rival Megagun or Enemy Mind and really surprise me. I can’t say Rick Henderson is revolutionary, but it combines several elements that i still haven’t seen together in one game. What would you highlight as the main characteristic of your game that should attract the target audience to fall in love with this title? Non-stop action with fantastic music and gorgeous graphics, challenging bosses and different game every time. How would you describe your experience for the past few yours during the tenure on the game? What did you learn and realize, how did it help you in your professional and personal life and how did you come out from the whole process? I certainly got out older It was painstaking, lots of sleepless nights, ups and downs. I have a family and a full time job and it is extremely hard to fit everything and remain sane and healthy. I learned not to rush things and that there’s no amount of passion that can speed up the complex and time-consuming process that is game development. Actually, good work-life balance gives the best results, which i learned the hard way. There’s still a lot of work to do, but now i’m taking it easy, step at a time. Idea behind the whole game was very ambitious. When you first shared your project with us in May 2017., there was a few game modes including Story mode. Fast forward, does everything still seems doable? Of course not! Like every beginner, encouraged by quick progression and vast Unity possibilities i bit of more than i can chew. Rick Henderson was first imagined as a complete experience for one player that we are used to in this genre: level, boss, weapon store, level again and so on. However, as the unwritten rule dictates, cut the game you imagined in half, the cut that half in another half and the you get something that you can really finish in a reasonable timeframe. Rick Henderson is still a great challenge, but doable for a one man show. One of the reasons we’re talking about your game right now is because we want to emphasize that your game has an active IndieGoGo campaign in the moment we are writing this, so everyone who is interested in the project can help directly. Tell us some more about the campaign, what are the goals, how long will it last and what can potential players expect. Campaign is in the pre-launch phase at the moment, which is used to gather e-mail addresses if a person is interested in supporting the project. You can find the pre-launch page here and leave your e-mail for news and announcement when the funding phase of the campaign starts. The goal is 3.000,00 USD, which is how much i need for one more faction, backgrounds and additional graphics works, translations… Perks that a backer can expect are beta access, early access, Steam keys, soundtrack, involvement in creating new enemies and having your name on a space blimp that will appear throughout the game. With your current experience, what would you recommend to someone that wants to make his old idea reality in a similar manner? What would you advise? Start with small, short games of different genres so you can learn as much as possible in the short time frame. Don’t be shy, publish them on the websites where you can do it for free, like itch.io. When you finally decide to work on something more serious, start with marketing immediately – indie games market is incredibly saturated and it’s hard to strike through the noise. Of course, if it’s not working out, don’t be afraid to ditch the project, you will do yourself a favor. Thanks for the conversation, we wish you luck with IndieGoGo campaign and we can’t wait to review Rick Henderson on the pages of Play! Zine! Thank you.


View the full article

FatPugStudio

FatPugStudio

 

How i made my IndieGoGo campaign, part 2

Needless to say, i made a lot of research on best time and best ways to launch the campaign. Here’s the graph from medium.com on Kickstarter campaigns from 2014. Kickstarter campaign success per monthObviously, i missed the train for December, which is one of the best months for launching the campaign. It makes sense, people spend more money in the holiday season and they’re a bit dry in the following month, which is January, and the worst month for crowdfunding campaigns. I don’t have time to wait for March, which is the next decent month before summer, so i suppose i’ll be biting the bullet, launching in mid January, maybe beginning of February and hoping for the best. Project duration is a typical 30 days. It’s silly to make it last shorter than that since i don’t have a lot of visibility anyway, but lasting longer is also not an option. Why? Psychology is a strange science, shorter durations increase a sense of urgency in people and may help them decide earlier so they don’t miss the deadline. I believe i shouldn’t press myself to launch as fast as possible, but once the wheels start turning when you press that big pre-launch button, there’s no going back and you should work on making as much people as possible subscribing for the regular e-mails that will lead to the official launch and the notification of the launch itself. They say that the conversion rate from the subscribers is a mere 5%, so if everyone leaves a basic pledge of 10 USD, i need about 6000 subscribers if i want to be sure i will reach my goal. I don’t think i’ll manage that big of a number, but i’ll keep tracking the numbers and when the number of daily subscribes start falling down, i’ll announce the campaign start. So far, i collected 24 e-mails in a few days, which is a number i’m quite happy with to be honest, considering the scope of the project and the type of the game i’m making – a niche arcade shooter. But, to be realistic, that’s not nearly enough, especially when you take the conversion rate into account. When you’re having a project like this, it’s quite natural to pay attention to even the smallest details. That said, even the time of the day when you launch the campaign is of utter importance. In my case, that will be 7 o’clock in the morning, which is just the time people get back from lunch on the east coast in the United States, which account for the largest crowdfunding contributor in the world. You get back from lunch, and before you get back to work, you decide to check IndieGoGo a bit if there’s something interesting, and there it is – just launched! Wednesday also looks like a promising day. On monday, people are in a grumpy mood and they need to get to speed to work, not much time for stuff like this so it’s a big no-no. Tuesday’s better, but not as good, and Thursday is too far off, you are usually starting to wind down and think about the weekend. So Wednesday it will be. One of the most discouraging facts from the Kickstarter statistics is that two thirds of the campaigns fail miserably. I try not to think about it too much. Maybe their goals were to far off? Maybe their campaign was lousy? To be honest, there’s a lot of campaigns out there looking for much too money for what they’re offering or having a campaign that’s written poorly. Asking for too much money is one of the main issues people tend to overlook. It’s better to ask for a smaller amount since people will pledge for something that seems achievable, fair and has constant income of pledges. If you’re on a train that’s going to be hard to catch – nobody will want to ride it. The funny thing is – when you fund the project, even more and more pledges will usually start coming. People want to give their pledge to something that already succeeded and they know they’ll get the product they pledged for. First 48 hours of the campaign are crucial on IndieGoGo, since the campaign will only appear in search results for the first 48 hours after launch. After that, you need to have at least two pledges to keep it searchable. Not only that, they recommend that you already have 30% of the funds needed secured and pledged in the 48 hours of the campaign, which, in my case, is 1.000 USD. It’s big bucks for me, and i don’t think i’ll be able to provide this via friends, family and so on. Where i live, it’s 3 monthly wages so i think it’s better that i prepare that demo for launch so i gain more traction and attract more people. So, the thing i need to do is to step up on gaining subscribers by regularly posting the progress, work on the demo and shout everywhere. Here’s the list of the stuff i did lately: I opened the account on itch.io, but the game is not showing up in search since there’s no downloadable content. There was a small surge of visitors from Twitter on the day i listed the game, but since then no views at all, only one follower and that’s it. I opened the accound on GameJolt (few moments ago), the game is also invisible there, so i don’t expect anything. I posted a teaser on r/shmups on reddit, there’s only few likes and that’s it. It’s a small subreddit, so i plan on posting the teaser and some text on few other subreddits like gamedev, indiedev, and unity2d. I posted a devlog with teaser on tigsource, hutonggames (makers of Playmaker which i use), shmups.system11 forum, there has been no significant response. Obviously, the way to increase visibility is to publish a demo which will be downloadable on itch, gamejolt and steam (when i make the profile) and then we’ll see how it goes. Launching the campaign now would fail 100%. So, off to make the demo!
Posts
View the full article

FatPugStudio

FatPugStudio

 

How i made my IndieGoGo campaign

After more than two whole years of toiling, sleepless nights, stiff fingers and dry eyes, i finally reached the point where i’m ready to show something more complete to the world and prepare for the crowdfunding campaign that will help me bring the game to a final release. While Kickstarter clearly enables a wider audience, it is not available in my country so i didn’t have much choice of a platform for crowdfunding – IndieGoGo was basically the only way to gogo (sorry for the pun). Preparing the campaign was a really tough process and i admit it took me a while with all the other things i have to do in my life.

First of all, i had to explore the possibilities and limitations of the platform and how to fit them to my needs. Albeit with a smaller reach, IndieGoGo has some clearly better features than Kickstarter. InDemand helps you gather the funds and build the community even when the campaign is over. Of course, you need to reach your goal before that, so you need to find a reasonable amount that will help you finish your product. Not too small, but not too large either. I had a lot of trouble in finding that sweet spot, but in the end i decided to ask for a bare minimum that will make me finish the game, no more, no less. Everything over that will be used for stretch goals. I have a lot of ideas and i can already figure out how much will they approximately cost, so i’ll see how the campaign goes and add them during the campaign. Another interesting feature that IndieGoGo offers is flexible funding and you are probably wondering why didn’t i opt for it if i had to choose IndieGoGo. The amswer is simple, i don’t want to have obligations of given promises if i don’t reach my goal, it would not be fair towards the backers. I need funds to make my ideas to become reality and acting in any other different way than being completely honest and transparent would be irresponsible. Luckily, i already have enough experience (that costed a lot) and have gathered data to know how much will the rest of the game cost if i want to do it my way. So herе’s a breakdown that will be visible on the campaign page when it starts: Backgrounds – You noticed that the teaser only has three backgrounds. To make the game more visually pleasing i need 20 backgrounds in 5 thematic colors (red, green, blue, purple, yellow), each costing 45-70 USD per piece, which comes to roughly 1.500 USD since, besides the regular artist hours involved for making them, some additional hours will be probably needed for fixes and adjustments.

Additional gfx works – Additional graphics include finishing the Rokh Raiders sprites (the sixth faction that has not been finished), background elements, bullets, special effects, explosions and works on the Galaxy Database. I approximate that 1.000 USD is needed for all of that. It might seem much, but bear in mind that’s only 33 hours of more or less standard artist pay, or 4 eight hour work days, which is a really, really short amount of time when you look at it. Translations – They cost around 0.1 USD per word for translating the basic user interface and options, but a lot more if i plan on translating the Galaxy Database. But for the basic translation into French, German, Italian, Spanish, Portuguese, Chinese and Japanese, i approximate that around 100-200 USD will be needed since the game does not have many words. Fees and taxes – Steam Fee is 100 USD and Indiegogo takes 5%, and then there’s income taxes too, which will come around to 10-20% for this amount.

Music and SFX – Music licenses are very expensive to obtain, but i am in contact with several musicians that are willing to let me use their music for an IndieGoGo and revenue cut. Still, it will probably come to around at least 10% of the funding. I have been a music producer for more than 15 years so the sound effects will be handled by myself. I could probably do the music too, but i don’t have enough time and there are a lot of people that do it better than me anyway. When you add all that, it comes to about 3.000,00 USD, which is an amount that i’m frankly scared of. I invested a bit more than that in the game until now, and seeing that it was enough only for the half of the graphic assets that are needed for the game of this caliber is frightening.

While the game itself is not a revolutionary product that will break the genre, i do believe it stands out a lot among lots of shmups that are out there at the moment. First of all, the graphics are reminiscing of golden age of Amiga 500 games, beautiful 16-bit pixel art with no rendered or pre-rendered 3D graphics, but with dynamic lighting. I haven’t seen it in a shmup for some time. Music in the game (at least the tracks i collected until now by Cryocon and Mlada Fronta) is damn fine and i plan to make it on par with the iconic soundtrack of Hotline Miami or old-school hits like Crusader, Unreal Tournament, Rollcage or Project X (you can listen to the tracks here).

Anyway, back to the campaign. At first, i didn’t know what could i possibly offer to the backers beside the game itself. Ok, Early Access is something that i planned anyway, so i could give away that too. I plan on selling the soundtrack separately (all proceedings will go to the artists), so that’s a cool perk to add too, but what else? When i started making the game, i had illusions of grandeur, like every fresh gamedev out there. Rick Henderson as supposed to be a huge single player experience with levels and an intriguing story behind it. When reality struck me, i decided to drop the whole predefined levels concept and i had a lot of ships and weapons descriptions left behind unused. I got to an idea that they can be used for Galaxy Database, a small book of enemy ships and player weapons with their stats, description and a small backstory for each one of them. Lower tier backers will get it in PDF, while high tier backers will be getting a nice hardcover booklet.

To further engage the potential community of backers, one of the perks will be the Community Ship Designer. Backers of that tier will have the exclusive access to hidden Discord channel where they will be able to create an enemy that will appear in the game together. Sure, it will be a challenge for me since it has to be in certain design boundaries (and maybe technically, who knows what people can think of), but i think it’s a rather cool reward.

Name on a blimp is purely cosmetic. If you really like shmups and you got a lot of dough to spare, your name will appear on a space blimp with a large display on it (think Blade Runner).

Finally, with only 5 available, you can design you own enemy (not a boss though) by working with me and a graphics guy. Might not seem as much, but creating an enemy that is interesting and balanced is quite time consuming, let alone 5 of them.

Ok, i’ve got the amount i need, backer rewards and now i need to present the game in the best possible light. I hate punchlines and single sentence descriptions, but it needs to be done. Put your whole game in one sentence. It’s like an elevator pitch, but you don’t even have the time to ride to the first floor, just poke your head through the elevator door and shout one sentence. So i came up with Endless horizontal-scrolling shoot ’em up experience with infinite replayability. Well yeah, it’s infinitely replayable, but in a way that it will never get boring. I decided not to use terms like procedural or roguelike since, honestly, i believe players already have an aversion when they read those words. It is endless since it doesn’t end, you can only die. Obviously, it’s horizontal-scrolling shoot ’em up, and i like to call it an experience, since it’s an audio-visual experience made for connoisseurs of the genre and style.

I made sure to be perfectly clear how the game loop functions, how the weapons/armor relations work, even if it’s dead simple to understand and provide as much material as possible for the players to see how the game sounds and looks like. Screenshots were easy to take, but resizing images to fit in IndieGoGo’s predefined image sizes and remain pixel perfect was a pain in the ass. Preparing a small teaser took days of work and i can’t say i’m happy with the final result in terms of video quality. Unity’s inbuilt recorder compresses the video even on high setting and artifacts appear when there’s a lot of stuff going on on the screen, but i believe it’s good enough to be used as a proof of concept and let the backers know what’s it all about.

Unfortunately, i wasn’t able to provide the demo since i think it’s too early and i’m a bit of perfectionist. I regard that as the biggest flaw of my campaign and i hope it will do well even without it.

One of the things that really makes me proud and that i want to point out is the dedication to inclusion. I want everyone to be able to play the game. I’m positive that colorblind modes will probably include more tweaking than simple filters implementation, but turning off shakes and flashes will mean a lot to someone who’s suffering from problems related to photosensitivity but like shoot ’em ups. High-contrast mode is going to demand quite an overhaul, but if all goes well i’m all for it.

My fears? Shoot ’em ups are quite a niche of a genre so i’m scared how many people will be interested in a game like Rick Henderson. Deep inside i believe there’s a lot of folks that want to see something new that’s not a bullet hell or reissue of an old classic, but a modern envisionment of the classics that marked an era.

You can find the pre-launch page here and if you had a good read and are interested in seeing this project come to life, subscribe to be notified when the campaign is launched or share it – every bit helps
View the full article

FatPugStudio

FatPugStudio

 

Ode to Nested Prefabs from a noob indie dev

His Majesty, the PrefabI must admit that i’ve been a bit what you could call ‘lazy’ for the past few months.  Why is lazy hyphenated? Well, because i’m not really lazy, i just tried to finish a game from 0 knowledge of Unity in under two years, which is not an easy task. I spent a lot of sleepless nights working, had a few burnouts, but one thing ultimately slowed down my progress to almost halt. When i finished most of the mechanics for the game and got to the most important part – making content – i simply couldn’t find any more willpower because of the tedious process involved in making hundreds of enemy waves. I believe someone with better coding skills could make a level editor and finish it much quicker, but with my knowledge, i had to do everything by hand and i kind of lost the motivation. Let’s delve a bit deeper into the problem. One of the things i really love about Unity is use of Prefabs. As someone who is not a programmer by trade, it was easy for me to relate to something drag and droppable, an object with belonging properties that is simple to instantiate and easy to manipulate without much hassle. Two years ago, one of my first questions on Unity Forums was about something that i didn’t even know what is called back then – Nested Prefabs. I couldn’t understand why instantiated objects could have child objects that have child objects who also have child objects can exist in the scene, but not as a Prefab. That pretty much broke my building blocks concept of making a game. Harsh red line reality checkAs you can see, i imagined the waves of enemies to be compiled of squadrons (as well as waypoint and single enemies, about which i wrote in my previous logs) which would be a Prefab object with lots of children objects (singular ships and their engine jets, weapon, tags for missile homing and so on). Unfortunately, Unity supports only one level of vertical nesting in the project, so while an object can have literally hundreds of children, non of them can have their own. Since i read that the Nested Prefabs are something that was planned more than five years ago and not yet in the making i tried a few assets that simulate Nested Prefabs but to no avail. You’ve probably seen the horrible reviews on the Asset Store, most of them are abandoned, buggy, slow or complicated. Since i found no decent asset that will enable me to work the way i imagined, i resorted to the usual workflow of instantiating a Prefab and populating it with components that i needed. The usual get this/set this workflowIt wasn’t too hard for single enemies, all i needed to do was instantiate appropriate objects on designated locations and that’s it. I learned a lot of things in the process, getting and setting the properties of many available components and their variables, the importance of pooling and the way it works, managing performance and so on. I must admit i had more than a handful of situations where i didn’t know how to overcome some of the challenges, but i’m grateful for them since they were an opportunity to learn something new through problem solving. When most of the stuff that make the core of the games look and feel were finished, the harder part of making a game in the true sense of words came. I won’t repeat myself too much, you can read more about my process of making waves in this and this log. In short, instead of dragging and dropping positions where i want the ships to spawn, assign the wanted behavior to each one depending on the wave structure and simply save all that as a prefab i need to: Have specific spawner types. That means single enemy, waypoint enemy and squadron enemy spawner with their locations. Make a specialized movement FSM’s for almost every enemy type that will dictate movement direction and scale of ships and ships’ children. For example, engine jet needs to be a separate object so it doesn’t flash with the ship upon bullet contact but it must be properly rotated and scaled depending on the spawning position and spawner parent of the parent (yeah, even i lost it while reading). Assign more elements to pool which slows down the compilation time and time required to start the game. Instead of pooling one ship with all the needed components i need to pool the ship prefab, jet prefab, weapon prefaband in some cases multiple weapon prefabs so the pool size for ships is actually at least three times the size in terms of object number. I’m fairly certain that it’s better to have fewer objects to instantiate regardless of their complexity (number of components attached). Manually set the spawning position of each ship in the wave. This is the worst part, it got me completely devastated. I need spawners for assigning some general behaviors and general screen position, but all the fine arrangement of ships in the wave must be done by hand. Not completely, but i need to put the ships in the scene so i can get their coordinates, then copy them into the spawning FSM of the squadron. Sure, i need to position the ships with nested prefabs too, but only once and that’s it. Doesn’t sound like much of a fuss, but imagine having hundreds of waves to make with some of them having double digit number of enemies that need to be repositioned upon spawning. Set Position, Set Position, Set PositionI’m sure some people don’t even use prefabs but create instances and populate them on runtime and i presume some more C#-savvy people will find nothing unusual in this and develop their own systems for handling the situation, especially big teams. But i’m neither of those and, for the time being, i really need nested prefabs to finish what i’ve started. Prefabs are great game building blocks that further upgrade great tool that Unity already is and we should be really glad they are taking into account the needs of small or one man teams. I’m anxious to see further improvements that the new prefab system will bring to the table in the future versions.     The post Ode to Nested Prefabs from a noob indie dev appeared first on Fat Pug Studio.
View the full article

FatPugStudio

FatPugStudio

 

Scoring System Design

One of the most important aspects in a shoot ’em up is certainly score. Being somewhat a niche of a genre, it has a clear competitive edge among its players. It certainly lacks fulfillment in terms of engaging story, but the adrenaline rush in combination with the goal of attaining higher and higher scores or even being on the top of the leaderboard is something really hard to beat and is specific to the genre. With that in mind, a good shmup scoring system has to be easy to understand and engaging at the same time. While it sounds simple, it can be quite hard to achieve a good “funness” factor while keeping it engaging and skill related. For Rick Henderson and the Artifact of Gods, i dissected a ton of old and new shoot ’em ups in the search for the perfect scoring system i like. One of my all time favorites is certainly Galaga Deluxe (or Warblade for PC folks) for Amiga 500 from late Mr. Edgar M. Vigdal. Besides coins used for shop purchases (which this game won’t be using until singeplayer mode is done), in Galaga you can collect gems too. Those little cuties come in different shapes and colors and each one yields a different amount of points. While not groundbreaking, it adds another layer of depth to the game besides dodging as some gems are really worth running for through a rain of bullets. Naturally, tougher enemies have higher percentage of dropping rarer gems that yield higher score addition. Another form of bonuses that can be picked up are medals. Far from my knowledge, medaling is prominent in shoot ’em ups. The concept is easy: you pick up differently colored medals, when you have the whole set, you get awarded a rank at the end of the level and the medal collection is resetted when you start the next level. You guessed it, ranks are just another name for total bonus multiplier at the end of the game. There is a total of 9 ranks you can attain (the first being the multiplier of 1, which is your default rank): Recruit
Private
Corporal
Sergeant
Lieutenant
Captain
Major
Colonel
Marshal
Commander Complete randomness in spawning those can be infuriating for players with higher skill cap, but i find it refreshing to have a bit of a variety and a possibility for the medals already collected to appear again. Below you can find a weight distribution chart for the medals. When none are collected, the chance for any to spawn is equal. However, as the number of collected medals increases, the chance for already collected medals to appear diminish by 1/5 (or 20% if you like it that way). I haven’t done the exact maths, but the chance for already collected medals to appear is not that large. Of course, for collecting already collected medals, you get a nice, juicy score bonus, so they are worth catching too! Multi kill bonuses! We all played Unreal Tournament 2004 back in the day. It had a nice feature of multikills which i use in my game in a bit different form. For those who haven’t played it, you get multikill for killing two enemies in a row without dying. As your kill count progresses (again, without dying) you get megakill, ultra kill and so on. In Rick Henderson and the Artifact of Gods it functions based on time between two kills. When you kill an enemy, an invisible timer starts counting down. If you manage to kill another enemy until the counter hits 0, you get double kill and the timer resets. If you manage to get another one until timer counts down, you get a multi kill, all the way to monster kill. Of course, every additional kill is awared with more and more points. This is usually possible with area of effect weapons (explosive ones) and weapons like Railgun, which can go through multiple enemies, encouraging player to invest more skill in the game. Grazing bonus is usually omnipresent in bullet hells, a hardcore subgenre of shmups. It encourages the player to “graze” bullets, ie. pass very close to them without getting hit. Design itself was a bit harder to implement since it involves tracking multiple bullets at a time getting into the graze range and checking whether they hit the player or not.  While not neccessary for the gameplay since i don’t want it to be bullet hell, it’s one of those things setting apart rookies from hardcore players that want to get the most out the game. And finally, the good old bonus multiplier which adds up with every destroyed enemy, gets lowered when you get hit, and reset at every waves end. It goes well in combination with grazing bonus, making you get closer to the bullets but not get hit. It also serves as a kind of damage control system. Since i gave up on the idea of having a 0-100 healh bar and chose a 10 life bar instead, hits from tougher enemies take more of your bonus multiplier down. I believe the score mechanics are very easy to understand and will add up much to the investment of the player and the adrenaline pumping of the true genre players. The post Scoring System Design appeared first on Fat Pug Studio.
View the full article

FatPugStudio

FatPugStudio

 

Playing with lights

Every now and then you have to change your routine to avoid boredom and relax. So, i started playing around with light to add some depths. Looking good so far!   The post Playing with lights appeared first on Fat Pug Studio.
View the full article

FatPugStudio

FatPugStudio

 

Weapon upgrade system designs and limitations

I’ve been contemplating on design of the weapon system and upgrades for a lot of time. I wanted the game to be based on skill but have a variety which would add to the replayability of the game at the same time. Here are the basic definitions i have decided on: Game will contain about 30 weapons Every weapon can be upgraded 4 times (levels 1-5) Ship has two weapon slots available, you can freely switch between weapons in game You can’t have same two weapons equipped You eject the currently active weapon by picking up a new one that’s different For example, you have Pulse Gun Level 1 equipped as active weapon and Biter Level 1 equipped as inactive. After blasting the enemy transport you come across Ripper and pick it up. Since you don’t have it equipped in any of slots, it will replace the active weapon and eject Pulse Gun Level 1. If you wanted to replace Biter, you could simply switch weapons to make Biter active and replace it by picking up Ripper. This will be a common occurence for adapting to the enemy types because of their vulnerability or resistance to certain type of damage (ballistic/explosive/energy/special against normal/armored/shielded types of enemies). I could make things simpler in design and coding by simply omitting the part where the replaced weapon is ejected since there’s a small chance of picking it up by accident since it involves pressing a key while you hover over the weapon. However, two player mode requires that feature for the weapons to be interchangeable between players and that is a great way to improve cooperation, gameplay and combined firepower. Due to some design limitations i had to make a hard choice that can affect the future gameplay on upgrading the equipped weapon and few solutions came to my mind. 1. You can only upgrade the weapon if you pick up the exact same weapon. That way, either equipped or not, the weapon in players possession is upgraded to the next level without any ejection which only happens when you are picking up a weapon you don’t have equipped on any of the slots. While challenging with high long-term impact on decision-making, you only have 6% chance of getting the same weapon from the transport which is slim to none and could severely hamper the player experience. If weapons had only one level the approach would be viable, but with total of 150 weapon levels it would only be frustrating. 2. Whenever you equip a weapon that is not equipped it is always at level 1, but when you upgrade any of the weapons on ship to level 2, the weapon you replace the level 2 weapon with will also be level 2. Basically, if we modify the first example a bit so the active weapon (Pulse Gun) is level 2 and inactive weapon (Biter) is level 1, when we pickup a Ripper instead of Pulse Gun it will automatically be upgraded to level 2. Opposite to first approach, it is less challenging and encourages experimentation, but it comes with a design problem which i’ll explain thoroughly. When we picked up Biter it is upgraded to level 2 on the ship and Pulse Gun level 2 is ejected. This enables us to switch Biter to active weapon, pickup the level 2 Pulse Gun, eject the Biter, and then pick up the Biter again which will automatically be upgraded to level 2 now. While requiring a bit more speed to do it in a chaotic environment i would considering it cheating since you’re upgrading both weapons that way and that is certainly not something i plan to implement. As i noted in the introduction, i could simply disable the weapon previously equipped to be ejected, but that beats the idea of switching weapons between players which i find to be a great gameplay feature of a co-op mode. Maybe i’ll disable the feature of ejecting only for single player mode for now. 3. Make weapons upgradeable only by picking up the same weapon as equipped, but increase the chance of spawning a weapon you already have The maths on this one are simple, though a bit tedious to code. You have 25% of transport spawning active weapon, 25% of spawning inactive weapon and 50% chance of spawning a new weapon. This comes with a different kind of trade-of. Though 25% is a lot it may happen that you rarely run into a weapon you want to upgrade. On the other hand, you may always run into a weapon you already maxed out. This discourages experimentation since you will always want to hold on to your maxed out weapons, no matter how good or bad they are. There are no bad weapons per se, but holding on to weapons of the same type greatly decreases success. 4. Weapon upgrade pickups Though not originally meant to be implemented, this could pose a good solution combined with approach 1 or 2. It is simply a kind of a joker card which levels up your active weapon without worrying if it’s the same one. If you pick it up, the active weapon gets upgraded and you just keep on blasting. Which solution would YOU like to see implemented? The post Weapon upgrade system designs and limitations appeared first on Fat Pug Studio.
View the full article

FatPugStudio

FatPugStudio

 

Spawning System Overhaul and overcoming the obstacle of enemy pattern making

The Grid Wow, it’s been a while, but things are moving forward slowly but surely! I’ve been busy with lots of coding and programming enemies and i encountered some difficulties in proper positioning. On the image below you can find how the spawn points looked (5 spheres on each side) and how they look now (the red X signs) Obviously, 12 times more spawning points offer much more flexibilityObviously, it offers much more in terms of positioning. More than a year ago, when i first started working on a spawn system i wasn’t apt enough to make it the way i wanted to (grid system) so i had to be satisfied with only a few spawn points and additional repositioning upon instantiating. Needless to say, it adds much more work to simple spawning and positioning of those enemies. By using this handy tool from the asset store (https://www.assetstore.unity3d.com/en/#!/content/20502) i created a grid made out of objects completely automatic. A fine tool indeed. After that, i simply added those to the hash table and now i can simply reference the object whose position i want the enemy to use as spawn point and voila. Besides using it to spawn enemies already in a pattern, i can use them to actually create random patterns on runtime by referencing a different object from the hash table upon predefined parameters to avoid completely random clutter. Not only that, a finer grid enables me to avoid spawning the enemies too close to each other or overlap. Since i’m using Core Game Kit for spawning, i’m waiting for the developers to implement the feature based on sphere raycasting, i.e. if there’s an object of certain tag or layer (enemy) in a defined range, the system won’t spawn any more to avoid the overlapping. It will work great with the system i made and described few devlogs earlies which is based on enemy pool values and enemy quantities. Also, Easy Save 3 Beta will soon get a full release (i hope VERY SOON) which will enable IMPORTING variables from a .csv file. It will be of an immense help for tweaking the gameplay. Enemy Pattern Making (Squadrons) I must admit, though i am passionate about making a game, some things are quite tedious. I’m having problems with making enemy squadrons, and the way i make them is so boring and uninspiring it really halts my progress. Before i was well into Unity engine limitations on nested prefabs (only one child per object, i.e. child cannot have it’s own child as a prefab, only when instantiated on runtime due to way serialization works) i thought it was going to be a breeze, i just drag and drop enemies in a formation, put them under a parent prefab and voila! Except it doesn’t work like that. All of my enemy prefabs typically have two children, Gunpoint and Thruster. Gunpoint hold the shooting logic and muzzle flash animation, while Thruster has the, well, thruster animation. It is on a separate object to avoid being colored with the rest of the enemy ship when it changes color on hit by a player weapon. So i guess i’ll keep my work and make an empty squadron prefab which will spawn and then spawn the enemies in a desired pattern coded into it. That’s all nice and dandy until you actually start working that way. No more cosy drag and drop, just selecting what to spawn, input coordinates and hit play too see what you’ve done. If something’s not positioned correctly (it usually isn’t), reposition the enemy, copy the coordinates, stop, and paste them. Repeat 10 times for 10 enemy objects in a squadron, and i should have hundreds of them! Horrible! Prefab with multiple children with position setting on runtimeSo i decided to change my ways. I need to make a reverse approach. Instead of creating an enemy prefab with all the children attached, i’ll attach the Gunpoint and Thruster on instantiation, which is only a two step process compared to setting the position of multiple enemies inside the squadron. This way, i have a clean enemy prefabs without children which i can joyfully drag and drop into positions i want and simply save them under a prefab which will be used for spawning. Prefab with multiple children instantiating on runtimeThough it is a bit more work initially, it provides an immense saving of time later and makes it more visual, fun and intuitive to work with. The post Spawning System Overhaul and overcoming the obstacle of enemy pattern making appeared first on Fat Pug Studio.
View the full article

FatPugStudio

FatPugStudio

 

Backgrounds work

I bought this little fella (http://www.wacom.com/en-br/products/pen-tablets/one-wacom-m) a while ago but i never found time to play around with it. This weekend was very hot so i was mostly home and i’ve drawn a background for the game, hope you dig it. Took me a few hours. The post Backgrounds work appeared first on Fat Pug Studio.
View the full article

FatPugStudio

FatPugStudio

 

7 ways to avoid burnout

Burn-out, in shortest possible, is a state of physical and mental exhaustion. Is is caused by too much work and stress, and not enough rest and sleep. It can lead to severe health problems, with the smallest one being clinical depression. Apparently, it is very common in game development professions. I started working on Rick Henderson And The Artifact Of Gods a year and a half ago. First, everything was going fine. Fueled by passion and motivation, i stayed late many nights and used weekends to recover from that maniacal tempo. Then the weekends weren’t enough. I started barely waking up and functioning very lousy. Eating too much to get energy, drinking too much coffee. Quality of work started to fall, and it took me more and more time to finish stuff. My concentration was going down. I got frustrated when i simply couldn’t stay up anymore because i lacked energy. When i did stay up, it was a torture of mind and body with work quality falling down even more. Depression started to creep in. A vicious circle of guilt and exhaustion that ultimately led to a month pause during which i couldn’t even look at my game. After one big and one smaller burnout (the other one was a reminder) i experienced, i learned a good lesson. Making a game is not a 100 meters sprint of passion, it is a 42 kilometer marathon that requires perseverance, determination and motivation. To stay determined and motivated we need to take care of our bodies and minds. Typical, a bit satirized, representation of a programmer is a skinny or a fat bold guy with glasses and a generally neglected appearance (stubble, lousy wardrobe and so on). Turns out, there’s a grain of truth in every joke. This type of work takes an enormous amount of time and while not physically demanding it DOES impact the body, and with it the mind enormously. I am determined to avoid burnouts in the future, and here is what i can recommend to you to avoid them too. Sleep Well Developing games can be addictive, especially when you get into The Flow (or in the zone, as it is sometimes referred to). As i already have a full-time job and family, the flow usually comes late at night, when family is asleep and after an hour or two already in the works. I get completely immersed and have a distorted feeling of time and space, hyperfocus and increased productivity. If you think you can use this time well, make sure you can be absent from the work tomorrow so you can regenerate and have a good night of sleep. However, i wouldn’t recommend doing this often. It’s better to save that energy when you’re close to some goal that requires a large amount of work that you feel you must do in one push or you will lose focus if you split it in chunks. Sleeping less than 6 hours increases obesity (you feel like eating more to compensate for lack of energy), chance of stroke, heart diseases and diabetes. Not to mention that you will be forgetful, need lots of coffee or caffeine drinks to make it through the day and be irritable as hell. Depression also creeps in. Make sure you sleep at least 7 hours and try sleeping in on weekends if you can. Eat healthy  I know it sounds obvious and like a cliché, but if you are mid thirties like i am, this fact needs to be repeated all the time. Make time to prepare a healthy, balanced meal. Eat vegetables, fruits, fish and meat. Besides making your own meals is the healthiest choice of all, it helps rest the mind by physically and mentally distancing you from computer. I find cooking relaxing and sometimes similar to long bicycle rides when my mind wanders off. Drink water and tea, not sodas full of sugar. Avoid too much caffeine, it actually makes you harder to concentrate if you overdo it, makes your brain foggy, causes caffeine crash and messes up your sleep quality when taken too late (if you manage to fall asleep). While we all love coffee as a stimulant, don’t forget that it is addicting and withdrawal symptoms can last very long, so it’s best to consume it in reasonable amounts. Exercise Besides sleeping enough and eating healthy, exercise is one of the most important things in whole thing of staying mentally stable when working on a game.  Get your juices flowing, ride a bike, pump some iron, run, cross fit, whatever makes you sweat. You will feel better, happier, healthier, have more energy to work, need less sleep, wake more rested and most important of all, have your brain functioning better due to improved blood flow. If you are like me, sitting in the office for 8 hours staring at a screen (like most of us actually) and then doing that again in the afternoon, be realistic, it does horrible things to your body and mind and you must be fit to endure it. Don’t forget friends and family Life doesn’t just stop because you are working on something that takes an enormous chunk of your spare time. You’ve got a family to spend time with and take care off and friendships you have to cherish. Socializing helps to take the mind off of your work, relax or perhaps vocalize the things that worry you or you are having problems with in your development. Even if someone is not into that, a fresh and naive look at your problem can be an eye opener. After all, friends and family is all that matters in the end. Take days off No matter how great your passion and motivation are, being involved in anything 24/7 is just not good. You will get saturated, lose objectivity of your work and ultimately repelled by the sole sight of computer. Make goals on which you are working on, and say to yourself “when i finish this boss design, i’m going to treat myself with 3 days off”. And do it, feel satisfied with the work you’ve done and enjoy in your days off without guilt because you deserved them. Relax (away from screen if possible) Since you are probably already a full-time screen starer and you stare some more when you get home, i recommend you get some relaxation that doesn’t include staring at any type of screen. Cooking is a great way to relax, walk your dog without your smartphone, pet your cat for hours, read a book or a magazine, make a bubble bath, lay on the floor and stare at ceiling thinking about nothing, ride a bike out of town. It’s all relaxing and helps soothe your exhausted and work saturated mind. Work on something different If you really feel the need for working on your project, switching between the things you do often helps to avoid saturation. When i got bored of working on enemy waves, i switched to searching for sound effects and making some music. This development blog is also part of my avoiding burnout by doing something different. When you get sick of coding you can do some drawing if you’re apt at it, making music, writing a storyline, whatever jingles your bells. Just make sure you track your goals and don’t spread yourself too thin as it lowers the productivity and quality of work. Managing it all That’s all nice and dandy, taking care of yourself, but when you will find the time to work on the game with all this relaxing, exercising and cooking? It’s up to you to figure it out and integrate it into your lifestyle. It’s probably not going to translate into a lot of work hours, but what matters is the quality of those work hours. Most helpful thing if you are not able to work regularly on your game (i.e. have a family and a job) is to run a development log. Not just any, but a very tight one, with clear goals cut into smaller chunks you can handle and work on whenever you can grab some spare time. Besides knowing where to continue with your work after a few days of AFK, it will be motivating to track your progress. I’ll probably write more about it next time. Stay healthy and take it easy! The post 7 ways to avoid burnout appeared first on Fat Pug Studio.
View the full article

FatPugStudio

FatPugStudio

 

Dev Log #4

The Anatomy Of A Roguelike Endless Mode Endless Mode, for now, will be the backbone of the game. I don’t much like the term, but let’s call it Roguelike. For those not unacquainted with the term, it’s pretty simple. The basics of roguelike games are permadeath (which means you start all over when you die) and procedurally generated levels. Procedural is basically a fancy catch-phrase for controlled random. It means that the levels are made by parametrized procedures that keep the random factor under control by defining the aforementioned procedures, certain value ranges and all sorts of parameters you want randomized. Anyone ever trying to make a completely random piece of any sort of art, be it visual or sound, knows that it usually turns out horrible. With the assistance of parameters like harmonies and scales in music, or color palettes, fractals and similar stuff you can get bettes results, but without the human input it’s usually a meaningless chaos with only glimps of something human-like. Then what is it good for you ask? Well, with proper parametrization, you can get a gameplay experience that is different every time you play the game, yet it has the same essence and feeling. How does that work in my game, more precisely, in the endless mode? The most obvious thing that can be parametrized is the appearance of enemies on screen, so how do we do that? Triggered Spawners For spawning enemies, we need spawners, predefined locations on the screen where the enemy ships appear. Since we want the illusion of ships flying IN the visible part of the screen, spawners are set OUTSIDE the visible part of the screen, just a little bit beyond camera frustum. There are a total of 20 spawners, 5 for each side of the screen, and each of them spawns enemies by the command sent to them. That command, in the form of a triggered custom event (hence the name Triggered Spawners), is chosen randomly by a set of rules. Rules are not made to be broken In opposite of the old saying, rules in roguelike game must be well designed and not broken, unless you want your whole game to be broken. A tight set of rules need to be implemented to the enemy spawning system for it to be challenging enough, but not too hard and various enough, but not too random. So besides the variety, by making the rules for a procedurally generated Endless Mode i came up with something i call the Adaptive Difficulty System. Here’s how the whole thing works: You start the game with 0 Experience Points (the first variable), empty Enemy Value Pool (the second variable) and empty Enemy Array (the third variable, let’s call it Enemy Counter from now on). Experience points are the core to the system and a lot of stuff depends on them: You earn them by destroying enemies. Enemy Value Pool is the value of all enemies present on screen. When they appear, their value (based on their characteristics, HP, weapons, etc.) is added to the pool. When they are destroyed or they leave screen, their value is subtracted to the pool. The Enemy Array is simply a counter of the enemies present on the screen, when the enemy appears, it’s added to the array, when it disappears by means of leaving screen or death in flames, it is removed from the array. The thing is, Enemy Value Pool has a limit that is based on your experience level and it is raised higher as you earn more experience by destroying enemies. Trigger for unlocking more complex and harder waves, new types of enemies and upgrading already unlocked enemies. Trigger for bosses appearing, and transports with pickups appearing (that means no level is of the same length). Enemy Value Pool works in conjunction with both experience points and the Enemy Counter and it is crucial for the difficulty level adaptation. The game will never spawn more enemies than the pool can hold, so it ensures a gradual progression in difficulty based on your skill. If you’re not such a good shot, experience will rise slowly, and with it the pool size. If you are a hotshot and hit ’em dead on the spot, you will progress much faster, get upgrades much faster and get to the bosses faster. So what’s the Enemy Counter for? Тhe Enemy Pool Value has a certain limitations without it. You can have a pool half empty, but a lots of small enemies on screen that already pose a challenge by sheer numbers. Based by Enemy Pool Value only, the system will start an event of filling it up by spawning more enemies. The Enemy Counter serves as a fail-safe system against this. Instead of spawning more enemies, it will either delay further spawning if the number of enemies it too large, or perhaps launch one big enemy to add some variety to the situation. Simplified Schematic of Adaptive Difficulty SystemEnemy Waves As stated before, enemy waves are spawned in a controlled random manner, featuring procedural and hand-crafted elements. Procedural elements would be random number of single enemies moving on their predefined agenda or via paths with their numbers and type defined by experience points, while hand-crafter ones are squadrons. Squadrons They have the largest number of variety, but they can be painstaking to make if a large number of ships is involved. For example, this is a basic one, Marine Carrier in the escort of five Provokers, six ships total. A typical representation of hand-crafted squadronDue to Unitys limitation of nested prefabs, i can’t just pop them into scene view and save the whole squadron as a prefab (which would be really awesome and speed things up), instead i have a prefab which instantiates ships on defined coordinates in local space. That needs a lot of tweaking, entering values manually then pressing play to see where they are actually positioned. In the whole process, waiting for Unity to start the game to see where the ships are spawned takes the most time. Obviously, the time spent is the largest con, but the pro is that i can simply replace prefabs in the squadron in a blink of an eye. That means i can change those Provokers escorting the Marine Carrier with another ships in only a few seconds, or even set each position to spawn a random ship, thus making the ships following the carrier different each time and even spawn different ones according to the players experience level. When you take into account around 40-50 ships made until now, you get the idea how tiresome can sometimes be to make all these squadrons, but it keeps the game away from being a procedural generated crap, it keeps the randomness factor but in a structured way. Random Number Range Single Enemies Now this is the actual procedural generated crap that is to be avoided, but when used properly it functions great. What does that title actually mean? There are several enemy spawn points scattered all around the screen, by utilizing this approach, depending on certain variables, they will spawn single enemies that follow their own behavior, be it the regular “move forward and shoot” or something else. There are some cool thing regarding this. For example, i can spawn 1, 2 or 10 ships in a random pattern based on the players experience level or number of ships already on screen. They act like fillers, we already have one or two squadrons on screen, so let’s drop a few more small baddies that do their own thing. It also keeps the players on toes since they don’t know what to expect. A horrible drawback is that things can get too random if not controlled by various parameters that need to be finely tuned, like mutual distance that avoids overlapping the sprites. Enemies That Move Via Paths I’m sure you’ll agree that the game would be very boring if all the enemies would just move forward towards players side of the screen, no matter how many types of them there is. Using paths to move the enemies further deepens the variety and the semi-randomness factor of the game. Obviously, paths can be used for both Single Enemies and Squadrons. They work great for single enemies since we can set a wave to spawn, let’s say, 5-7 small ships and then use a path that’s branching, like this: An example of a branching waypointIn this example, when the ships get to the first waypoint (purple square in the upper part of screen) they will do a check which will apply random branch choice, some will keep moving forward towards the left part of the screen, and some will circle around and go back right, or maybe sometimes we’ll set them all to follow the same path, so for a path like this, we actually have three outcomes: all follow path 1, all follow path 2, all branch random, which is flexible and great. Using paths in Squadrons take a bit more time to work on, but they add further variety to squadrons. The Provokers following the Marine Carrier in the first picture may spread or fall back after a while. Another important option that using paths gives is the easing of movement. Ship may start moving slow, than speed up while moving down the path. Or other way around. That can be randomized to, per ship, squadron, or a whole wave. It gives a lot more natural feeling to movement since ships moving at the same speed constantly may feel mechanical and boring. Easing types that allow for more natural movement  In Out Expo Ease type in actionUtilizing all this stuff drives the game away from the classical “memorize the pattern while moving on rails” type of play. It takes a lot more time to work on but definitely keeps every game session exciting and fresh and rises replayability to a whole new level. Unfortunately for some, and in contrast to a usual Roguelike practices, not using seeds for procedural generation means you won’t ever be able to replay the game you just played, but i see it as a great thing. Further randomizations While not essential for gameplay itself, backgrounds are randomly changed with each level. But what IS essential for gameplay are the Random Events that come with some of the background. They are created in a brief moment of whiteout when ship enters the hyperspace after defeating the level boss and further improves the challenge and replayability. Some of those include meteor rains, ion storms or asteroid fields, adding up to the difficulty, variety and that juicy bonus multiplier. Weapon upgrade system overhaul Last, but not least important is the overhaul of a weapon upgrade system i spoke about in the last devlog. After a few weeks work it turned out that the weapon pickup and upgrade system is not functioning really well when handling the pickup after the first weapon switch. I refactored some array related stuff regarding the active/inactive weapon status and now it works like a charm. Weapon Upgrade System RehaulIt can be further improved by introducing a case-switch instead of all the yellow colored states which i will do in the next iteration. It will further simplify the machine, but i don’t think it can go simpler than that, at least using the state machine. The post Dev Log #4 appeared first on Fat Pug Studio.
View the full article

FatPugStudio

FatPugStudio

 

Aaarrr!!!

Pirate faction led by mighty Thoraxx!The post Aaarrr!!! appeared first on Fat Pug Studio.
View the full article

FatPugStudio

FatPugStudio

 

Dev Log #3

Intro Turns out that thing aren’t always simple as they seem at first glance. I spent more time than planned on overhauling the weapon pickup and replacement system i wrote about in the previous dev log. Apparently, despite the system being laid out well, there were some hurdles that appeared. First of all, the weapon switching system that was meant to be extremely basic and function by simply activating and deactivating children objects (weapon objects with firing FSMs) on the gunpoint of the ship proved too common for the concept of weapon equipping, upgrading and dropping during the game. I upgraded the system and while it’s very complicated and probably can be laid out a lot simpler, it works as intended. The setup Upon starting the game, Player is spawned, its child Gunpoint, and Gunpoint children, Basic Weapon Object (Level 1 out of 5 weapon) and Empty Weapon Object. You’re probably wondering why would i put something like Empty Weapon when it’s not even used, but we’ll get to it. Every Weapon Object has two FSMs, Main FSM, used for the upgrade system, and Firing FSM, used for firing the weapon. Gunpoint object stores the Weapon Switch FSM. Bear in mind that Weapon Object can also be Weapon On Ship, or a Weapon Pickup, depending on the state in which it is and the fact that Player can have two weapons equipped, but only one active at the same time. Weapon Upgrade System – how it works? Main FSM controller on the Basic Weapon Object enters the first state. It searches for the Gunpoint object (place on the ship where it will be spawned. Search is done by tag, since it is quicker than searching for it by name). When it finds it, it stores it in the variable. By checking if the Weapon Object is childed to a Gunpoint or not, the Main FSM is branching in two directions, which determines if it’s really a weapon equipped by Player, or a Pickup waiting to be collected. Shorter branch is executed is if the Weapon Object is a child of the Gunpoint object. It is then stored in the Weapons On Ship array, and the Main FSM finishes it’s job for now. That means that it is a weapon equipped by Player and it can be fired. If it is not childed, it means it’s a Pickup (drifting in space, waiting to be collected), its Firing FSM is disabled, a child which is an animated circle indicator for easier visibility is activated and the state machine starts its next event. Weapon Object starts measuring distance from the Player. When the distance drops below defined value, Weapon Object can receive the key command from the Player, otherwise, it’s non-responsive to key press. In game terms, when the Player hovers over the weapon, by pressing key following states can occur: Simplest case occurs ff the same weapon type of maximum upgrade level exists on the ship (checked by iterating through the Weapons On Ship array). “Weapon is at maximum upgrade level” message appears, the pickup eventually leaves the screen and it is despawned. If the same weapon type of lower upgrade levels exist on the ship, it is upgraded. If the pickup is of the same or lower level than the weapon on the ship, the weapon on the ship is upgraded by one level. But if the pickup is one or more levels higher than the weapon on ship, the weapon on the ship is upgraded to that level. So, you get a pickup and it upgrades your weapon by one or more levels and it disappears. In game terms, it sounds simple, but actually there’s a lot of mechanics behind it. For example, Player is equiped with Level 1 Weapon, and there’s a Level 1 Weapon Pickup which we collect. Level 1 Weapon Pickup iterates through the Weapons On Ship array, and it finds the Level 1 Weapon of the same type. It gets the position of the Gunpoint object, spawns Level 2 Weapon and adds it to the Weapons On Ship array. It also checks if the Level 1 Weapon in the array has its Main FSM enabled or not. If it is enabled, that means it’s an active weapon (we’ll also get to it when we get to the Weapon Switching mechanism), which means that the Level 2 Weapon that is spawned should also be active which is done by activating Firing FSM on Level 2 Weapon nad adding it to the Active Weapon array (needed for the Weapon Switching mechanism). Firing FSM on Level 1 Weapon is disabled, it is removed from the Active Weapon array, removed from the Weapons On Ship array, Level 1 Weapon equipped on ship itself is despawned and Level 1 Pickup is finally despawned at the end of the last state. If the Level 1 Weapon on ship is inactive (its Firing FSM is deactivated), the Level 2 Weapon also spawns with its Firing FSM deactivated, but is not added to the Active Weapon array. What happens if the Player is equipped with one or two weapons that are different from the pickup? Things get a bit complicated there. If Weapon On Ship array does not contain any of the levels of the Weapon Object that is the same as the Weapon Object pickup, a Replace Active/Replace Empty state is entered. Remember the Empty Weapon object from the setup? It is used as a placeholder when picking up a weapon that is different from the basic equipped weapon. By iterating the Weapon On Ship array and finding no weapons of the same type but finding an Empty Weapon object, it is simply despawned, removed from Weapons On Ship array and replaced by the picked up Weapon Object. Since it is not active, spawned weapon Firing FSM is also not active, thus not added to the Active Weapon array. A different Active Weapon acts similar to an Empty Weapon object if all slots are taken. It is removed from the Weapons On Ship array, removed from the Active Weapon array, deparented from the Gunpoint, its children activated (circle indicator that makes it visible more better on screen), and the pickup is spawned on the Gunpoint. As i said in the beginning, whenever a Weapon Object spawns, it immediately checks if it is a parent of the Gunpoint or not, and then added to the Weapons On Ship array or not. Switching Weapons Finally, switching the weapons. First we need to make sure that the Player can’t cycle between the equipped weapon and the Empty Weapon object. As long as the Empty Weapon is in the Weapons On Ship array, cycling is not enabled. When it is no longer contained in the array, Player can freely switch between weapons. Every switch gets the first and second index numbers of the Weapons On Ship array, stores them as Weapon 1 and Weapon 2 variables, enables and disables Firing FSM on them, adds the Weapon Object with enabled Firing FSM to the Active Weapon array, and removes the Weapon Object with disabled Firing FSM from the Active Weapon array. We need the information about the Active Weapon so it can be replaced with the pickup that is different from it. That enables the Player to upgrade the weapon of the same type as the pickup on ship whether it is active or not, or select which weapon will be replaced (if both are different from the pickup) by simply switching weapons to active or not. Complete system for upgrading and replacing weapons. Thing is – every weapon level object needs to have one of these.  The post Dev Log #3 appeared first on Fat Pug Studio.
View the full article

FatPugStudio

FatPugStudio

 

Dev Log #2

It’s been almost two weeks and i’ve been very busy with my day job so i didn’t manage to spare too much time for game, but i finally finished (for me) a very complicated thing – upgrade and weapon switching system. Player starts out with one weapon. During the game he can pickup a variety of weapons from destroyed cargo ships. The first time he picks up a weapon, it is added as a second weapon, and player can switch between them according to situation (bullet, energy and missile weapons don’t deal the same amount to normal, armored and shielded enemies). When another weapon appears as a pickup, two scenarios are possible: if the weapon is already equipped, it gets upgraded and the pickup despawns. If the weapon is already at maximum upgrade level, player is notified via on-screen message and the pickup stays where it is. If the weapon is not equipped, currently selected weapon is replaced (dropped as a pickup, while pickup spawns on player). While dropping the weapon is not very important in single player game and complicates the situation a lot, it is handy in 2 player game, where one player can drop a weapon for the other player to upgrade his weapon. The handy thing is that when a player drops, for example, Hyperblaster Level 4 and the other player picks it up, he’ll get the Level 4 Hyperblaster too, not level 1. Since there are (for now) 23 weapons in game and the only way to upgrade them (besides universal weapon upgrade pickups) is to pickup the same weapon, that will be very cool in terms of player cooperation. Here’s a shot of an FSM: Spaghetti codingBasically, when the weapon spawns, it checks itself if it is a weapon or a pickup (by checking if it is parented or not). If it is a weapon, that means that it is player equipped and it is added to the array and the variable is stored if it is in slot one or slot two (required for weapon switching during the game). If it is a pickup, distance check state is activated. Player can only pick it up if he is closer than a defined distance from it (by pressing space, so no accidental pickups are possible). When he picks it up, it iterates through the array to see if it will replace the existing weapon (if no weapon of same type is found) or upgrade it (if weapon of same type is found). If it replaces it, the existing weapon is dropped (which means it is despawned, removed from array, spawned on location of a pickup with its firing scripts disabled and pickup indicator enabled, while next level weapon is spawned on gunpoint with its firing scripts enabled and pickup indicator disabled).
Weapon switching is, compare to the upgrade and pickup system, a walk in the park. Stored weapons are simply activated/deactivated by pressing the switch key. Scripting this thing alone would probably take a lot more time than it did, so using Playmaker did the job pretty quick since i can try something out in a matter of seconds, not waiting to write a couple of lines with risk of making syntax errors. But, here comes the downside. Instead of making the script that can just be copied/pasted on all weapons (have in mind that there are 23 weapon with 3-5 levels each, so that comes to about a hundred prefabs, with more to come), i have to copy/paste an FSM to every weapon and tweak the variables in each one of them. I don’t have to tell you that if any larger scale fixes in logic are necessary when all the weapons are already prepared it will be a lot of work to change everything. Not to mention the possibility of making errors when managing such a tedious task. One more thing i did is implementing the sprite atlas which reduced draw calls a lot, and boosted frame rate from 15-30 FPS to ~150. Now everything goes very smoothly. There are some hiccups, but those are due to extensive logging which is quite necessary in this phase. Swarm missiles got an overhaul too, now they’re flying nicely in a semi-random homing pattern, they way i imagined them to be. Swarm missiles flying nicely in a semi-random homing mannerAlso, the artist guy did some weapons art for me, some will maybe change, but i thing they’re pretty good looking and quite different. A selection of collectable weaponsThe post Dev Log #2 appeared first on Fat Pug Studio.
View the full article

FatPugStudio

FatPugStudio

 

Dev Log #1

To keep the track of the work done, motivate myself and keep people interested, it’s time to start a Dev Blog. Here’s the first one for the work done in the last few days, enjoy. Design of the Swarm Missiles weapon. Basically (as the name says) it launches a swarm of small missiles from the player ship and every one of them tracks random enemy. It may require an overhaul to make them more random with some sort of unnecessary crazy loops to compensate for their number. The design wasn’t too tough, each missile has a random frontward direction upon launch and a small delay before tracking starts. Every few moments, they change the target they locked on to so they move randomly in a natural, swirly manner. Design of the Randomizer (work title) weapon which shoots a lot of particles but to compensate for their number they move slowly in a random forward pattern and are fairly weak, but can protect you from swarms of smaller enemies. Pretty useless against big enemies though. Design of the Shield with regeneration timer and connection to the shield integrity bar. Still needs connecting to the heat transfer mechanism (when you get hit, shield takes the damage, but your heat level increases, energy transfer stuff). Design of the Auto Cannon Drone. It tracks closest enemy, rotates towards it and fires. If no enemies are present, it stops firing. Oh, it also follows player of course. Design of the Ripper, basically a manual shooting shotgun that sprays multiple bullet in a cone, that was pretty easy to make. It shoots as fast as you can click, deals a lot of damage it all bullets hit the target, but it heats a lot, so i have to disappoint you if you’re a Starcraft player with million clicks per minute and plan to win the game using Ripper only. Design of the Flak Cannon. Like the real Flak, it has proximity activated “fuse”. At a certain distance from the enemy it explodes and blasts into a lot of small pellets. Great against small enemies. Design of the Proximity Mines. Regular mines just floating in space were designed a while ago, but i decided to put a bit more challenging ones. When you get near one, it shoots a laser ray which locks on to your ship (doesn’t damage it though) and starts slowly moving towards you until you destroy it. I also designed the EMP mines that will work the same way, but deal less damage and mess up your screen with glitch effects. Also updated the mines with random rotation and blinking red light so they’re a bit more interesting looking and easier to spot.   Homing Mines – slow but deadlyThe post Dev Log #1 appeared first on Fat Pug Studio.
View the full article

FatPugStudio

FatPugStudio

 

Presenting the Paragons

Paragons are mysterious faction of occultists that use phase shifting and cloaking ships based on that funny yellow balls full of energy. Hard to hit something when it constantly changes it’s position, right?The post Presenting the Paragons appeared first on Fat Pug Studio.
View the full article

FatPugStudio

FatPugStudio

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!