Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411507 Posts in 69374 Topics- by 58429 Members - Latest Member: Alternalo

April 26, 2024, 12:41:09 AM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsSpooky Pooky
Pages: 1 ... 4 5 [6] 7 8 ... 10
Print
Author Topic: Spooky Pooky  (Read 43308 times)
siskavard
Guest
« Reply #100 on: August 20, 2015, 02:35:07 PM »

hmm, if you want to avoid shooting you could have a platform moving back and forth that blocks the bullets so you have to time it just right to get across unscathed?
Logged
Crabby
Level 2
**



View Profile
« Reply #101 on: August 20, 2015, 02:36:51 PM »

This is really cool.
I mean every word of that.
And the name is awesome.
And the theme is awesome.
And the story is awesome.
Geez! I just love this game's style! (and the graphic effects!)(and the character!)(and so much more)

Edit: and about the shooting problem, maybe in skeleton form you could fall apart and some bones could bounce around, damaging enemies a bit. A small, not too powerful attack. You don't want the player feeling like they don't have a chance at all.
Logged

Working on something new!
Follow me @CrabbyDev.
joeyspacerocks
Level 1
*



View Profile WWW
« Reply #102 on: August 21, 2015, 11:59:50 PM »

Wow @Crabby - that's quite an endorsement - thank you!

Hopefully playing the actual game will live up to the high expectations Smiley
Logged

Andrew Brophy
Level 2
**


can't be hip forever


View Profile WWW
« Reply #103 on: August 22, 2015, 12:15:42 AM »

dang   n i c e
Logged

joeyspacerocks
Level 1
*



View Profile WWW
« Reply #104 on: August 31, 2015, 05:13:37 AM »

Recently I've been playing around with title screens which lead to a much needed tidy-up of various aspects of the code-base.

Specifically I've now made the level code a bit more self-contained so that I can, for instance, design arbitrary screens using levels.

So the title screen is now just another level with electrical entities for the titles themselves, etc.



It's only a stand-in for the moment as from a design point of view it's a bit messy plus there's not actually any room for UI menus and the like.

Next up is a long-overdue clean of the render code. Specifically I never really handled rendering entities at different depths very well - I simply kept the entities in different buckets (arrays) in the level and used those to render them. I did it this for simplicity and because it was quick to knock together when I needed it. This obviously led to some nasty code in other places where I want to iterate over.

So I'm finally going to fix this and add some proper sorting in the render code. While I'm at it I'll also sort by 'material' to clean up my existing batching code that I'm using to render all sprites in single draw calls.

The inspiration for this clean up goes to an old article by Christer Ericson.
Logged

Moth
Level 4
****



View Profile WWW
« Reply #105 on: August 31, 2015, 08:14:09 PM »

I've had my eyes on this game for a while! It looks really cool. That point/particle system is genius!! I'm green with envy of your ability to code those incredible electricity effects Grin
Logged

joeyspacerocks
Level 1
*



View Profile WWW
« Reply #106 on: September 02, 2015, 05:35:29 AM »

Hey @Moth, thanks!

For me the hard part is coming up with the ideas. Once I know I want to add some, say, electricity effect then it's just a case of a bit of thinking, a bit of Googling, and basically hacking it in any way it'll get there.

Once I'm happy with it I then spend a bit of time cleaning it up and making it play nice with the rest of the system. Always do it that way - get it working first and then integrate it properly - saves a lot of time when you realise that actually the idea wasn't a good one in the first place.

I usually iterate over stuff a lot as well before I'm actually satisfied with it.
Logged

oahda
Level 10
*****



View Profile
« Reply #107 on: September 08, 2015, 12:04:49 PM »

Next up is a long-overdue clean of the render code. Specifically I never really handled rendering entities at different depths very well - I simply kept the entities in different buckets (arrays) in the level and used those to render them. I did it this for simplicity and because it was quick to knock together when I needed it. This obviously led to some nasty code in other places where I want to iterate over.
This I did myself just the other day! Removed vectors for depth and switched to depth testing and z values. Performance boost!

So I'm finally going to fix this and add some proper sorting in the render code. While I'm at it I'll also sort by 'material' to clean up my existing batching code that I'm using to render all sprites in single draw calls.
And this I considered doing the same day, but haven't gotten around to yet, but my code already does check if the last material used was the same one as the current one in which case it won't do all the shader uniform stuff again, which increased performance anyway as most stuff using the same material is already sequential in my hand-written level file.

---

About the title screen: I like it! Perhaps you can keep it and do what I've done in many games before, which is to have a nice screen like this more as a pre-title splash screen (or rather, that becomes the title screen and the next one becomes the main menu, which is not synonymous with the title screen) and when you press something the elements below the title are removed to make room for the buttons. I've used this trick a lot. In this game, I can see you keeping everything pretty much as it is, and when anything is pressed, the electrified fluid tubes will get lowered into the floor and buttons will be raised into the same space. What do you think? :d
Logged

kcbanner
Level 0
***


View Profile
« Reply #108 on: September 08, 2015, 04:40:00 PM »

Just finding this project now, it looks great! I especially like your particle system and would love to hear more about how you implemented it. Looks like the particle image changes over time? Most systems I've seen just use a static image that moves/fades over time, but I like what you've done!
Logged

joeyspacerocks
Level 1
*



View Profile WWW
« Reply #109 on: September 09, 2015, 12:35:10 PM »

@siskavard - I did have some hide-under platforms in a really early level that had a laser in it - it's a good idea; I just can't decide if I want the game to have an element of combat or not. Think I might play around with it and try it and then if I can come up with some interesting enough weapons that fit the mood I may take it that way.

@Prinsessa - That's not a bad idea - I'll have a play around and see what happens Smiley

@kcbanner - Thank you. The particles are pretty simple really. I have emitters that produce them, and each particle is represented by an animation. My not-really-an-engine-engine has very basic animation in it; just structures that hold a list of sprites with time to delay between them, plus flags that indicate what to do when the end is reached (e.g. loop, return, stop). I also spawn the particles with a customisable time-to-begin-fading-out param so I can fade them if I want.

It's amazing how far a simple system will get you, and with really basic sprites as well - the fire for example is just four frames of pretty random little shapes (4x4 px or so), but throw enough of them in there and they don't look half bad Smiley

I also added some rudimentary collision detection so that I can do thing like affect the particle velocity if the play walks through it - allows for more interesting steam and the like.
Logged

kcbanner
Level 0
***


View Profile
« Reply #110 on: September 09, 2015, 12:44:16 PM »

Very cool, thanks! I must implement something similar.
Logged

sidbarnhoorn
Level 3
***


View Profile WWW
« Reply #111 on: September 09, 2015, 12:46:45 PM »

This looks great! Good luck with the development. :-)
Logged

Siddhartha Barnhoorn
--------------------
Award winning composer

Composed music for the games Antichamber, Out There, The Stanley Parable, Planet Alpha...

Website:
http://www.sidbarnhoorn.com
Bandcamp:
https://siddharthabarnhoorn.bandcamp.com
Twitter:
https://twitter.com/SidBarnhoorn
joeyspacerocks
Level 1
*



View Profile WWW
« Reply #112 on: September 21, 2015, 01:44:11 PM »

This looks great! Good luck with the development. :-)

Thanks Sid!
Logged

joeyspacerocks
Level 1
*



View Profile WWW
« Reply #113 on: September 21, 2015, 01:44:25 PM »

Well that took a while. I finally acknowledged the lumbering, drooling simpleton lurking in the corner of my code. He goes by the name of The Renderer.

This entry is a little technical and has no nice pictures. Boo. Well, I am a programmer.

Simple is generally pretty good and will get you a long way. My 'architecture' is almost non-existent: I have entities (a single structure representing most things in the game), particles (a simpler version) and tile chunks (ranging from full level-size tilemaps to 2 or 3 tile moving platforms).

Previously the approach to rendering was crude. Entities were stored in buckets, each representing a different depth. The rendering loop rendered things in a fixed order - background tilemaps, followed by back entities, foreground tiles, foreground entities, particles, etc.

This was ... ok ... but obviously led to much tediousness in other areas of the code as well as being somewhat inflexible.

The rendering itself was reasonably efficient. I would render tilemaps using a single call with a prebuilt VBO mesh representing enough tiles to fill the screen; just updating vertex uv's each frame depending on the section of the tilemap being shown on screen.

All sprites would be batched up and rendered with one or two calls, as would electrical sparks, which needed the blending mode to be changed.

Water shaders require two passes - take the scene rendered so far and render it with a texture that has had the liquid area masks rendered to it using the water shader.

So ... finally I'd had enough of the fixed hard-coded nature of this and knuckled down to clean it up.

The system now is as follows:

* All entities are stored in a single list
* At render time the entity render functions are called
* This populates an array of 'draw calls' - each represents either a tile map, a sprite, an electrical spark or a liquid mask (the last three are all variations of a sprite) and has an associated depth value
* The draw call array is sorted using a simple implementation of a radix sort - the sort key is formed from the depth and the call type / material
* The draw calls are iterated over to assemble sprite batches which are flushed to OpenGL calls as material / types change, or alternatively to render complete tile maps

It's simpler than it sounds, really Smiley

Things like rendering liquid layers and other effect compositions are much easier now. If an entity wants to render a sprite that contains liquid (like the organ jars or blood vials) it simply adds a draw call for the sprite and a draw call for the sprite's liquid mask (just another sprite) at a slightly lower depth than the main sprite.

The liquid sprites for a given depth all get collected up and rendered into a frame-buffer in one go, then composed with everything rendered so far using a liquid shader.

I also use this same approach to render the normal water areas - previously I was using a nasty hardcoded function that replicated lots of other functionality.

Anyway, the upshot is that it's all nicely flexible now and means that I can mix and match materials and depths etc. Should mean that I can add more composition effects much more simply than before.

Oh, enough of all this pseudo-technical rambling. I'll stick some screenshots up next time.
Logged

joeyspacerocks
Level 1
*



View Profile WWW
« Reply #114 on: October 11, 2015, 05:36:59 AM »

As part of designing a metroidvania I'm trying to pin down the mechanics of most of the movement and weapons as early as possible before I start fleshing out the world structure.

Part of the fun is coming up with structures that present the player with areas they cannot access until they acquire certain abilities or equipment later in the game and revisit previously discovered places.

In other words it's all a big excuse to play with different effects.

Here's a seed gun. Let's you grow a lovely meadow and then run around in it. Let's all pretend that I know exactly what the purpose of this is and how it fits in with the big picture. Yes, let's.



Inexplicably guns can also fire creatures. Here's a crude play with some thing that fires stripy caterpillar.



I can think of lots of applications for this but it needs a bit of a graphical clean up.
Logged

Cranktrain
Level 4
****


making gams


View Profile WWW
« Reply #115 on: October 11, 2015, 12:06:18 PM »

A gun that fires creatures, that's pretty great. I'm loving the consistency of the pixel art, as has already been noted by other people, your electricity animations look really good.
Logged

joeyspacerocks
Level 1
*



View Profile WWW
« Reply #116 on: October 18, 2015, 05:43:04 AM »

Thanks DizzyDoo Smiley

More prevarication recently - made a little wibbly, wobbly seed pod plant that explodes when you get too close.



Still indulging in experimenting with projectiles and weapons and the like, and starting to sketch out some test rooms to map out how the power ups will work together.
Logged

danieru
Level 2
**



View Profile WWW
« Reply #117 on: October 18, 2015, 05:56:52 AM »

Honestly I like the direction these plants might take the game. Even from the gifs I get a sense that the world is now mutable. As if the player can affect the world and make it their own.
Logged

joeyspacerocks
Level 1
*



View Profile WWW
« Reply #118 on: November 28, 2015, 02:35:06 PM »

I only stepped out for a minute and more than a month has passed. Good job this game is already retro ...

I've been improving my tool chain of late as things were getting a little tedious in my crazy little self-made circle of hell.

My approach to roll-your-own games programming has always been to whack stuff in there and sort it out later if it works. Starting from scratch meant I would do the simplest thing first to get things rolling.

This meant that sprites, tiles and animations were billy-basic to say the least. I had a big ol' image that had everything in it that I hand-edited in place using Pixen. In the code I then hand-entered the coordinates of sprites into a structure, and added these to animation definitions.

The approach got me quite far but it's not hard to see that the next phase of cranking out content was going to seriously suffer. So I've been replacing this nonsense with the following.

First up I'm now using PyxelEdit for, um, editing pyxels. It's a great little tool which does exactly what I want (but no more) and is brilliant for tile-editing.

So I've extracted the tiles into a proper tileset inside PyxelEdit.

I then exported all the individual sprites into separate PyxelEdit animation image files which means that I can properly edit animations without having to start up the game.

Obviously that change meant that I'd need a texture packer, so I gave TexturePacker a whirl. Not bad, but the workflow was a little too manual for my liking. I had to edit stuff in PyxelEdit, then export to PNGs, then run TexturePacker, etc. Plus the PyxelEdit export for animations doesn't export any metadata - just PNGs. So there was way to get it to export per-frame timings.

So I decided to have a little look inside PyxelEdit files and whaddya know? Turns out they're brilliantly structured. A PyxelEdit file is just a zip containing a JSON data file plus a bunch of PNGs that store the layers and others that store each tile from tilesets. Lovely!

So I spent a bunch of hours writing a little Python script that does the following:
   - reads animation meta data
   - extracts the image data from the merged layer PNGs
   - generates a sprite sheet PNG using a simple packing algorithm
   - generates a sprite sheet meta file in a nice format for me to read
   - includes mask layer sprite coords (I use them for objects that contain liquid)
   - generates a single tileset image

Next I hooked it up to XCode so that it runs the script as a build phase.

So my workflow is now just edit files in PyxelEdit (including animation timings) and save. Run game.

Lovely job!

(NB. OK, so I didn't have to write the exporter in Python. Given that I didn't actually know Python before I started. But I just fancied it. So I did, and it's pretty cool! So are all the great libraries for Python.)

(NB. NB. I spent a lot of time reading about texture-packing. There's a lot of crazily complicated algorithms out there. Luckily I stumbled across this brilliant post (http://gamedev.stackexchange.com/questions/2829/texture-packing-algorithm) which gives a very simple way of doing it that really works well, especially for the stuff I've got. So hooray for that.)
Logged

joeyspacerocks
Level 1
*



View Profile WWW
« Reply #119 on: November 29, 2015, 03:00:07 AM »

I've just uploaded my toy PyxelEdit animation / tileset / texturepacker script to GitHub in case anyone else finds it handy.

https://github.com/joeyspacerocks/pexpo
Logged

Pages: 1 ... 4 5 [6] 7 8 ... 10
Print
Jump to:  

Theme orange-lt created by panic