GDquest has started a new kickstarter campaign to create a professional tutorial for Godot, focused on 2d games.
"Learn to create 2d games with the award-winning, Open Source engine Godot 3. Free daily tutorials on Youtube during the campaign!" "You will learn to create your own top-down game inspired by Zelda"

Gunpods Vagabond

RossRoss Posts: 199Member
edited September 2016 in Projects
Hi all,

Here is my latest project: Gunpods Vagabond: a 2d sidescrolling shooter with something like lunar lander-style movement.

I wanted to take a break from the troublesome character animation blending, serious graphics, and performance issues of my other project and test myself with a little "game jam", so I created a working prototype of this game in about three days, and have spent some of the last month developing it further. It's got very simple graphics and not a whole lot of content yet, but hopefully more interesting and challenging mechanics than your average scrolling shoot 'em up. I'm doing everything on this project myself: coding, graphics, and sound, etc.

A quick gameplay gif, showing the dash mechanic and two of the weapons:


Some Current Features:

 • Up to 3 player local multiplayer.
 • Optional "hot-joining" - other players can join the game at any time.
 • Configurable controls
 • Analog gamepad support for all players.
 • Endless survival mode - divided into loose waves by short breaks, and the enemies get more and more advanced.
 • Practice mode, to give you some breathing room to practice the unusual controls.
 • 7 Weapons.
 • 15 Enemy types

At this point I think it's pretty fun to play and I'm looking for some external feedback to keep me pushing forward and make sure my priorities are straight. Have a download and let me know what you think!

Build Downloads:

Go to https://rossgrams.itch.io/gunpods-vagabond for the latest builds.

Tags :

Comments

  • SslaxxSslaxx Posts: 8Member
    Linux works, this I can confirm.
  • RossRoss Posts: 199Member
    edited August 2016
    @Sslaxx - Excellent, thanks!

    [Edit] I tried it on a Linux (Ubuntu) machine here too. I had to add the executable permissions bit to get it to run, which is sort of annoying. The only way I found to fix that from windows is with certain programs and certain kinds of archive, and I probably should have archived them anyway to make the uploads and downloads smaller. So I've updated the Linux download, it should run out of the box now.

    I was having an issue with the Switch button for player 1 though, which kind of ruins it. I'll have to fix that ASAP. I think it has something to do with the keyboard layout that the editor thinks it uses, since in the input map it shows up as "colon" rather than "comma". It works fine on windows though. Ugh.

    By the way, if there's anyone out there not using version control for your project, well, you should be. Even if you're working on a one-man project like I am it's really, really useful. You basically get an unlimited undo feature for any size of change you choose to commit. You never have to worry about messing things up, and never again hesitate to try some changes because you're worried about putting things back if it doesn't work. You can also save as many different branches as you want with different changes and switch back and forth whenever you want.

    I also find that it makes me a bit more organized about working on things, since I have to commit work in chunks with some sort of description. It encourages me to focus on one thing and keep going until it's finished, rather than make commits of random tweaks to a bunch of different things. It's satisfying to push a commit too, and nice to have a built-in log of what you did when and how much you've gotten done.

    I'm using Bitbucket. Unlike Github they give you free private repositories. You also get an optional issue tracker and wiki, each of which you can set independently to public or private, and allow anyone to contribute to them or not. For example you can have a private repository but a public issue tracker that anyone can log into bitbucket and report bugs for you. The wiki is quite nice for organizing other notes or brainstorming.

    If you're like me and find the git command line to be rather confusing and downright horrible to use, there's GUI options. I'm using Bitbucket's SourceTree. It's not as slick as "Github for Windows" (which you can also use for Bitbucket), but I think it has a little bit better functionality. If you're on Linux, GitKraken looks pretty good (SourceTree is win/mac only :/).
  • RossRoss Posts: 199Member
    edited August 2016
    Well, the input issue on Linux is still a mystery. For some reason with the Linux build the comma key is not working in this specific instance. I tried another Godot program that has text input fields and the comma key works fine there. I tried switching keyboard layouts to dvorak and the action worked then, it's just that specific key that doesn't seem to work. I don't know if it's relevant, but in the editor input mapping menu that key identifies as "colon" rather than "comma". Alt also comes up as "Menu" a bunch of the time, so there's something a little screwy there.

    For now, I've added alternate keymappings for player 1's actions to the Linux build. 9, 0, -, and = instead of m, comma, period, and /. They'll get in the way of player 3 if you're using all three players with the same keyboard, but it's just a temporary workaround. I guess I'll add a key rebinding menu sooner than planned, maybe that will shed some light on the bug.

    Also noticed a little bug with the Ion cannon(your starting weapon). The shots are so big and the spawn point is close enough to your ship that they stick out the back of your ship on the frame that they spawn. So if you back up against the wall and try to shoot, it doesn't do much since the shots overlap the wall. Will put that on the issue tracker! :smiley: (scratch that, I'll just fix it.)
  • KioriKiori Posts: 202Admin
    Really cool looking. We need more shooters of this type i think. Good work!
  • RossRoss Posts: 199Member
    edited August 2016
    @Kiori Thanks!

         Well, it's about high time for an update. I was away for a week on vacation but I've made good progress in the last week since then. I thought the gameplay was pretty decent when I started this this thread, but I started looking at it more critically after playing some more Nuclear Throne, Downwell, and watching some of Mark Brown's videos (which you should check out if you don't know, most of them are quite good, plus short and to the point). After going through a few failed iterations, the gameplay is now a lot more tactical and interesting.

         Mostly I changed the boost mechanics. Instead of just an occasional way to dodge or move quickly, it now affects all parts of gameplay: defense, offense, and movement. Instead of having three charges of a fixed-length boost in one of eight-directions, you now have a continuous boost energy bar, can control the length of the boost, and can steer around however you want while boosting.

         The regular thrust and steering controls are now shut off while boosting, which makes it much more reliable and easy to control. Also, in the last build you had to be holding down the correct directional keys at the instant you pressed tho boost button. That caused all sorts of problems boosting in the wrong direction because you let off one button a split-second too soon, or pressed the boost button just before you hit a directional key. All those problems are gone now, you just hold the boost button and steer. It defaults to forward if you don't press any direction keys. The continuous controls allow for some awesome high-speed dodging around and between obstacles.

    Three other changes to the boost:

    • You are immune to impact and explosion damage while boosting.
        - This stops the instant you release the button.
    • Anything you touch while boosting is dealt large amounts of damage every frame.
        - The large obstacles are resistant, but all current enemies are destroyed instantly.
        - You regain a small amount of boost energy for each enemy you smash to death.
    • While boosting, your weapons are augmented
        - The effect is different for each weapon, but they're generally about twice as powerful.



    Two new enemies, more to come soon:

    Bombs
        Nasty buggers, but they can also be useful. If you enter their sensor radius they will explode, killing you instantly. If you shoot them they also explode, wiping out nearby enemies and obstacles. Since your boost makes you immune to explosion damage, you can boost into their range to dispose of them. But if you run out of energy or release the boost button a split second too soon, you're dead. They'll teach you not to hang around the front of the screen. Watch out for the little red dots that mark the edges of their sensor range.


    Destroyers
        Also a dangerous enemy. They fly through quickly, and have a turret that pumps out bullets at the first player to come into range. You have to keep moving quickly, hide behind a block, or kill them quickly to survive.

    I made a new weapon too:

    Side Gun. It's very powerful, but shoots from the top and bottom of your pod instead of forward. I actually tried a Rear Gun first, but that was just awful. When boosting Side Gun shoots six shots in all directions (except forward of course).


    Recent Build:

    I've opened up a page for Gunpods on Itch. I'll probably just use that to host builds from now on.
    https://rossgrams.itch.io/gunpods-vagabond

  • HaplotyperHaplotyper Posts: 14Member
    Both of your games look awesome. I checked our your personal page and, man, your have some skills. Keep up the good work!
  • RossRoss Posts: 199Member
    edited August 2016
    @2D||!2D Thanks a lot!

    I uploaded a new build today: https://rossgrams.itch.io/gunpods-vagabond

    I added a whole new instructions menu with a page for each part of the game, so that's good. Now people can hopefully pick this up and play without any trial and error or outside help. For now it's just text and a few images, but I plan to make it fully interactible at some point. In the process I put together some proper menu-switching code, and fixed a bug with the menu buttons losing focus (I had other "visible" but 0.0 opacity buttons around from the other menu).

    I changed the gamepad controls to use both sticks for movement and the triggers and bumpers for actions, as per a suggestion from tigsource. I'm not much of a gamepad user so it's hard for me to judge. It seems to be a little bit easier to fly now, but harder aim your boost and do other stuff. I really need to add configurable bindings some day soon.

    Added a new enemy too: the Seeker. A little enemy that tends to spawn in groups and just follows your around and bumps into you. There's a chance for a few to appear early on, but they don't really start spawning for real until late in the game (around 280 seconds).

    Slowly but surely making progress. I'm trying to start clocking in a good number of hours in every day.


  • MegalomaniakMegalomaniak Posts: 271Member
    Looks very cool again! Great job. :)
  • Elf_EarsElf_Ears Posts: 37Member
    HOT DAMN!
    This is amazing looking!
    this puts the rubbishy twin stick I've secretly been working on TO SHAME
  • zadigzadig Posts: 28Member
    The gameplay looks so addictive :).
    Will download it soon (dial up cet @ home).
    Keep up the good work!
  • quickmind2020quickmind2020 Posts: 27Member
    edited September 2016
    Very nice game! though it seems like i cant pick up any weapons at all... :neutral: I go over them they light up as green and then i push switch and...nothing
    saddens me :(

    EDIT:
    Well i did some reading... derp.. hope that the bug gets fix. mean while ill be using the alt keys for p1 :)

  • RossRoss Posts: 199Member
    edited September 2016
    Very nice game! though it seems like i cant pick up any weapons at all... :neutral: I go over them they light up as green and then i push switch and...nothing
    saddens me :(
    Are you on Linux? Can you switch at all normally? There is some weirdness causing the comma key to not work on Linux, so there's alternate keybindings for player 1's action on the number key row: =, -, 0, and 9.

    There is a note about that at the bottom of the Itch page. I'll hopefully figure that out when I get around to doing rebindable keys.
  • quickmind2020quickmind2020 Posts: 27Member
    Ya I did some reading and found that out! :) Its a bummer when something like this happens and you don't know why it does it... Well good luck to you!

    (btw This is really fun, and hard...makes it even funner to play)
  • RossRoss Posts: 199Member
    Whew! OK, cool. Yeah, it's a weird bug. Thanks!
  • PCMXMSPCMXMS Posts: 67Member
    edited September 2016
    Didn't run :(

    pcmxms@MainFrame:~/Downloads$ ./Gunpods\ Vagabond_2016_08_29_Linux 
    ./Gunpods Vagabond_2016_08_29_Linux: error while loading shared libraries: libXinerama.so.1: cannot open shared object file: No such file or directory
    pcmxms@MainFrame:~/Downloads$ sudo apt-get install libxinerama1
    Lendo listas de pacotes... Pronto
    Construindo árvore de dependências       
    Lendo informação de estado... Pronto
    libxinerama1 is already the newest version (2:1.1.3-1).
    0 pacotes atualizados, 0 pacotes novos instalados, 0 a serem removidos e 68 não atualizados.
    pcmxms@MainFrame:~/Downloads$ 

    Gnome Ubuntu 16.04

  • RossRoss Posts: 199Member
    @PCMXMS Hmm, It looks like it's some 32-bit vs 64-bit issue. http://superuser.com/questions/688871/error-while-loading-shared-libraries-libxinerama-so-1-cannot-open-shared-objec I'll look into it more tomorrow.

  • RossRoss Posts: 199Member
    edited September 2016
    @PCMXMS Shoot, sorry! I forgot about this and got distracted with freelance work. I just uploaded a new version and included a 64-bit Linux build. If you would, try that and see if it works: https://rossgrams.itch.io/gunpods-vagabond

    @Megalomaniak Thanks again!

    @Elf_Ears Haha, thanks! Hey, don't put down your own projects! Besides, this isn't actually twin-stick, you aim and steer at the same time.

    @zadig Thanks! Oh man, I didn't know anyone still had dialup. Sorry for all the big gifs! Well, I think most people get turned off quickly by the unusual controls. The few people with the mindset to keep at it have gotten pretty into it though, which is awesome. I just need to learn how to find those people.

    September 9th Build - 10 new enemies

    New build up for download from: https://rossgrams.itch.io/gunpods-vagabond

    It was actually really fast to make new enemies. Most of them are just variations of each other. Some enemies chase after you, some move straight, some move on an angle, some alternate between chasing you and moving straight. Some shoot, some don't. Some aim their shots at you, some just shoot strait ahead or in all directions . . . etc., etc., etc.

    I started making separate "module" scenes for different behaviors so I can reuse them without copy-and-pasting code. I've got a Targeting Module that takes a nodepath to an Area2D and decides which player to target, if any are in the area. Then I access it from the enemy's main script if I want the enemy to chase the player and/or aim at it. A Pickup Spawner module with export vars for number of drops and chance to drop. Two different Firing Modules for single shots or bursts. I definitely should have started working this way in the beginning, and I have a lot more things I should separate out. Now there are 15 different enemies and it's a lot more work to chop chunks out and "modularize" them! I really wish Godot allowed multiple scripts on one node. It's OK to just use another node for each one, but it adds a bit more code to get_parent() or have NodePath export vars to access stuff in the root node and elsewhere. Extending my own class would work for some stuff, but it screws up the autocompletion, which is a real pain.

    I also changed the key for picking up weapons to "Reload" instead of "Switch". It was a bit weird at first, but it's much better. Picking up weapons was always a bit tricky before, aside from the necessary careful flying, because you had to get close enough to see what a weapon was, but switch to the weapon you wanted to swap out before you got to close, then get up close and press switch again to actually pick up the weapon. (!) Now you don't have to worry about that, since the Switch and Pickup actions are on different keys. You don't use Reload much, so there's less chance of accidentally grabbing a different weapon too.

    And I made it so the first weapon you pick up automatically goes in your empty slot. So nice. I should have done that sooner, it was one line of code.
  • PCMXMSPCMXMS Posts: 67Member
    ERROR: ~SampleManagerMallocSW: Leaked sample of size: 34140 description: 
       At: servers/audio/sample_manager_sw.cpp:315.
    ERROR: ~SampleManagerMallocSW: Leaked sample of size: 128612 description: 
       At: servers/audio/sample_manager_sw.cpp:315.
    ERROR: ~SampleManagerMallocSW: Leaked sample of size: 45508 description: 
       At: servers/audio/sample_manager_sw.cpp:315.
    ERROR: ~SampleManagerMallocSW: Leaked sample of size: 506496 description: 
       At: servers/audio/sample_manager_sw.cpp:315.
    ERROR: ~SampleManagerMallocSW: Leaked sample of size: 291928 description: 
       At: servers/audio/sample_manager_sw.cpp:315.
    WARNING: cleanup: ObjectDB Instances still exist!
       At: core/object.cpp:1991.
    ERROR: clear: Resources Still in use at Exit!
       At: core/resource.cpp:406.

    Boy, is it difficult to play. I couldn't change weapons and got all confused with the ship movement. The selection of the default keys could be better.

    Still, has potential. Keep it up!
  • RossRoss Posts: 199Member
    @PCMXMS OK, cool, so it works. Yeah, I haven't been able to figure out what all those errors are when you exit. Though, admittedly I haven't made the a priority since they don't seem to cause problems.

    Thanks for the feedback! That's pretty much what I've heard from most people, haha. Basically the whole point of the game is that the controls are . . . unusual, and the default keys are set to fit all three players on the keyboard. If you (or anyone) have ideas for how to better explain or teach the movement mechanics, that would be greatly appreciated. I'm totally comfortable with them, so it's hard for me to tell what the difficulty is.

    I've been thinking maybe a better game description and a different ship graphic could help people grasp it. I've been describing it as "Lunar Lander-ish movement", but apparently not many people played Lunar Lander (or one of the many clones), or they just don't want to play it at three times the speed with moving obstacles, enemies, and guns. :P A friend of mine described it as "Flappy Bird for grown-ups", haha, but I'm not sure that's quite right either.

    And what if your ship was a helicopter instead of just a ball? I wonder if that would make it clearer. The movement is pretty much like a helicopter's (except you can thrust down), and I think people expect helicopters to be a bit tricky to fly.

    I don't know. It seems people expect games to operate just like other games they're comfortable with, but then, what's the point of making a game that's been done a million times before?
  • PCMXMSPCMXMS Posts: 67Member
    @Ross I didn't mean to say that the gameplay is wrong in any sense. It is just different from what I'm used to. I like the idea of a "moon landing" mechanics, but it is the kind of control that I will take longer to get used too :P

    About the keys configuration, I assumed that it was weird so as to fit all the players on the keyboard, and that's fine (for me). Maybe what you could do, though, is placing an "if" clause that, if players = 1, keys are different :P. I believe that's very easy to do and the fact that the controls are comfortable would turn everything more controllable (at least for me). Another thing is, maybe, give the option for those who want to "press down for up".

    I understand the "bad perception about the difficult" problem. I've been working on this platformer for 7 months now and the main complain (at the begging) was that "it was impossible". I simply couldn't see it because I was also too comfortable with the mechanics and level design. :P Some tweaks might be worth, though.

    Another (small) thing: There is no way (at least I couldn't find) to exit instructions without having to get back to the first page :P

    I played a little bit right now and it is not that hard for the second time. The only thing is that I simply can't use other weapons :P

    I totally agree with you on the "what's the point of doing something that has already been done a million times?".

    Cheers
  • MegalomaniakMegalomaniak Posts: 271Member
    edited September 2016
    I think I recall from talking with beelzy on IRC that the diasporic crypt project might have had those malloc errors at one point, might be worth asking about it... might have been something audio related now that I think about it.

    edit:
    Looked through beelzy's thread and found this:
    beelzy said:
    I fixed the issue with the malloc errors.

    Basically, this is what happened: https://github.com/godotengine/godot/issues/4332

    Now it shouldn't crash on closing.
  • RossRoss Posts: 199Member
    @PCMXMS Good points, thanks. Yeah, my next thing to do is add configurable keys, so some of these issues will disappear. I'll have to think about changing the default keys though, I'm sure most people will play it single player, at least the first time.

    Ah, yeah. Adding a "back to menu" button on each instructions page has been on my to do list also. Done.

    If you're using the Linux build there's some unknown bug with the comma key that's player 1's switch weapon key. I've put in alternate weird keybindings at the end of the number key row. Ahh, haha, it's like some bad joke, I have got to fix this.

    @Megalomaniak Ah, awesome! Thanks! Yeah, I knew it was coming from the SamplePlayer that I use for most of the sounds, but couldn't figure out why it was happening. Your link helped me solve it pretty quickly though. It turns out I was an idiot and never added my global sound player scene to the scene tree. I'm surprised it worked anyway. Fixed!
  • quickmind2020quickmind2020 Posts: 27Member
    @Ross So how are you configuring the key inputs? In code or through actions.
  • RossRoss Posts: 199Member
    @quickmind2020 Actions. I just set the input map in the editor. But I'm working on making them configurable now.
  • SuryaSelSuryaSel Posts: 21Member
    I was just about to mention the need for configurable controls. I downloaded the game as it looked incredibly fun to play and polished as well. But the default control scheme is too cramped and makes it unplayable for me. Please let me know when you've got that in :)
  • RossRoss Posts: 199Member
    @SuryaSel Unplayable, eh? Haha, okay. I've got configurable controls in now and uploaded a new build.

    Sept 15th Build - Configurable controls & analog gamepad support

    https://rossgrams.itch.io/gunpods-vagabond

    Yay, now you can set the controls to whatever you want. Boy did stinking gamepads make that five times as complicated! :P I changed the default action keys for player 1 to Z, X, C, and V, which seems to be semi-standard for indie games these days. Players 2 and 3 I just set to use gamepads by default so they won't conflict with anything. If you want to do multiplayer with the keyboard you'll have to switch things around so the keybindings don't overlap. There's still some polishing to be done on the controls menu functionality, you can turn on multiple buttons, it doesn't consume the input properly, you can't customize the joystick deadzone, etc., but it works. Hopefully by next week I'll have it more polished.

    Also, support for analog joysticks on a gamepad is done. I started this to try and work around Godot bugs, but it was high time I did it anyway. I'll probably have to tweak how turning with a joystick works, it's a bit twitchy, but it's quite nice having analog control for your thrust.

    Also fixed those few other things you guys mentioned here: Fixed the errors and occasional crashes on exit from the Sampleplayer, added "Back to Menu" buttons on each instructions menu page, and since I changed player 1's keys, there's no longer any problem with the switch button on linux. That was actually a bug on windows, it calls the comma key "Colon" for some reason. I reported that on github, so hopefully it will be fixed, or I can fairly easily work around it.
  • SuryaSelSuryaSel Posts: 21Member
    edited September 2016
    Just tried your new build and I absolutely love it man! Looks too good for what essentially is a developing stage. The gameplay is reasonably challenging and the control scheme of the ship is innovative works really well. And the visuals are just brilliant. And yeah, the controlling the ship does take a short while before get the hang of it, so please give it a little time and patience and you'll find it very rewarding and addictive after that, it's really one of the main things that game stand out. A word of advice would be to not keep the thrust key held down but use it in short bursts instead (As you might try the former approach in a conventional 2D Space Shooter, where your 'strafing' essentially behaves like a thruster, but that approach simply won't work here).

    Alright, enough raving, now time for the main issue I found with the game, which is borderline game-breaking as it lets you beat the game forever without any challenge. If you just pickup the Grenade Launcher and push your ship to the top wall, then you can just stay invulnerable forever and easily take out that occasional block/asteroid that comes your way. This is made even easier by the low frequency of obstacles at the top corner. Here's a demo pic of what I meant.



    The easiest solution to this according to me would be to make top corner collisions damage the ship, just like the bottom corner does. Or maybe have enemies coming from above as well, if you want the top to retain that 'open' feel or whatever. More obstacles hurtling to/across the top line may work too. You may ofcourse have a much better workarounds, these are just my suggestions.

    But seriously man, this game is awesome. Not tried the Co-op yet, but will check it out soon. PvP spaceship battles also sound fun to me, if you plan to add it that is :)

    Thanks,
    Surya Sel.
  • RossRoss Posts: 199Member
    @SuryaSel Hey, thanks for your feedback! Glad you liked it. That's interesting that you were able to hang out at the top forever like that. The enemy and blocks should spawn evenly across the whole area. I did recently make the top boundary much closer to the edge of the screen, so maybe that messed it up. I will check it out. Do you remember how far you got? It keeps getting harder until you hit 10 minutes.

    I've thought about PvP, but I wasn't sure how well it would work since the ships are only meant to face in one direction generally. All I have to do to implement it is make the bullets collide with players, so I'll definitely give it a try one of these days.
  • SuryaSelSuryaSel Posts: 21Member
    I must have hung around for like 3-4 minutes before I got bored so I dived back in to play it 'the way it is meant to be played' ;) . Note that I could only do this when I got hold of the Grenade Launcher due to it's ability to one-shot AoE just about anything the game throws at you. Alright, maybe I couldn't have hung on forever, but the point here is this umm...'wallriding' mechanic greatly reduces to the game's challenge and intensity. 

    Oh yeah, sorry to nitpick here, but there's another exploit I found as well in subsequent playthroughs, but this is not so big a deal. The lets me configure identical controls to all three ships, giving me not only combined firepower but also that ability to snatch a second-wind survival a la Borderlands 2. This could maybe be another fun diversion of a gamemode but I don't think you intended this in the primary gamemode.

    One last suggestion for this post, please increase the damage taken from hitting the ground (or add some other penalty atleast). I ran into many crowded scenarios where I could just bang the ground and escape instead of making the effort to pull out of it due to lower damage I took from it (or so it felt) combined with the low risk involved.

    And regarding PvP, you could possibly add a 'flip' button that just mirrors your ship to face the other side, perhaps to make the combat more dynamic.

    Thanks,
    Surya Sel.
Sign In or Register to comment.