As was foretold, we've added advertisements to the forums! If you have questions, or if you encounter any bugs, please visit this thread: https://forums.penny-arcade.com/discussion/240191/forum-advertisement-faq-and-reports-thread/
Options

Let's Make a Game: Platformer Edition [Playable Alpha (Win/Mac)! See page 8]

1246

Posts

  • Options
    ZackSchillingZackSchilling Registered User regular
    edited May 2009
    Delzhand wrote: »
    I think it's a kid in a giant soup can, and I think it looks amazing - sort of like a mech without anime-baggage.

    Also, how do you handle moving platforms? Do they exert a force on the player object, or is the player somehow rooted to the while stationary? In my platformer the player is moved the distance between the platform's last and current position, but that would never work for rotating platforms.

    In the physics engine, all characters capable of walking run a routine called "seek ground" that looks 10 pixels in each direction from the bottom edge of their hitbox. If it finds ground, it aligns the bottom of the hitbox to the highest point. This allows characters that walk on arbitrary ground shapes. The amount of vertical adjustment is recorded but not factored into real velocities. That way, the player doesn't become unglued from the ground so easily but when another object needs to inherit your velocity, such as a projectile you're throwing, that object can inherit the Y velocity and the ground adjustment for proper behavior.

    This means that vertically moving platforms, no code changes are necessary. I just change the collision mask on the ground and the objects notice they've become embedded and shoot to the top. For horizontal movement of platforms, I added a variable to the basic PhysicsObject that allows for an external horizontal velocity.

    Moving platforms have attached a hitbox that when entered by any object, set this variable. It's recalculated every frame, so I just read off the velocity of the platform object directly and push it to any objects in the platform's influence.

    The rotating platforms are a cheat. I create an object that appears to be a moving platform, but I override the physics methods that would normally add up accelerations into velocities into positions, so they remain stationary. The hitbox that would normally keep the player fixed in place by matching velocities then pushes the player to the left or right, depending on what I set the velocity to. I don't bother calculating the real rotational velocity because I don't have to. The seek ground code keeps the player moving on a circular path and the steady horizontal velocity looks good enough.

    ZackSchilling on
    ghost-robot.jpg
  • Options
    ZackSchillingZackSchilling Registered User regular
    edited May 2009
    I cannot help myself from continuing to tweak the limbs to look better. I made a case for sprites using additive blending (so I could make lights, basically), but then I realized that I could make limbs look a bit more like TripWire's picture and less like a cloud of squares. The latest look:

    bomb.pngbomb2.png
    lighting.gif

    ZackSchilling on
    ghost-robot.jpg
  • Options
    ZackSchillingZackSchilling Registered User regular
    edited May 2009
    I've designed hybrid enemy/platforms and made the second boss into one. Here I am getting totally fucked up by it. Seriously. I'm determined not to make this easier, but I've yet to legitimately beat him once in testing. Not one time. It is possible, if I ramp up my attacks to do quadruple damage or lower his health, but screw that.

    boss2.png

    http://www.youtube.com/watch?v=RQ4k722iNRo

    This game is going to be hard as shit. Nintendo hard.

    ZackSchilling on
    ghost-robot.jpg
  • Options
    exoplasmexoplasm Gainfully Employed Near Blizzard HQRegistered User regular
    edited May 2009
    The camera needs to respect the walls in boss fights. That always bothers me in games where you can't see the boss cause the camera is off somewhere else.

    exoplasm on
    1029386-1.png
    SC2 NA: exoplasm.519 | PA SC2 Mumble Server | My Website | My Stream
  • Options
    ZackSchillingZackSchilling Registered User regular
    edited May 2009
    The ability to add camera restrictions in the engine, I just hadn't added them to that particular room, since I'm still coding that boss. They're actually easy to implement.

    Here's the level code for that particular room:
    def triggers(self, gameinfo):
            playerrect = gameinfo.player.envhitbox.move(gameinfo.player.positionx,gameinfo.player.positiony)
                
            if playerrect.clip(Rect(1175,1050,250,100)) and self.boss_spawn:
                gameinfo.spawnobj(self.boss_actor)
                self.boss_spawn = False
                gameinfo.camera.setblock(Rect(1163, 0, 880, 2000))
            
            if self.boss_actor.dead == 1 and self.boss_not_dead:
                gameinfo.spawnobj(create("MovingObjectWrapper", [(1960,1860),(1960,860)], ANI_BOUNCE, 2, "Platform",(1960,1200),style=1))
                self.boss_not_dead = False
                gameinfo.camera.clearblock()
    

    Right now, such camera hints are simplistic and are pretty much limited to a box that the camera will consider to be the playable area. I hope to add additional camera features, like intelligent framing, but at this point, I think I'm ok with simple "always centered unless near the edge of the playable area" behavior I have now. It's less distracting.

    My favorite piece of code is this baby:
    [COLOR="Red"]gameinfo[/COLOR].[COLOR="SandyBrown"]spawnobj[/COLOR]([COLOR="YellowGreen"]create[/COLOR]("[COLOR="Yellow"]MovingObjectWrapper[/COLOR]", [COLOR="Pink"][(1960,1860),(1960,860)][/COLOR], [COLOR="Lime"]ANI_BOUNCE[/COLOR], [COLOR="PaleTurquoise"]2[/COLOR], "[COLOR="Plum"]Platform[/COLOR]",(1960,1200),style=1))
    

    It says: Tell the engine to spawn in a new object that moves back and forth on a pre-defined path at a speed of two pixels per frame and make that object a walkable platform. Place it initially at (1960,1200) and take on visual style #1 (I ran out of good colors).

    Because the MovingObjectWrapper can be applied to any object at all, I can make platforms move, affix enemies and other hazards to spinning poles, and create irregular paths for platforms (like in 2D Marios). It's yet another way to leverage object orientation.

    ZackSchilling on
    ghost-robot.jpg
  • Options
    DelzhandDelzhand Hard to miss. Registered User regular
    edited May 2009
    This game is going to be hard as shit. Nintendo hard.

    You should really think hard about this. "Nintendo hard" gets tossed around a lot by indie devs, and it usually just means frustrating. Most Nintendo games were hard because of cruddy controls or bad design. Simon Belmont couldn't alter his direction during a jump. Samus started new games with 30 life no matter how many e-tanks she had. Ninja Gaiden had those goddamned birds.

    A lot of rom hacks are "Nintendo hard", and it's usually an excuse for the developer to put pixel precise jumps, poorly placed enemies, and bad level design. These are the reasons I never finished Eternal Daughter, Super Metroid Redesign, or most of the Megaman rom hacks.

    Basically, if your fight is challenging for x reason, it should be beatable with y skill.

    Pattern : memorization, tell recognition, quick reflexes
    ie: most platformers

    Attrition : Stat grinding, luck
    ie: RPGs, later castlevanias

    Puzzle : game hint recognition
    ie: 3d Marios/Zeldas/Metroids

    I guess I'm just saying don't make it hard just for the sake of being hard.

    Delzhand on
  • Options
    ZackSchillingZackSchilling Registered User regular
    edited May 2009
    Delzhand wrote: »
    This game is going to be hard as shit. Nintendo hard.

    You should really think hard about this. "Nintendo hard" gets tossed around a lot by indie devs, and it usually just means frustrating. Most Nintendo games were hard because of cruddy controls or bad design. Simon Belmont couldn't alter his direction during a jump. Samus started new games with 30 life no matter how many e-tanks she had. Ninja Gaiden had those goddamned birds.

    A lot of rom hacks are "Nintendo hard", and it's usually an excuse for the developer to put pixel precise jumps, poorly placed enemies, and bad level design. These are the reasons I never finished Eternal Daughter, Super Metroid Redesign, or most of the Megaman rom hacks.

    Basically, if your fight is challenging for x reason, it should be beatable with y skill.

    Pattern : memorization, tell recognition, quick reflexes
    ie: most platformers

    Attrition : Stat grinding, luck
    ie: RPGs, later castlevanias

    Puzzle : game hint recognition
    ie: 3d Marios/Zeldas/Metroids

    I guess I'm just saying don't make it hard just for the sake of being hard.

    I hear you, and since this is just a casual project and I've never made a game before, I'm playing it by ear.

    One boss, the cloud of bouncing spike balls, is a bitch until you realize that you can round them up by running back and forth underneath them, lure them to a cliff edge, and punch them off in a group. That's more of a puzzle-type boss. If you dive in, it's close to impossible to win. Stepping back and developing a strategy allows you to win every time, easily. Hard at first, but fun and rewarding.

    This boss, the spike cannon on booster rockets, is still under construction. Beating it will depend more on pattern recognition and quick reflexes. Each move either happens at a regular rate or is signaled by a tell. There are no unavoidable attacks. The biggest challenge comes from the fact that ranged attacks barely scratch it but melee attacks put you dangerously close to the hazardous fire and flying projectiles. It also speeds up as its health gets low, so you have less and less time to get away.

    I can't find the right strategy to beat it quite yet, but if I can't figure it out in this incarnation, I'll make it weaker, slower, or change up the terrain to offer some safer places to attack from. I want the game to be hard but definitely not frustrating or stupid.

    Also, if anyone has any ideas for bosses, artistic, attack patterns, premises, or just plain cool ideas, post them in here. For the longest time, I thought I had this wealth of ideas for every aspect of a game, but now that it's time to start putting those things into play, I'm getting game designer's block. I want to get a cool demo together to drum up some interest.

    ZackSchilling on
    ghost-robot.jpg
  • Options
    VistiVisti Registered User regular
    edited May 2009
    Hey Zack, could you just bump what you need now? Do you need more music?

    Visti on
    [SIGPIC][/SIGPIC]
  • Options
    ZackSchillingZackSchilling Registered User regular
    edited May 2009
    Sure. My current order of business is putting out a demo of the first 5 stages. They are: Factory, Forest, Hills, Mountaintop, and City Entrance.

    I need music for Forest, Hills, and part of Factory. The level design is about 50% done on Factory, 40% on mountaintop, and essentially 0% on the others. I need music for Factory

    I'm actually using your Tema_#1 for the factory boss battle so let's start with that. It would be perfect if you could revise it so that it works well for a video game, then get it to me either uncompressed or in OGG format so I can program the revised music system around it. Right now, the music system consists entirely of me telling the SDL framework to play a file located at a path. I'm revising it to work with chopped up bits of music that loop and fade. I'd like a song to use while programming and testing. Here's the sections I'd need of Tema:

    Bare into with piano -> Loopable with symbol beat for level -> Bridge (if needed) -> Loopable intense beat for boss battle -> Outtro for boss defeat
    [b]Music Segment[/b]:
    Filename: "file name"
    Repeat: #, Inf.
    Segue out: On loop, Immediate, Nearest-break
    Breaks: [time, in, milliseconds]
    Rhythm Cues (future rhythm use): [time, in, milliseconds]
    

    So each segment of music gets this set of properties. Segments can transition to other segments either immediately, whenever they have finished a loop, or at set breakpoints, defined as a list of times in milliseconds. Each level will be able to queue up segments at load time (or live as play goes on) and then use game conditions to tell the music when to change from one segment to the next.

    That way, I can use wave data rather than MIDI or MOD music and still retain some properties of dynamic video game music. In the future, each segment will have rhythm cues (maybe two or 3 tracks of them if needed), defined just like the breakpoints, as lists of times in milliseconds into the sample when beats occur. That will form the foundation of the rhythm gameplay.

    ZackSchilling on
    ghost-robot.jpg
  • Options
    VistiVisti Registered User regular
    edited May 2009
    I have a suggestion for another possible factory track here. This one was actually made yesterday while thinking about your game. It would also be a lot easier to rework for use in the game, since I don't actually have the project files for Tema_#1 anymore, so I would have to try and replicate it with different instruments.

    Visti on
    [SIGPIC][/SIGPIC]
  • Options
    ZackSchillingZackSchilling Registered User regular
    edited May 2009
    That's ok, this is really cool and more inline with my original idea. I was just working with what I had. Let me listen to it in a bit and I'll get back to you.

    ZackSchilling on
    ghost-robot.jpg
  • Options
    ZackSchillingZackSchilling Registered User regular
    edited May 2009
    I like it a lot. I'm getting started coding this new music system. Any chance I could get a version of this cut up for looping? I noticed at least 3 distinct sections that could loop with little bridges between. I'd just like some music to code against to get going on this demo.

    ZackSchilling on
    ghost-robot.jpg
  • Options
    LegbaLegba He did. Registered User regular
    edited May 2009
    Hey man, I just wanted to add my two cents and say that this game looks pretty damn kick-ass. It's really interesting to watch the various iterations of the game throughout the thread as you make changes and updates.

    Also, I loved the kid-in-a-tomato-can concept art.

    Legba on
  • Options
    VistiVisti Registered User regular
    edited May 2009
    Chopping this up now. How do you want to handle the looping? Say something like this:
    // Intro
    
    // First loop / After three bars random fill from three possible
    
    // bridge 1
    
    // Second loop / After three bars random fill from three possible
    
    // Third loop / After three bars random fill from three possible
    
    // Outro
    

    Would that be too ambitious? It wouldn't be a problem on my part. Also, how long would you preferably have each loop?

    Edit: Done! Right now it is chopped into ten parts with no fills. Uploading now.

    Visti on
    [SIGPIC][/SIGPIC]
  • Options
    ZackSchillingZackSchilling Registered User regular
    edited May 2009
    Visti wrote: »
    Chopping this up now. How do you want to handle the looping? Say something like this:
    // Intro
    
    // First loop / After three bars random fill from three possible
    
    // bridge 1
    
    // Second loop / After three bars random fill from three possible
    
    // Third loop / After three bars random fill from three possible
    
    // Outro
    

    Would that be too ambitious? It wouldn't be a problem on my part. Also, how long would you preferably have each loop?

    Absolutely not too ambitious. I wrote up the gapless looping stuff this morning. It works well, no skipping or jittery music. It supports an arbitrary number of music sections, both looping and one-shot, in any order. Any type of music section can lead into any other type. There's no randomization, but I could either pre-calculate it or add it in.

    I'd like to keep individual files in the music under 2:00 the the sake of the rhythm sync code, which reevaluates once per loop or section change (much longer and errors seem to accumulate, throwing the rhythm track and audio out of sync).

    ZackSchilling on
    ghost-robot.jpg
  • Options
    VistiVisti Registered User regular
    edited May 2009
    The loops are much shorter than that, I'll upload this bunch and take a look at adding some fills for them.

    Visti on
    [SIGPIC][/SIGPIC]
  • Options
    VistiVisti Registered User regular
    edited May 2009
    Here you go, Zack: http://testinggrounds.bandcamp.com/ - Just click "Download Album" and you can have your choice of .wav, .flac or .ogg in a neat zip-file.

    They should all be loopable except the outro. Which is also loopable, it just doesn't make any sense to do that.

    Visti on
    [SIGPIC][/SIGPIC]
  • Options
    ZackSchillingZackSchilling Registered User regular
    edited May 2009
    The loops are working great, it's really cool to have more dynamic music.

    One problem: the "First Loop Bridge To Second Loop" doesn't bridge the first and second loops. I checked it in Audacity to make sure it wasn't the game misbehaving. On investigation it seems like maybe you swapped the labels on loops 2 and 3. I'll look at it in more depth later. I've got to go for now.

    Thanks again. I'll post a video once the factory level is finished and the playable demo is just around the corner.

    ZackSchilling on
    ghost-robot.jpg
  • Options
    VistiVisti Registered User regular
    edited May 2009
    Sounds pretty probable. I'll take a look at it.

    Alright - listening to the uploaded stuff, I scewed up at least a few things. Second_loop starts with the last bar and then goes through 1-3. The First to second bridge is the correct one, but it is cut very short. I'll fix it.

    Visti on
    [SIGPIC][/SIGPIC]
  • Options
    VistiVisti Registered User regular
    edited May 2009
    Here you go, fixed the two parts and added some alternatives I guess would be nice to have if the player lingers in an area?

    Visti on
    [SIGPIC][/SIGPIC]
  • Options
    ZackSchillingZackSchilling Registered User regular
    edited May 2009
    This is much better. Yeah, you're right on the alternative loops. I need to find a way to work them in.

    I know that the SDL mixer, my sound API, is capable of doing everything I want it to do. It can loop sound files, fade them out, keep synced to a timer, and push two files together in a gapless fashion. I just need to build a class to control it better.

    I need to revise my implementation of this music system to allow for more flexibility and better RAM usage. Right now, the game is caching the same loop 3 or 4 times because it's used by multiple levels. This will be a great data set to program off of.

    ZackSchilling on
    ghost-robot.jpg
  • Options
    ZackSchillingZackSchilling Registered User regular
    edited May 2009
    Sorry to keep bothering you about this, but the second loop does not transition properly into the third, the third doesn't transition into the fourth, and the fourth doesn't transition into its bridge to outro. The bridge to outro skips a bit but nothing big.

    The beginning (Intro->Bridge1->Loop1->Loop1Buildup->Bridge2->Loop2) is perfect, however. It's all good enough to use in development, but eventually those last 4 will need to flow also. Don't worry about it for now.

    ZackSchilling on
    ghost-robot.jpg
  • Options
    VistiVisti Registered User regular
    edited May 2009
    Oh, wait. Yeah. I think I meant to do some transitions inbetween those. I don't know why I forgot, but I'll have those up tomorrow.

    Visti on
    [SIGPIC][/SIGPIC]
  • Options
    VistiVisti Registered User regular
    edited May 2009
    Here, Zack. Perhaps these would smoothen things out a bit: http://testinggrounds.bandcamp.com

    They were a little quickly done, but I think they'll work.


    Edit: gah! I still missed the fourth transitioning into the bridge..

    Visti on
    [SIGPIC][/SIGPIC]
  • Options
    ZackSchillingZackSchilling Registered User regular
    edited May 2009
    I've got all the pieces now, thanks. Some are slightly off but I'll trim them myself to make the loops cleaner. I have a system for alternate loops now. I've also allowed 2-way communication between the music and level code.

    For example, originally, the factory boss would enter the screen when the player stepped into a certain space in the level. That trigger would also tell the music: "At the next possible moment, break out of your current loop and head to music section 5." Where section 5 would be the bridge into the more intense portion of the music. Bridges auto-advance.

    Now when the player crosses that invisible line I tell the music the same thing, but I tell the level to check on the music and make sure not to spawn the boss until that transition happens. The music is just as dynamic, but the level triggers can read off when the dynamic cues actually happen, so at times when events need to sync with a certain sting in the music, for example, that can happen. You'll see it all in action when this segment is done.

    Now to finish Factory 1, create Factory 2, and polish Factory 3. Then I've got my first level completed, dynamic music and all!

    ZackSchilling on
    ghost-robot.jpg
  • Options
    FremFrem Registered User regular
    edited May 2009
    Having played a lot of Mega Man, that boss doesn't actually look too bad...

    Frem on
  • Options
    lazerbeardlazerbeard Registered User regular
    edited May 2009
    I finally checked out these videos, I've been meaning to for a bit, and I gotta say, I'm impressed as hell. Most people don't have the balls to get as far as you have, best of luck to you finding some sweet artists and making some fun content.

    If I may offer a suggestion however, it appears you are using additive-transparency particles now (good move, it looks much better) but in your last screenshots, the particles were still quads, albeit transparent quads, have you given any thought to using an alpha mask to soften out the particles?
    20fuuio.png
    2ibnk36.png

    Here's some simple examples of simple softer looking particles, one is just a standard softer particle and the other was just me messing around. Just texture the particles using a texture with an alpha channel, and you'll get a lot better results. You can of course also animate those particles to get more fun results, and there's a million other tricks you can do with particles to make them look effing sweet, that should be an easy one if you haven't done it yet though. I suspect you have, but anyway, keep up the good work, I'd love to play a build, even if unfinished!

    lazerbeard on
  • Options
    ZackSchillingZackSchilling Registered User regular
    edited May 2009
    lazerbeard wrote: »
    I finally checked out these videos, I've been meaning to for a bit, and I gotta say, I'm impressed as hell. Most people don't have the balls to get as far as you have, best of luck to you finding some sweet artists and making some fun content.

    If I may offer a suggestion however, it appears you are using additive-transparency particles now (good move, it looks much better) but in your last screenshots, the particles were still quads, albeit transparent quads, have you given any thought to using an alpha mask to soften out the particles?
    20fuuio.png
    2ibnk36.png

    Here's some simple examples of simple softer looking particles, one is just a standard softer particle and the other was just me messing around. Just texture the particles using a texture with an alpha channel, and you'll get a lot better results. You can of course also animate those particles to get more fun results, and there's a million other tricks you can do with particles to make them look effing sweet, that should be an easy one if you haven't done it yet though. I suspect you have, but anyway, keep up the good work, I'd love to play a build, even if unfinished!

    How would I go about texturing the particles? Here's the draw code for the ParticleJet object, the basis for the player's limbs, the blue fire coming off the blue spike balls, and the jets on the factory boss:
        def draw(self):
            if self.visible:
                # Push the data to the graphics card
                glBindBuffer( GL_ARRAY_BUFFER, self.verbuffer )
                glBufferData(GL_ARRAY_BUFFER , self.particles, GL_STREAM_DRAW_ARB )
                glVertexPointer(2, GL_FLOAT, 20, None)
                
                glEnableClientState(GL_VERTEX_ARRAY)
                glDisable(GL_TEXTURE_2D)
                glPointSize( 10 )
                
                # Draw once in translucent black to mask the background (creates a glow on light and dark backdrops)
                glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
                glColor4f(0,0,0,0.02)
                glDrawArrays( GL_POINTS , 0 , self.numparticles)
                
                # Draw a second time with additive blending for cool effects.
                glBlendFunc(GL_SRC_ALPHA, GL_ONE)
                glColor4f(self.color[0],self.color[1],self.color[2],self.color[3])
                glDrawArrays( GL_POINTS , 0 , self.numparticles)
                
                # Set the drawing state back up the way it should be.
                glColor4f(1,1,1,1)
                glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
                glDisableClientState( GL_VERTEX_ARRAY )
                glEnable(GL_TEXTURE_2D)
    

    Can I still use glPoints or will I have to figure out a way to generate an array to use with quads and triangle strips? I've done it before, but a lot of the efficiency (in python, not OpenGL) on the particles comes from the fact that I'm using glPoints.

    If I do have to convert to quads or something, I will eventually, because you're right, it'll make the particles look much better. If not, please let me know. I asked around for a while but no one seemed to know how to do it with points.

    ZackSchilling on
    ghost-robot.jpg
  • Options
    ZackSchillingZackSchilling Registered User regular
    edited May 2009
    I got it.
        def draw(self):
            if self.visible:
                # Bind the point sprite texture
                glBindTexture(GL_TEXTURE_2D, self.texture)
    
                # Push the vertex data to the graphics card
                glBindBuffer( GL_ARRAY_BUFFER, self.verbuffer )
                glBufferData(GL_ARRAY_BUFFER , self.particles, GL_STREAM_DRAW_ARB )
                glVertexPointer(2, GL_FLOAT, 20, None)
                
                # Setup the drawing for VBO, Point Sprite, Texture-mapped points
                glEnableClientState(GL_VERTEX_ARRAY)
                glEnable(GL_POINT_SPRITE)
                glTexEnvi(GL_POINT_SPRITE, GL_COORD_REPLACE, GL_TRUE)
                glPointSize( 12 )
                
                # Draw once normally to mask the background.
                glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
                #glColor4f(0.13,0.42,1.0,0.4)
                glColor4f(0,0,0,0.02)
                #glColor4f(1,1,1,1)
                glDrawArrays( GL_POINTS , 0 , self.numparticles)
                
                # Draw a second time with additive blending for cool effects.
                glBlendFunc(GL_SRC_ALPHA, GL_ONE)
                glColor4f(self.color[0],self.color[1],self.color[2],self.color[3])
                glDrawArrays( GL_POINTS , 0 , self.numparticles)
                
                # Set the drawing state back up the way it should be.
                glColor4f(1,1,1,1)
                glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
                glDisableClientState( GL_VERTEX_ARRAY )
                glDisable(GL_POINT_SPRITE)
    

    ZackSchilling on
    ghost-robot.jpg
  • Options
    lazerbeardlazerbeard Registered User regular
    edited May 2009
    I honestly don't use point sprite for a number of reasons, and I havent done GL programming in two years, I'm using DirectX right now, they do the same thing(with some differences in how they get there), but I can't give you function names unfortunately : (. Eventually, however, if you want a *lot* of particles it will be more advantageous to draw them as quads and use hardware instancing to draw as many copies of the same particle as you can at the same time. I really want to see what they look like now, its pretty fun to make shapes for your alpha cutouts, GIMP + Gaussian blur + contrast + whatever you want to draw is pretty much all you need.

    lazerbeard on
  • Options
    ZackSchillingZackSchilling Registered User regular
    edited May 2009
    It's more important that I deal with fewer coordinates for the sake of Python than it is I use the GPU hardware to its fullest. I might have a few thousand particles at once at worst in this 2D game.

    The cutout I made (I load up a 32x32 version of this for the game):
    particle.png

    How it looks:
    particle3.png

    What happens when you put your face in the fire too many times trying to get a screenshot:
    particle2.png

    Much nicer. Thanks for the push to fix this now.

    ZackSchilling on
    ghost-robot.jpg
  • Options
    lazerbeardlazerbeard Registered User regular
    edited May 2009
    It looks pretty sweet, can you change the template, or is it just one template for all?

    lazerbeard on
  • Options
    ZackSchillingZackSchilling Registered User regular
    edited May 2009
    Right now the texture is loaded globally, but I could override it with an optional parameter or something. I'll add that feature if I ever need it.

    ZackSchilling on
    ghost-robot.jpg
  • Options
    ZackSchillingZackSchilling Registered User regular
    edited June 2009
    I got tired of tedious testing so I made some cheat codes for the game. There are 4 cheats:

    Warp to next checkpoint (helps a lot in testing)
    Infinite Health (again, helps a lot)
    Infinite Jump frames + air jump (really, really fun, especially the way the game looks)
    A Sonic the Hedgehog-style debug mode where you can insert almost any object in the game

    The debug mode is the coolest. You punch in a code and instead of just being able to cycle through the allowed projectiles, you can cycle through all in-game objects. That includes things like enemies, platforms, various animations, and even additional player characters, which can either be hooked to your controller object, an AI controller object, or nothing. I like spawning the factory boss in the middle of other levels.

    debug1.png

    debug2.png

    The Factory Boss:
    debug4.png

    Moments later...
    debug3.png

    ZackSchilling on
    ghost-robot.jpg
  • Options
    DelzhandDelzhand Hard to miss. Registered User regular
    edited June 2009
    I imagine it looks better in motion - I have no idea what I'm looking at in any of those screens.

    Delzhand on
  • Options
    VistiVisti Registered User regular
    edited June 2009
    Dude, that sounds awesome as hell. Give us that demo, you tease. Or at least more videos.

    Also, did anyone else chime in with some music (see what I did there?)? I could take a look at some of the other scenes, since I've just finished exams.

    Also acquire some kickass artists!

    I can't remember if I mentioned it before, but:

    http://conceptart.org/forums/forumdisplay.php?f=44

    "I have an actual factual engine" would be a far cry from the usual "I have a comic book idea, but no skill" posts these guys usually suffer. And there's some real talent there. I don't remember if CGtalk has a similar subforum, but some of the non-pros there are also golden.

    Visti on
    [SIGPIC][/SIGPIC]
  • Options
    MikeManMikeMan Registered User regular
    edited June 2009
    some of those screens look a bit too crowded

    MikeMan on
  • Options
    ZackSchillingZackSchilling Registered User regular
    edited June 2009
    I'm working really hard on finishing the demo. The hardest part is coming up with good level design ideas and creating more in-game objects. I want the demo to include the Factory and Mountain segments. Right now it takes me just about 8 minutes to finish everything and a lot of parts in the levels are empty.

    Visti, your music is great in the factory level. It's working great, the loops are a good length, and even the shortest segments aren't grating or repetitive. I implemented an ambient noise track too, and it sounds good with the storm sounds I have going in the back.

    ZackSchilling on
    ghost-robot.jpg
  • Options
    ZackSchillingZackSchilling Registered User regular
    edited June 2009
    The screens are of a debug mode, where I just started throwing in-game objects everywhere, including a boss character, who would fly around and get himself blown up by the spike cannons I spawned in there. The actual game isn't like that. The busy background doesn't help either.

    ZackSchilling on
    ghost-robot.jpg
  • Options
    lazerbeardlazerbeard Registered User regular
    edited June 2009
    Just asking, does your editor support pre-fabricated objects? For instance, in the second screenshot did you have to place the light post sprite and the sprite for the light it casts separately, or do can you place a light object in the world and it includes both the light post sprite and the light ray sprite?

    lazerbeard on
Sign In or Register to comment.