Armoured colony seeker is ALMOST completed! This week I have implemented most of seeker's attacks, animations, segments and guardians. In new boss missions player has to fight boss guardians before fighting the boss. Each boss has three unique guardians, that are not seen anywhere else in game and player has to defeat from five to fifteen of them to get to the boss. I hope this will make boss fights more interesting! So, this week I have made first of three armoured colony seeker guardians - sentinel! It is able to shield itself and uses attacks that are hard to avoid. This week was also polishing game. I fixed some problems, that were created by combat overhaul, did minor changes to interfaces, updated few ability animations and so on. Next week I'll finish boss mission and continue to work on new combat! Beta is getting closer and closer! Hang in there!
0 Comments
This week I was working on the new boss!
It was very challenging! First, I had to fix evasive problem with enemy segments. Turns out enemy segments weren't scaling with level. Secondly, my idea of making armoured colony seeker have a lot of breakable segments didn't work. No matter how many segments I added, it didn't made boss fight fun enough. Then I decided to add just few segments and change how armoured colony seeker looks. Then I caught nasty virus! No, not computer virus. It took me out of development for two days. After I got back from hospital, the boss development has turned into painful code-test-scrap-repeat cycle. I have made new sprite for the armoured colony seeker and then began working on it's abilities and breakable segments. Segments kept getting in wrong positions, abilities kept being too punishing or not exciting and so on. But despite these problems, boss should be finished by the end of next week! Now, I feel a need to thank the awesome people, who play my game, read my echos and leave good comments about Sector Six! It really helps me to work! As long as I have so many cool people supporting my game, I can do anything! So, thank you all for support and until next week! PS.: Yes, the boss is called armoured colony seeker. Unfortunately, this week I haven't done much, because I didn't had my computer.
But my computer is back now and next week I'll be making new boss! Old bosses - invasion core, assault carrier and onslaught leader - were awkward and uninteresting to fight. Due to the limitations of old combat system, I was unable to improve them. But old combat system is gone, so now it's time for good bosses! New boss will be good, because:
Also, to reach new boss, you will have to get through many boss guardians - unique enemies that can only be fought in boss missions. This is the chance for me to built something, that will turn Sector Six a much better game! Hopefully it will be as epic as I imagine it now. Until next week! Sector Six can now be paused!
That's something that game needed for a long time. With key customization and pause systems in place, game engine is practically completed! That means boring updates are almost over! Finally I'll be able to work on the content updates. So, next week I plan to add new ways to leave the game, like exiting to main menu and then begin preparing game for the combat overhaul release! This is what I need to do: Implement new ways to exit game. Implement fusion abilities. Update tutorial. Fix issues with balance. Fix ether and armour bars. Fix enemy segment armour. Fix amplifiers and hard mode. Clean up interfaces. Add new boss. Add new abilities. Add new enemies. I'll be bringing this list back in every echo until it's completed and I can release new version. It should take a month or so to do that. When combat overhaul will be released, game will become beta, as all core features will be implemented. There's good news and bad news. The bad: After combat overhaul release I will no longer update game, because I will begin selling updated versions on Itch.io and hopefully on IndieGameStand or even Steam store. So, the newest game version will no longer be free. The good: Alpha game will stay free and the last update will add a lot of new content, like new abilities, new enemies, new achievements, epic boss and, of course, new combat. I will not stop supporting alpha version, I'll continue fixing bugs and balancing issues. I really hope Sector Six will sell well, because living off game development is my biggest dream right now. Until next week! This week was very good for Sector Six, because I have managed to implement key remapping or as I call it, control customization system, bring back ether to the game and began updating technology interface. I also ran few long tests and I was very happy to find out, that all those game systems are finally starting to work! It seems that my attempts to improve game by making parts rarer, preventing level from giving armour, limiting weapons, etc, were not waste of time. Anyway, when new abilities came out, they didn't required ether to use them. Well, evil laugh, now they do! Even better - ether doesn't regenerate anymore! Regeneration is a disgusting mechanic. It makes being idle in the game into something you might consider doing! That makes no sense, considering that the games are here mostly to fight boredom! Regeneration was extremely harmful to Sector Six, because hiding from enemies and waiting for armour, ether or alloy container charges to regenerate was very easy. In the past I have removed armour regeneration. Now I removed ether regeneration. In future alloy containers with regenerating charges will also disappear! Regeneration will be completely replaced with generation when you destroy enemy or demolish ruins. Or initial generation for ether and alloy container charges. With ether regeneration gone, all ether providing parts became much more useful, making spaceship building more fun than ever. Ether rework had huge impact on the gameplay, but it's minor change compared to the fact that Sector Six now has perfect controls! How? You can now go to settings and change movement, ability, dialogue and alloy container keys to almost any key on the keyboard! For those who use GameMaker: Studio and are interested in making key remapping in their games, here's how I did it: First, I had added bunch of buttons for every control in game. If, for example, you press container use button and then press T on keyboard, container use key will be remapped to T. When you click button, the variables mode_remap and selected_key are set. For example, if you click container use button, selected_key is set to 14. These variables are then used in the press any key event. /// Press < any key> event if mode_remap = true { if scr_check_key() = true { mode_remap = false; switch(selected_key) { case 1: movement_up = keyboard_lastkey; break; case 2: movement_down = keyboard_lastkey; break; case 3: movement_left = keyboard_lastkey; break; case 4: movement_right = keyboard_lastkey; break; case 5: ability_1 = keyboard_lastkey; break; case 6: ability_2 = keyboard_lastkey; break; case 7: ability_3 = keyboard_lastkey; break; case 8: ability_4 = keyboard_lastkey; break; case 9: ability_5 = keyboard_lastkey; break; case 10: ability_6 = keyboard_lastkey; break; case 11: ability_7 = keyboard_lastkey; break; case 12: ability_8 = keyboard_lastkey; break; case 13: ability_9 = keyboard_lastkey; break; case 14: container_key = keyboard_lastkey; break; case 15: dialogue_key = keyboard_lastkey; break; case 16: engine_key = keyboard_lastkey; break; } } } scr_check_key script is here to prevent people from remapping to keys like caps lock and screen capture. /// scr_check_key() var allow = false; switch(keyboard_lastkey) { case vk_left: allow = true; break; case vk_right: allow = true; break; case vk_up: allow = true; break; case vk_down: allow = true; break; case vk_enter: allow = true; break; case vk_space: allow = true; break; case vk_shift: allow = true; break; case vk_control: allow = true; break; case vk_alt: allow = true; break; case vk_backspace: allow = true; break; case vk_tab: allow = true; break; case vk_home: allow = true; break; case vk_end: allow = true; break; case vk_delete: allow = true; break; case vk_insert: allow = true; break; case vk_pageup: allow = true; break; case vk_pagedown: allow = true; break; case vk_f1: allow = true; break; case vk_f2: allow = true; break; case vk_f3: allow = true; break; case vk_f4: allow = true; break; case vk_f5: allow = true; break; case vk_f6: allow = true; break; case vk_f7: allow = true; break; case vk_f8: allow = true; break; case vk_f9: allow = true; break; case vk_f10: allow = true; break; case vk_f11: allow = true; break; case vk_f12: allow = true; break; case vk_numpad0: allow = true; break; case vk_numpad1: allow = true; break; case vk_numpad2: allow = true; break; case vk_numpad3: allow = true; break; case vk_numpad4: allow = true; break; case vk_numpad5: allow = true; break; case vk_numpad6: allow = true; break; case vk_numpad7: allow = true; break; case vk_numpad8: allow = true; break; case vk_numpad9: allow = true; break; case vk_multiply: allow = true; break; case vk_divide: allow = true; break; case vk_add: allow = true; break; case vk_subtract: allow = true; break; case vk_decimal: allow = true; break; case ord("1"): allow = true; break; case ord("2"): allow = true; break; case ord("3"): allow = true; break; case ord("4"): allow = true; break; case ord("5"): allow = true; break; case ord("6"): allow = true; break; case ord("7"): allow = true; break; case ord("8"): allow = true; break; case ord("9"): allow = true; break; case ord("0"): allow = true; break; case ord("Q"): allow = true; break; case ord("W"): allow = true; break; case ord("E"): allow = true; break; case ord("R"): allow = true; break; case ord("T"): allow = true; break; case ord("Y"): allow = true; break; case ord("U"): allow = true; break; case ord("I"): allow = true; break; case ord("O"): allow = true; break; case ord("P"): allow = true; break; case ord("A"): allow = true; break; case ord("S"): allow = true; break; case ord("D"): allow = true; break; case ord("F"): allow = true; break; case ord("G"): allow = true; break; case ord("H"): allow = true; break; case ord("J"): allow = true; break; case ord("K"): allow = true; break; case ord("L"): allow = true; break; case ord("Z"): allow = true; break; case ord("X"): allow = true; break; case ord("C"): allow = true; break; case ord("V"): allow = true; break; case ord("B"): allow = true; break; case ord("N"): allow = true; break; case ord("M"): allow = true; break; } return allow; So, that's basically it. Of course, you also need to make game respond to the key variables: if keyboard_check(movement_up) { x -= 1; } Instead of: if keyboard_check(vk_up) { x -= 1; } And the hardest part is probably to make the interface, but since every game has different interfaces, it's up to you. But here's something that might help you do that: /// scr_return_key_string(key) var key_string = ""; switch(argument0) { case vk_left: key_string = "Left"; break; case vk_right: key_string = "Right"; break; case vk_up: key_string = "Up"; break; case vk_down: key_string = "Down"; break; case vk_enter: key_string = "Enter"; break; case vk_space: key_string = "Space"; break; case vk_shift: key_string = "Shift"; break; case vk_control: key_string = "Ctrl"; break; case vk_alt: key_string = "Alt"; break; case vk_backspace: key_string = "Backspace"; break; case vk_tab: key_string = "Tab"; break; case vk_home: key_string = "Home"; break; case vk_end: key_string = "End"; break; case vk_delete: key_string = "Delete"; break; case vk_insert: key_string = "Insert"; break; case vk_pageup: key_string = "Page up"; break; case vk_pagedown: key_string = "Page down"; break; case vk_f1: key_string = "F1"; break; case vk_f2: key_string = "F2"; break; case vk_f3: key_string = "F3"; break; case vk_f4: key_string = "F4"; break; case vk_f5: key_string = "F5"; break; case vk_f6: key_string = "F6"; break; case vk_f7: key_string = "F7"; break; case vk_f8: key_string = "F8"; break; case vk_f9: key_string = "F9"; break; case vk_f10: key_string = "F10"; break; case vk_f11: key_string = "F11"; break; case vk_f12: key_string = "F12"; break; case vk_numpad0: key_string = "Numpad 0"; break; case vk_numpad1: key_string = "Numpad 1"; break; case vk_numpad2: key_string = "Numpad 2"; break; case vk_numpad3: key_string = "Numpad 3"; break; case vk_numpad4: key_string = "Numpad 4"; break; case vk_numpad5: key_string = "Numpad 5"; break; case vk_numpad6: key_string = "Numpad 6"; break; case vk_numpad7: key_string = "Numpad 7"; break; case vk_numpad8: key_string = "Numpad 8"; break; case vk_numpad9: key_string = "Numpad 9"; break; case vk_multiply: key_string = "Numpad *"; break; case vk_divide: key_string = "Numpad /"; break; case vk_add: key_string = "Numpad +"; break; case vk_subtract: key_string = "Numpad -"; break; case vk_decimal: key_string = "Numpad ."; break; case ord("1"): key_string = "1"; break; case ord("2"): key_string = "2"; break; case ord("3"): key_string = "3"; break; case ord("4"): key_string = "4"; break; case ord("5"): key_string = "5"; break; case ord("6"): key_string = "6"; break; case ord("7"): key_string = "7"; break; case ord("8"): key_string = "8"; break; case ord("9"): key_string = "9"; break; case ord("0"): key_string = "0"; break; case ord("Q"): key_string = "Q"; break; case ord("W"): key_string = "W"; break; case ord("E"): key_string = "E"; break; case ord("R"): key_string = "R"; break; case ord("T"): key_string = "T"; break; case ord("Y"): key_string = "Y"; break; case ord("U"): key_string = "U"; break; case ord("I"): key_string = "I"; break; case ord("O"): key_string = "O"; break; case ord("P"): key_string = "P"; break; case ord("A"): key_string = "A"; break; case ord("S"): key_string = "S"; break; case ord("D"): key_string = "D"; break; case ord("F"): key_string = "F"; break; case ord("G"): key_string = "G"; break; case ord("H"): key_string = "H"; break; case ord("J"): key_string = "J"; break; case ord("K"): key_string = "K"; break; case ord("L"): key_string = "L"; break; case ord("Z"): key_string = "Z"; break; case ord("X"): key_string = "X"; break; case ord("C"): key_string = "C"; break; case ord("V"): key_string = "V"; break; case ord("B"): key_string = "B"; break; case ord("N"): key_string = "N"; break; case ord("M"): key_string = "M"; break; } return key_string; It turns, for example, movement_up variable into "Left" string. You can use it like this: /// Draw event draw_text(x,y,scr_return_key_string(movement_up); This could be useful. So, until next week! I hope it will be as good as this one! PS.: <3 This week was rather quiet. Didn't got much time to work and even when I did, I couldn't work for long, because I was tired. Long story short, last school semester sucks.
Anyway, this week I have updated the way part stats are displayed on panel next to building field. Now it shows total weapon damage and amount of weapons equipped. The biggest change this week was implementation of weapon limit and engine requirement. This was very easy to add, so it wasn't big thing for me, but it should have huge impact on gameplay. Now attached weapon amount cannot be higher than half of part limit, else you will suffer 400% longer ability cooldown penalty. Also, you must have at least one engine equipped on your spaceship, or movement speed will be reduced to 50%. Lastly, I have re-implemented resurrection missions, eliminated old, elusive glitch and replaced veteran mine spam attack with more interesting move. Next week should be more interesting, as I will be trying to implement control customization! I'm sure many will like this feature. Until next time! This week I have added two new awesome abilities and began tweaking game difficulty. Since the new combat test release last Sunday, combat test version has been downloaded about 50 times! However, only few people have given me feedback about new combat system. This is what information I have received:
I have decided to make combat faster and by doing so, made combat much harder. Now even I have problems passing the introduction mission. Since I began to mess with the game difficulty, I have stumbled upon old problem. The picture above shows how game difficulty depends on the amount of the weapons you have on your spaceship. Red is too hard, green is too easy. Since player starts with two sockets, it's hard to pass the first mission. The weapon problem is very old, it's there since the beginning of the game. Game is very hard, if you don't have enough weapons, but it instantly becomes too easy, if you add more weapons to your spaceship. Also, there's another problem that comes with it. About 50% or more of parts received from the part safes aren't weapons, which means that they are pretty much useless. This vastly reduces fun of getting new parts. So, the solution is to limit how much weapons can be added to spaceship, to keep difficulty between too hard and too easy. My idea is to make ability cooldowns 100% longer, if your spaceship has more weapons, than non-weapon parts attached to it. For example, since at level 1 part limit is 7, you can only equip 3 weapons. If you equip another weapon, ability cooldown will be doubled. For those, who are skilled enough, that can fight with reduced amount of weapons without any problems, in future there will be modular difficulty system. It will replace current hard mode. When you will choose mission in map grid, you will be taken to mission overview interface. There you'll see detailed information about the mission, enemy types that will appear during the mission, lore about the region and other things. But the most important part of that interface will be difficulty modules. The more modules you enable, the harder game becomes. Here are the examples of difficulty modules:
And so on! Obviously, some of those might never appear in game. To make things even more interesting, there will be rewards! They will be based on amount of modules selected. For example, if you will enable all modules and to win, you'll receive Radiari circle! It will contain mythical/etalon grade parts and access to hidden Radiari region. As you probably have noticed, there are no screenshots in this echo. This is because my computer screen didn't turned on this morning, so I didn't took screenshots. I hope I'll get my screen back soon, because newest Sector Six version is stuck in computer without screen, so I can't work on it. But, because I couldn't work on Sector Six, I have managed to write this long and, hopefully, interesting echo. So, until next week! New combat system test version is now available! I've been working on new combat system for a month now and I feel like it's time to show what I've done, before continuing combat overhaul. It's an early version, a mere prototype of a new combat system, so beware of unfair difficulty, poor balance, unfinished graphics, unfinished abilities, wrong sound effects and glitches! So, what is exactly different in test version? Difficulty. I'm trying to make combat more interesting, more complex and, automatically, more difficult. Enemies now can use really powerful abilities, that could easily destroy unprepared player! Right now game is very hard, even unfair, but I intend to lower difficulty at least a little in future. Controls. Now you move spaceship using arrow keys and activate abilities by pressing or holding 1-9. Shields. Now player and enemies can activate shields. Shields soak all the damage, which means that while shield is active, you don't take damage! Activate your shield by pressing 3, when enemies fills screen with more missiles than you can avoid! To remove enemy shields, press 4. This ability is also useful for destroying probes. Ability unleashing. Now abilities have chance to be unleashed, if they are upgraded to level 5 or higher. When ability is unleashed, it's behavior changes, for example, your basic attack ability will release additional missiles, doubling or even tripling damage dealt by that ability! Currently only 2 of 5 abilities can be unleashed. In future every ability will have unleashed form! This is like critical hits in other games, just more interesting. Attributes. Attributes work like uncapped passive abilities. They increase damage, reflect chance, unleash chances and armour. Destroying breakable enemy segments matters. Destroy them to weaken enemies. Ability cooldowns. Abilities now have cooldowns instead of ether cost. In future abilities will also use ether, but for now cooldowns are enough. New part properties. Parts now can increase ability unleash chances and attributes. Tips? Use ability 2 to deal a lot of damage to enemies. Keep it for hard enemies, because it has long cooldown. Ability 5 repairs your spaceship, use it as often as possible. Use shield ability only if necessary! It protects you only for 3 seconds, so you don't want to waste it on attacks you can avoid. And that's all! Don't forget to tell me what you think about new combat system, because it's the main reason why I started this combat test! Especially if you played Sector Six before. PS.: You cannot do tutorial and most of the missions in the test version. Simply because they are incompatible with new combat system yet. Combat overhaul is going very well!
This week I have modernized veteran and implemented shielding ability. New veteran has six breakable segments - two small cannons in front and four side protrusions. Cannons fire missiles and soak damage, while protrusions are veteran's weak spot. Destroying protrusions is hard, but it's worth it, because every destroyed protrusion removes 10% armour from veteran. And that is needed, because veteran is very hard to destroy! Veteran is able to attack player from above, direction from which player has never been attacked before in Sector Six. It has lots of armour. Every 18 seconds it releases seeking crush ram, which deals massive damage. The only way to prevent being hit by crush ram is to use shielding ability. Right now there's only one shielding ability. If used, it creates shield around player's spaceship, that lasts 3 seconds If enemy projectile hits shield, it gets destroyed and player spaceship takes no damage from it. That's what needs to be done with crush ram! In future there will be more enemy abilities like crush ram, so shielding abilities will be very important. Anyway, I got good news for everyone waiting for new combat system! I am going to release new combat system preview soon! I am not sure yet when exactly, but probably next Sunday. The reason for this is that I want to see if players like the new combat. If not, I can quickly abandon this direction and try other ways to make combat more exciting. I don't want to waste months, since I am trying to finish game this year =] I also expect to get some feedback. So, until next echo! This week I have began to work on attributes!
Sector Six attributes aren't traditional RPG attributes, because what's the fun in making system that was made million times before? Current Sector Six version has two passive abilities. Attributes work like passive abilities, players have to spend technology points to upgrade them. Except that unlike normal passive abilities, attributes will not have level cap! Also, attributes will have two effects, primary and secondary. There will be four attributes and only one of them will be able to have active secondary effect. Attributes are tied to classes. Sector Six abilities are divided in four categories, four classes. Since Sector Six is not class locked RPG, spaceship class is defined by how much points are spent on each class abilities. If, for example, player has spent most points on nomad abilities, spaceship becomes nomad class spaceship and nomad class is considered dominant. Every class has one attribute. If class is not dominant, attribute will only grant you primary effect. Secondary effect is only given if class is dominant. Apocalypse class has aggression attribute. Effect: +x% damage. Dominant bonus: +x% to all unleash chances. Goliath class has resistance attribute. Effect: +x% reflect chance Dominant bonus: +x% to maximum armour Nomad class has mastery attribute. Effect: +x% to all unleash chances. Dominant bonus: +x% reflect chance. Carrier class has capacity attribute. Effect: +x% to maximum armour. Dominant bonus: +x% damage. x is attribute level. Hopefully this system will help to make game more complex and interesting! Another thing that I've done, is the implementation of ability unleashing and unleash chances on parts. That is the end of this week's echo, until next week! |
Archives
October 2016
Categories
All
|