Page 1 of 3 123 LastLast
Results 1 to 20 of 53

Thread: Gearend, Revived - 2D Metroidvania (Greenlit!)

  1. #1

    Gearend, Revived - 2D Metroidvania (Greenlit!)

    ++++

    HEY HEY HEY THE GAME'S ON GREENLIGHT! PLEASE CHECK IT OUT THERE! Well, uh, it's actually greenlit, but I guess you can still follow it and favorite it and stuff. That'd be helpful!

    ++++

    Hey, everyone. So, I'm back at it.

    Gearend is a 2D Metroid-like, being made in the BDX game engine. You control a little robot called Epsilon-98, or Eps for short. As a helper-purpose robot, its job is to assist humans and aid in household chores. To facilitate this, it has a special body-type that allows it to swap out its parts to deal with the different jobs it might face. It would appear, however, that the Epsilon line was never fully completed. Time passes, and Eps now suddenly awakens, unsure of the year. It now seeks the truth about humanity, facing the traversal of a long-forgotten and out-of-control robotics facility.

    But what was Gearend? Well, Gearend was this. It was kinda... Well, dark. Now, it's pretty bright and better-looking, I think.

    Here's some of the highlights (so far)!



    The shoulder parts moving back and forth in time with the walk cycle. Done in code, of course, so that it'll transfer to other part setups.



    I animated the first two arm parts recently; when you use melee attacks, you can strafe backwards. Not sure if I want to give the player this option at all times or not (maybe through a button they can hold down or toggle...?).



    The world as it stands currently (incomplete, of course; still gotta make more graphics and stuff).

    ______

    I've planned out a lot of enemies (which are really a lot of the meat of Metroid-likes) - not really any NPCs yet, but that'll change soon enough!

    Something that's not shown in these GIFs is that you can communicate with NPCs, and when you do, the camera zooms in to focus on you both. When you're done, it zooms back out.

    Speaking of camera changes, the camera is now locked to specific zones, each at least a screen size large. This'll allow me to do single-room views easily, as well as get a good idea of how the game world is laid out. It should also enable me to actually have a map system that works halfway decently.
    _______

    I aim to be done by end of July, 2016. I've done a lot of planning so far (which you can see in the devlog videos); that's something that I'm doing differently this time around. I'm logging a ton more, so far, though I think I do want to do some more creative / technical process devlogs (i.e. planning and implementation testing).

    Anyway, let's go!



  2. #2
    Member hilkojj's Avatar
    Join Date
    Apr 2014
    Location
    The Netherlands
    Posts
    346
    Yay! Actually I already knew it from your Twitter and YouTube channel, but I'm really happy you're back on gearend. All of the animations look really nice and smooth.
    I aim to be done by end of July, 2016.
    That's really fast, does BDX make development easier and faster?
    *still working on a game about unicorns* Youtube Channel | Twitter



  3. #3
    Member haidme's Avatar
    Join Date
    Apr 2007
    Location
    Sofia
    Posts
    1,882
    From that distance in the second screen shot the protagonist looks like a cute deadpool character . Nice animations as always.
    Will you port this also to mobile?
    Game project: KRUM , Tomato Jones , BuildMoreCubes , Tomato Jones 2 -- all on Steam



  4. #4
    Weird, I thought I added a post and answered this...

    @hilkojj - Thanks! I wouldn't say BDX makes development easier or faster than the BGE per se, but as a developer of the engine, I fix problems I stumble upon, rather than trying to work my way around them. I'm also working on this basically full-time right now, so we'll see how it goes!

    @haidme - Thanks! No plans to port this to mobile - you're gonna need physical controls to play this game, haha.

    _____________

    Yo!

    Here's another development log video showing progress I've made in the past week!




    Apart from new art, cameras now lock to room objects I place in Blender, enabling me to position camera views where I want. Now I can, for example, lock the view to a single area in the game. When the player moves to another location, that room becomes active, and the camera now is fixed to that room. Each room object is exactly the size of the camera view, and if a room object is scaled, then the camera will slide around to the boundaries of the room object.


    This room system will be integral to any maps I put in the game, since I can just plot squares and rectangles on a grid in the same setup as I place objects in Blender to represent the game world. Easy-peasy!


    I also zoomed in the view a bit to make it easier to design the game world (since you see less, I don't have to create as much) and to just make it simply easier to see the game.


    I implemented the animations for the weapons, and added a new rocket launcher weapon. Before I added the launcher, I thought a handheld bomb would be cool, but it didn't really feel fun, so I changed it to a rocket launcher. I really like this a lot more, as there's more I as a developer can do with it. I implemented this same weapon for the first Gearend, too. No reason to mess with success, I guess!


    Anyway, sorry for the choppy footage; my HD Game Caster's kinda weirdin' out, so I used OBS for this.


    And yeah, I see the small graphical errors here and there (small one-pixel large gaps between tiles, for example); I'll fix them up later.



  5. #5
    Member adriansnetlis's Avatar
    Join Date
    Jun 2014
    Location
    Latvia
    Posts
    4,250
    Great game, nice progress. I wish you more luck!
    My Blogspot my 3d development blog. I am at GTM + 2.00 time belt! Intel® Core™ i5-6300HQ 2.3 GHz(quadcore), NVIDIA GeForce GTX960M, 4GB DDR4 RAM, Linux Ubuntu 16.04.
    Worn Tires, Engine Roar, AstrumNetwork.com, Support me in Patreon



  6. #6
    Looking great!
    I like the camera object idea. A good way of scripting your camera events.

    Will you be able to do rocket jumps?

    The rocket launcher animation looks amazing. Are you using sprites for your explosions?
    I saw a good trick for animating explosion particles the other day. I'm going to try it out myself, don't know yet whether it will be worth the effort, using material nodes objects in Blender can be a pain sometimes, but it's pretty easy to control them using either object color or lamp data (for global controls) as I did with the parallax background shader with rain effect in my BGMC entry.



  7. #7
    Member kitebizelt's Avatar
    Join Date
    Jan 2016
    Location
    Depok, Indonesia
    Posts
    128
    Are you using textured Cylinder for the smoky fog moving up?
    Game engine doesn't determine the looks of your game, but your usage determines.
    SSDF - POMB - PPMB - Bloom w/ Flares - SSGI (WIP) -



  8. #8
    @adrien - Thanks!
    @Smoking - Thanks to you as well! I think I will have rocket jumping - I just have to implement aiming up and down. From there, it'll be pretty easy to do. And yep, I animated the explosion myself. That approach to animation's pretty interesting; I should do more stuff with shaders, I suppose. It's kind of a shame that they didn't show the explosion's finished state, but the gameplay gif at the beginning showed it pretty well, I think.
    @kitebizelt - Yeah. The camera's in the cylinder as it rotates, and the cylinder's running a simple shader that fades the cloud texture out as it draws lower on the screen. It's also set to additive blending.

    _____________

    Here's a quick devlog video showing how I'm approaching AI for Gearend.



    The idea is to base everything around tracks that you can turn on or off, and that control which behaviors are being executed at any given time. It's basically lines of Finite State Machines strung together.


    Each Track will have only one active Behavior at a time, though you can have as many Tracks as necessary. Each track also will have its own mode (Normal, Choice, etc) and its own controls (for reversing, toggling, clearing, copying, etc). The general idea is to make reusable behaviors simple and easy to use across the different games I make.



  9. #9
    Yo! Since the last post, I've made a couple of videos!

    Here's one on a couple of enemies:



    Here's one on a new music track, "A Lost Kingdom":



    And here's the latest one on more enemies, the spawning system, and the cinematic / dialogue systems!




  10. #10
    It's looking great!

    The really terrible thing about making games is how when you've got an idea for one, it is awesome in it's potentiality. Anything could be in there. You could work on it for years. You can drop things, add other things. Every day you're brainstorming new content. It's a really comfortable and fun place to be.

    But then when you actually decide that you should go ahead and finish a game, make it in to something that people can play... Collapse the wave function as it were, open Schrodinger's box..

    That's not a very comfortable place. Now you have to make a choice about how many enemies to include. Some of your ideas you have to drop. If you have an amazing idea on the bus, you have to admit there's no way you could add it without adding further delays.
    If you suddenly decide that you hate all your art, you can't go back and re-do it all. You have to go ahead make the levels, write the dialog, and admit there's a chance that some parts won't be as awesome in reality as they are in your mind's eye.

    That's when making games becomes hard work. It takes a special kind of person to move in to that uncomfortable place and go ahead and actually make a finished thing. That's why there's so many unfinished projects around the web.

    So kudos for setting a finish date and working hard to get the game done. I'm watching to see how it turns out, I'll be excited to see a finished game at the end of it all. I'm trying to get in to that mindset myself, but I suddenly had a great idea at the weekend that I just had to add, and I couldn't resist.



  11. #11
    Thanks! Yeah, it can be tough. I might end up with far less than I'm imagining I will, just because I might be underestimating how much I need to do, and how hard I'm willing to / going to work on it all. We'll see in a few months, I guess.

    _______


    Here's another YouTube devlog video; in the past couple of days since the previous devlog, I've added a GUI for health and energy, and a new leg part for boosting.



    Also! Here's a couple of GFYCats if you don't want to load up the video and watch me talk about it.

    Fixed Up GUI: https://gfycat.com/WiltedMeaslyKilldeer

    Boosting Skates: https://gfycat.com/AcceptableCaringBeauceron



  12. #12
    Today and yesterday, I think, I did some work on saving and loading. Saving is accomplished using LibGDX's Preferences system, mainly because there's not really any need to wrap LibGDX's saving processes for BDX - they're already pretty solid and fine for the job. So, we just left 'em alone and point people to use Preferences (or whatever other system), basically.


    Any time you get the Preferences instance, LibGDX will create a file for it if it doesn't exist already. So, to check whether data is saved or not, I store an "exists" variable in the preferences file to keep track of if the game data exists. Alternatively, I could check to see if the file itself exists, but I'm a bit too lazy to write that code, and it'd have to change based on which OS the game is running on (as the preferences file is located in different places depending on the OS)... It's just easier to check for an internal variable. If it exists, the game data exists, if it doesn't, then the data doesn't, regardless of what variables are written inside.


    Anyway, here's another GFYCat for you! The Save Station Attendant's kind of... Disinterested, is the word? He's not really that, uh, well, attentive, to you. But, well, he gets the job done, so GJ, I guess.


    Thanks for reading!



  13. #13
    Yo! Here's an update with another devlog video!





    ______


    So it's been awhile, but I made a ton of progress between the previous video and this one. Here's the notes shamelessly copy-pasted from the devlog video description:


    - Got a new enemy in, Rainman, who moves back and forth and rains acid down around him. You can only attack him from the back, essentially (explosives might damage on a large enough radius to hit him despite its hit location; not sure).


    - Got a quick-select menu up and running. You can use the quick-select menu to quickly select your loadout, adjusting your equipment on the fly.


    - Implemented saving and loading and added a saving NPC.


    - Starting creating the actual in-game world, as I wanted to actually create the game, making different rooms with different challenges.


    - Got a new part in, the Deterrant. As a plasma shield, it blocks against projectile attacks (not explosives, I think). It's not an end-all-be-all against attacks, but should prove useful to help you out.


    - Added maximum HP and EP upgrades.


    - Up-sized the GUI a bit to be more visible.


    - Optimized the game a bit to run a lot better, and fixed a small bug in BDX that was causing seconds-long freezes when transitioning between rooms.


    ++++


    Currently I'm standing at 4/6 arm parts, 1/5 core parts, and 2/5 leg parts (counting Epsilon's defaults).


    I plan to be done with somewhere around 1 of the 3 zones by the end of this month. Same thing with the second and third month, though ideally, I'd basically be completely finished by the end of that third month.


    We'll see about that, I guess.


    Since this last devlog video, I've added another core part. I'm not certain what role it'll play, but I think it'll be a passive defense item, like "Reflects every third projectile hit", or something like that. I've also discovered a bug with the screen shader system I wrote for BDX, and since fixed it.


    Progress continues!



  14. #14
    nice progress please continue.



  15. #15
    Thanks!




    Hey, so here's a quickie little update. I'm adding gates that you pass through from place to place. They can be locked sometimes if a switch in the same room is triggered, or if enemies are left unbeaten (I'll probably make a variant of this gate for that purpose). This is the default gate, though, which simply opens when you're close enough.





    I noticed I don't really have any screenshots for the game here, so I'll try fixing that. Pictured is also a new tile (that's a bit ugly, but suitably "Megaman-like", so whatever).


    Also, I've implemented a map system. The current system is pretty basic - everywhere the camera can move in-game is indicated in-engine by Room objects. These objects are sized to a multiple of the screen's size, so a room that has a width of 2.0 means it's two screens wide. Anyway, the map system creates little squares in the GUI scene for each Room object. Each map square is scaled to the size of the corresponding room, and is placed in relation to where the Room objects are in the game scene. Fairly simple, hard to see, kinda crappy, but it works!





    Looking at this now, I probably should make the map stand out more by darkening the rest of the screen. I probably should also blur the background layer, similarly to the game layer, but.... Well.


    Here's a GFYCat of a new chest part and cloth physics I added because I could. I'm not 100% on what the chest part will do, but I have a general idea.
    ___


    I'm currently working on designing some NPCs for the hub town where you'll get your first melee weapon and the instructions of where to go next.


    Anyway, that's all for now!



  16. #16
    Member Lucrecious's Avatar
    Join Date
    Jul 2008
    Location
    Canada
    Posts
    2,637
    Loving the look. The head piece is especially cool with the blinking lights and the wavy (physics) rag is freakin' slick and sexy, how'd you do that with LibGDX/BDX? I'm curious.

    Also, it looks like you're getting pretty far into the game in terms of rooms, the map is pretty big - I'm excited to see the outcome!
    Last edited by Lucrecious; 21-May-16 at 18:18.
    Current Project: Apparatus
    Website: lucrecious.com



  17. #17
    Member BluePrintRandom's Avatar
    Join Date
    Jul 2008
    Location
    NoCal Usa
    Posts
    18,107
    5 - ***** - Vote added - nice work! keep up the progress
    Break it and remake it - Wrectified
    If you cut off a head, the hydra grows back two.
    "headless upbge"



  18. #18
    @Lucrecious - Thanks a lot!

    The scarf's a port of my old BGE trail code, now working in Java and with BDX. It's done by adjusting the vertices of the scarf to align with a "handle" object. Every frame it adds the rotation and position of the handle object to a list, and after so many frames, it bumps the oldest entry out of the list (so it maintains a list of a maximum of, say, 15 entries). That number is influenced by how long it takes for motion to travel down the trail (which is customize-able). The position of the handle object only matters if the trail stretches (like a Tron Lightcycle trail or something).

    Anyway, it steps through each vertex and moves it according to that list, updating the vertex's position based on the location and orientation stored. I guess you could just break it down into two pieces - altering the vertex's position based on the position and orientation of the handle object, and then storing that transformation to apply it later, giving a "late, wave" kind of effect.

    If you were to use it, it's available in my BDXHelper module here, on GitHub. You'd put the bdxhelper.jar file in your core/libs folder, next to bdx.jar. Then, you'd create the Trail component and put it on the trail object itself, like so:

    Code:
    components.add(new Trail(scarf, scarfHandle, "z"));
    The first argument is the trail object, in this case, my Scarf object from Blender. The second is the handle object, which is parented to the body part object (and so is parented to the player as well, but the Scarf object itself isn't parented to anything). The last argument is the axis on which the trail vertices are found. My scarf is a plane that heads down (because that's the resting position):



    ... So the vertices are found on the Z axis, heading out from the center of the object, with the Z value representing vertices on the same "level" (so the two vertices at the top of the scarf object use the most recent listing of the handle object's position and orientation).

    After that, I just rotate the handle to face the direction I want (i.e. left when you're heading right, or right when you're heading left), and the scarf automatically updates, smoothly waving in that direction. I also apply a slight random flutter to the handle to simulate wind.

    There's different variables in the Trail component that influences the trail's behavior, like whether the trail's movement should be reversed, whether the trail should update only when moving, whether it stretches, etc. There's stuff that it doesn't support (working on multiple materials, for example), but they wouldn't be too hard to add in, if or when I need it.

    This is one of those things that I made where I have no idea how I actually managed to do it, since I don't really have a good grasp of matrix math, haha. I just messed around with some stuff until it finally worked. :1

    The next devlog video'll talk about this a bit with visuals, I guess.

    @BPR - Thanks a lot!



  19. #19
    Member threedslider's Avatar
    Join Date
    Apr 2015
    Location
    France
    Posts
    261
    Me too voted to 5 stars !

    It's kinda awesome for your project.



  20. #20
    Hey, thanks!

    Here's another devlog video. Lotsa changes showed in this one! I actually also implemented some more stuff that I didn't actually show in the video, so... Hurray!




Page 1 of 3 123 LastLast

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •