Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411613 Posts in 69390 Topics- by 58447 Members - Latest Member: sinsofsven

May 10, 2024, 01:41:06 AM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsGearend - 2D Metroidvania *Old Thread*
Pages: 1 2 [3] 4 5 6
Print
Author Topic: Gearend - 2D Metroidvania *Old Thread*  (Read 26265 times)
SolarLune
Level 10
*****


It's been eons


View Profile WWW
« Reply #40 on: May 20, 2014, 11:45:21 PM »

Thanks a lot, everyone!

@diegzumillo - Sure, I have complaints. There aren't enough developers to continuously add nice new features and cool stuff or fix bugs on a regular basis (though they do the best they can and I really appreciate it). There's usually bugs when it comes to the less-traveled paths of development (i.e. render-to-texture), though I think I've figured out that stuff now. There's not really enough focus on the BGE to me considering how cool it is.

HOWEVER, there's not really any open-source, free, or even just cheap 3D alternatives to it (with the exception of UDK's $20 a month or whatever, though I'd think it's a bit overkill for smaller, simpler projects). Unity's $75 a month is rather steep, too, considering I have to hold out for a whole year.

The BGE is so incredibly easy-to-use that I can't go back to any other engine. I keep thinking, "Okay, let me start a project in another engine to learn it", but three hours into trying to get JME3 to load up my character on a plane with the texture and alpha channel intact I think,

"Hold up.

Why aren't I just doing this in the BGE?

I'd have the player done by now."

That's pretty much as far as I get. LOL

Godot's looking really cool, but it doesn't seem to be there yet documentation and feature-wise for my kinda weird game style. Panda3D might be cool, but it still seems to be lacking built-in joystick support - I don't really want to plop in Pygame just to work with it. Polycode would probably be awesome if it were ever released...

I can't wait for more open-source 3D engines to come around. Maybe I just need to slow down and try simpler games in other engines first to learn them or something. I don't know.

@poe I NO PO



So today I finally figured out how to apply a shader on top of a rendered-to-texture image. I'm running across a bug where it doesn't always apply; gotta squish it, but it's on its way.

« Last Edit: May 21, 2014, 06:43:10 AM by SolarLune » Logged

diegzumillo
Level 10
*****


This avatar is so old I still have a some hair


View Profile WWW
« Reply #41 on: May 21, 2014, 12:11:21 AM »

No point in switching to another engine if you're happy with the current one, despite its flaws. I'm a unity user (the free version) and I'm not exactly confident recommending it for 2d games yet. The 2d features are fairly new and bugged and lacking in functionalities.
Logged

mono
Level 10
*****


View Profile
« Reply #42 on: May 21, 2014, 03:09:16 AM »

oh hello
Logged

pnch
Level 1
*



View Profile WWW
« Reply #43 on: May 22, 2014, 07:47:38 AM »



The game is looking nice! Didn´t really get the hang of it until I saw the animated gif, now I want to see more.
About the menu...
[designer rant]
I´d go for a more subdued / less saturated tone for the middle background, and pay attention to preserve pixel scale between different elements for visual coherence (the button´s background and it´s font, for example). Preserving pixel scale would also force you to discard outlines in the inner buttons (since they surely would become too thick), which isn´t a bad thing in order to preserve coherence with the outer buttons. I like how it´s turning out in the next image, but the button´s background´s pixels are still smaller than the ones in the rest of the world.
[/designer rant]
Of course, you´re the designer, so take this with a grain of salt  Gentleman
Logged

SolarLune
Level 10
*****


It's been eons


View Profile WWW
« Reply #44 on: May 27, 2014, 02:09:31 AM »

@Mono - Hello

@pnch - Thanks for the tips - I'm pretty sure I also want to maintain the pixel scale between elements in the menu. I'll try to remember!

I didn't do much in the past few days, but I did implement a little scripting language for events.

Basically, I have a dictionary (associative array) in Python that will contain all of my events in the game. I also have them indexed by language (like I'm gonna add translation support to this, haha). I doubt I will have translation support as a first priority, but building it in is a good idea, I suppose. I might end up moving all dialogue to another file to make it easier to translate.

Anyway, the event is represented by a raw Python string. I use the shlex module's split function to parse the individual "instructions", or lines in the event. The shlex.split function kicks out the blank lines, creates lists for each non-blank line, and separates the line into elements of a list for every separate word that isn't in quotes. The function does all of this for me, which is really convenient, turning this:

r"""

setfacepic 0 1

dialog "HALT! Or slow down, or whatever.\nWho are you?"

"""

into this:

[

['setfacepic', '0', '1'],

['dialog', '"HALT! Or slow down, or whatever.\nWho are you?"'],

]

Once that's done, I add the instructions to a list. From this point, I just grab the current instruction to be completed, and when finished, increment that counter.

My Parse() function actually executes the code (guess I should have named it "Execute", haha) with just a series of if statements to find out what function was called (what first word the instruction has), and what arguments it was called with (what other words the instruction has).

For example, the dialog function displays a message; the only argument is the message to display.

I also have optional arguments for certain functions (like the wait function, which will wait a specific number of seconds if you specify; otherwise, it will wait for 1 second).

It shouldn't be too difficult to add new functions, which is great.
Logged

SolarLune
Level 10
*****


It's been eons


View Profile WWW
« Reply #45 on: May 29, 2014, 12:42:15 AM »

Didn't do much today either, but brainstormed some cool ideas for parts. I have a pretty good variety so far, and some have both combat as well as puzzle uses. So, I should be able to have multiple sources to get parts from (like purchasing some non-essential ones vs. finding others in the field), which is nice.

I sprited up a couple of bodies for mock-ups, and I like the general feel of them so far, which is cool.

I'm working a bit on the village, which is a bit hard to visualize, as it's all supposed to be contained in this large facility. So, I need to do some thinking on that to make it look different as well as structurally interesting.
Logged

SolarLune
Level 10
*****


It's been eons


View Profile WWW
« Reply #46 on: June 02, 2014, 12:44:48 AM »

Spent a lot of the weekend learning about Godot. It's an interesting engine for sure!

I'm working on making the village actually look nice. It's funny; now I have more ideas for how I want this to look.



Anyway, I'd like to implement some mechanics and get some important stuff done soon.
Logged

Bakuda
Level 1
*



View Profile WWW
« Reply #47 on: June 02, 2014, 06:28:14 AM »

This is looking so awesome!  Love the mechanics and really digging that music. Can't wait to play it!
Logged

Irock
Level 5
*****


why's my avatar so big


View Profile WWW
« Reply #48 on: June 02, 2014, 08:14:03 AM »

that might be the cutest computer ever Kiss
Logged

SolarLune
Level 10
*****


It's been eons


View Profile WWW
« Reply #49 on: June 02, 2014, 02:45:52 PM »

Heh, thanks, you guys.

I tweaked the Bloom filter to only affect brighter areas. I've tried this before, but I think I did it correctly this time. I used to use a luminance calculating function to compute overall brightness, but this would fail on certain colors that actually would be pretty bright (like red). Now I'm just getting the maximum value between the three channels, which is enough to tell what should be "Bloom"-ed and what shouldn't. There used to be a noise function tied in to make the bloom more interesting to look at, but I can't really get it to work with the shader since it's selectively blooming stuff, so whatever.

This makes it more even overall for certain bright things to bloom (i.e. not the trees), but I think I'll have to recolor some things (i.e. the backgrounds are now pretty dark).

Added an ability to set the pitch of the played back "beep-beep-beep" noise when you're talking to an NPC, so small characters can sound all beepbeepbeep and big characters can sound all beepbeepbeep. Also added the corresponding function to my event system.

Logged

adnzzzzZ
Level 1
*



View Profile WWW
« Reply #50 on: June 02, 2014, 04:07:33 PM »

How are you doing the moving grass?
Logged

SolarLune
Level 10
*****


It's been eons


View Profile WWW
« Reply #51 on: June 03, 2014, 12:37:28 AM »

The grass objects consist of invisible cubes with visible planes that have a grass texture on them. I move the top vertices of the plane using a sin() function to get the feeling of blowing in the wind. That sine wave is offset a bit randomly for each grass object to give that uneven windy feel.

If the grass objects come into contact with a bullet or come near an explosion, then I add a value to a force variable that adds an extra push to that sine wave. That force ramps down over a few frames, which gives it that "strong sudden gust" feel from an external force.



I spent a lot more time than necessary trying to hunt down a bug, but I (hopefully) managed to make the door system work between scenes. This was pretty much necessary to do since I wasn't gonna build the entire game in a single scene. It should be a slight loading process in the transition between scenes if you haven't visited the scene yet (around 4 seconds or so). I think it only takes that long once, though (unless the BGE frees the resources, which it might if it needed to). Anyway, doors still work between each other in the same scene as well, which is good if I wanted to allow characters to move through doors (though I doubt I'll implement that, now that I think about it).

I refactored the way the screen filters were taking effect and am making use of a single scene for it now rather than trying to cram them in with the object, which makes it easier to see and deal with. I was using an entire render to texture method to render out the game scene to a texture to blur on the pause screen, when someone at the BlenderArtists forums reminded me that Blender's screen filter system works on the current scene and every scene below that. So I just push the shader onto a camera (doesn't really matter what object it is) that's above the game scene (but below the GUI). It's working quite well so far. A nice, modular solution to offset the horrible non-modular rest of my code where the player and other stuff can be accessed globally but it's a different player reference between each scene and aaaaahhh

I've gotta find a better way to "encapsulate" things...

Gotta be careful of my FPS now that I'm getting into shader work and stuff, but I have a couple of ideas of how I could speed things up a bit as necessary. I hopefully will be able to maintain a nice high FPS value.

Anyway, progress continues.
Logged

SolarLune
Level 10
*****


It's been eons


View Profile WWW
« Reply #52 on: June 03, 2014, 01:15:57 PM »



Logged

eigenbom
Level 10
*****


@eigenbom


View Profile WWW
« Reply #53 on: June 04, 2014, 03:45:51 PM »

Looking great sol!
Logged

chuksxy
Level 0
**


View Profile WWW
« Reply #54 on: June 04, 2014, 05:04:19 PM »

Amazing work sir
Logged
BomberTREE
Level 9
****



View Profile
« Reply #55 on: June 04, 2014, 07:19:23 PM »

Wow man you're doing a great job!
Hand Clap  Hand Clap  Hand Clap
Logged
SolarLune
Level 10
*****


It's been eons


View Profile WWW
« Reply #56 on: June 04, 2014, 07:53:38 PM »

Thanks, you guys!

It took time and effort (literally hours to get this to work), but I finally got an actual map up and running. This would be relatively trivial in a traditional 2D game, but since this is essentially "HD" in that there's no grid like old-school games, I had to use raycasts to find where the ground wasn't, which is where you can walk, and then create a list of lists out of that. Then I spawn the map tiles where those values indicate and lock the player to that grid. I could refine the corners a bit, and the player's not locking to the grid completely perfectly 100% of the time (I don't think), but whatever! I'm done!  Cheesy



I still have to add other stuff to the map, like exits, but whatever, I'll get to it. The map won't actually be visible all of the time; it's going to be on the pause menu, perhaps in another menu (or perhaps just visible normally). I have to kind of decide on that front.
Logged

08--n7.r6-79.84
Level 8
***


You can call me 08.


View Profile WWW
« Reply #57 on: June 09, 2014, 08:25:42 AM »



I don't like glow effect, but I love the mood of this, especially in these screenshots:




Really looking forward to the demo.
Logged

SolarLune
Level 10
*****


It's been eons


View Profile WWW
« Reply #58 on: June 11, 2014, 07:39:04 AM »

Hey, thanks!

I spent time over the past couple of days refactoring my Python Sprites module to work like FlashPunk / other SpriteMap modules, like:


spritemap = BGHelper.Sprites.SpriteMapMesh(obj['sprite'])

spritemap.add('walk', ['PlayerWalk', 0, 1, 2, 3, 4, 5, 6], 16, loop = True)

And then elsewhere...

spritemap.play('walk')



... Instead of using functions like it was written before (for some reason?). So, I also refactored Gearend's sprites to make use of these new SpriteMaps. Tiring, but I think it's for the best. The code's a bit shorter, I think, and seems easier to work with. The SpriteMaps have nice helper functions, like getting the length of animations or setting the FPS for specific animations, as well. Oh, and the map only displays on the pause screen now.
Logged

BomberTREE
Level 9
****



View Profile
« Reply #59 on: June 11, 2014, 08:53:16 PM »

Wow that must be pretty interesting creating your own workflow like that  Coffee
Logged
Pages: 1 2 [3] 4 5 6
Print
Jump to:  

Theme orange-lt created by panic