Jump to content
  • Advertisement

FatPugStudio

Member
  • Content Count

    28
  • Joined

  • Last visited

Community Reputation

5 Neutral

1 Follower

About FatPugStudio

  • Rank
    Member

Personal Information

Social

  • Twitter
    @FatPugStudio

Recent Profile Visitors

1160 profile views
  1. 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
  2. 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
  3. FatPugStudio

    Player damage system dilemma

    Hello and thanks for answer. Thanks you for the insight, yours and opinions of folks at shmups forum made me think a bit wider. I came to conlusion that i should definitely use "one hit - one life" solution on this one for many reasons
  4. Hello everyone, I'm pretty far off in my game development, but one thing bothers me more and more and i need some opinions. I am making a 2D sidescrolling roguelike endless shmup and very soon i will have to decide whether i will have a 0-100 health/armor system (100 hp, enemy bullets deal from 1-100 damage) or a "life" system (10 lives, all bullet or enemy contact takes one life and makes you invincible for few seconds). Health system is quite well implemented in Jets 'n' Guns, though the game is level based and linear, with armor pickups inplemented in levels. Endless games like Steredenn implement life system with replenishment at the end if every level. Life system is more "hardcore" oriented and it probably suits the "hardcore" audience more, which is probably the majority of the genre players, but it is severely limiting in terms of design of enemy attacks and bullet sizes. On the other hand, health system seems more approachable, enables much wider variety of enemies and attacks, but i'm afraid it might put off players that passionately like the genre and still not prove appaling enough for other players. Another con would be that it can be harder to balance. What do you think? I personally lean towards health model, but besides jets 'n' guns which is level based, not endless, i don't know many other good examples.
  5. 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
  6. www.hacknplan.com I don't how come it isn't more popular amongst Trello gamedev users.
  7. FatPugStudio

    Rough estimate for how much 2d animators charge

    Afaik, spritesheets are 30-50 bucks per hour, for a non-oustanding artist. It's hard to give an estimate per frame with unknown sheet size, drawing style and details involved. The guy working on my game (you can see the art in the signature) charges 30 for hour, animated or not, it's all work.
  8. I'm sure you'll encounter some of the Unity quirks as that one as you delve deeper into it, unfortunately. But every engine has its problems.
  9. FatPugStudio

    How to protect yourself and your game?

    Don't waste your time with an NDA, strip the project so it contains enough for them to work on it and not enough for them to gain anything by stealing it.
  10. FatPugStudio

    How to protect yourself and your game?

    I hired a lot of freelancers for some of my stuff and i protected myself dead simple. If you're afraid someone will steal your art - give them a project (or a part of the project) with only placeholder art to work on, then copy the things they did to the original project. If you're afraid someone will steal your code - give them as little as needed for them to work on it, a scene with placeholder art, basic functionality needed for them to have a grasp of the concept. If you're afraid some will steal your idea - don't worry, they need to start working on the game from the beginning, and you're probably far off already. But the best way is to precisely define what exactly do you need and have them to that only, without accessing your project. It may take a bit more time and be more expensive since you'll probably need to revise the work done a few times, but it's the ultimate in protecting yourself and your project.
  11. Sure, that's what i did in the beginning. Unfortunately, Unity does not support more than level of nested prefabs in the editor, only on runtime (unless you are using some of the suspicious quality third party assets) so i wouldn't be able to make squadron > ship > thruster hierarchy which speeds up the process of creating enemy waves significantly.
  12. 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
  13. FatPugStudio

    Earnings and Statistics from my 3rd Android Game - Stickman RPG

    First of all, it's a great success to finish a game, especially at such a young age, wow! It proves you have the determination and skills required to do it. Just keep on making them, you've got a bright future!
  14. 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
  15. 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
  • Advertisement
×

Important Information

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

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!