|
Phantom Block is a greenlit, independently-developed platformer game for PC, currently in alpha release. Your objective is to guide Boomer, a little red square-guy, across different levels to recollect his scattered treasure. Using your mouse cursor, you can change the landscape around Boomer so that it's easier for him to progress, by making some tiles intangible to making some sticky to even creating magnets and reversing gravity. You can play a demo for free on the game's website. I forgot to mention: I'm the game's lead developer, as well as composer. But, before you Logs: Log 1 - Where to Start Log 2 - On Algorithms Log 3 - Springs and Themes Log 4 - Dynamic Jumping Log 5 - Inheritance Log 6 - Flying Balls Log 7 - A Collapsing Castle Log 8 - Woods Fulla Ghosts Log 9 - Invisible Blocks Announcement - New Demo Log 10 - All Together, Now Log 11 - Arbitrary Moving Platforms Log 12 - Speedy Sands Log 13 - !#$@ing Magnets Gamesfreak13563 fucked around with this message at 05:27 on Jan 27, 2016 |
# ? Oct 30, 2015 20:06 |
|
|
# ? May 6, 2024 17:24 |
|
== Log 001: Where to Start == Gameplay Video We'll start at the beginning, obviously! There's a lot to talk about in this first video, but I'll keep things a bit brief to start out with. For clarity, I left in the unsightly mouse cursor. In following videos, it'll be removed, but understand that it's still there. At some point, I'll replace it with a custom mouse cursor, but the asset hasn't been made yet - I've been bouncing around ideas to make the cursor a separate character as opposed to some abstract UI element, whom Boomer meets at the beginning of his quest. I'm not sure whether or not to finalize that design decision, though. I don't want unnecessary details to bog down the story, but at the same time I need to build something resembling a world. • What engine is this programmed in? The game is programmed in GMS - Game Maker: Studio. Although Game Maker might conjure up images of terribly produced baby's-first-game projects and Click the Clown clones, it's a decent tool in its own right. Lots of good games have come from it, too - Risk of Rain and Undertale come to mind. I honestly think it's the best starter's choice for 2D game development, as opposed to Unity or other more complex engines. • What happens in the title screen? Lots, actually. Before we even get to the title screen, we start in an initialization room that sets up the global variables and particle effects. This room is called rm_init in the IDE. There is nothing in that room except for this code: code:
The title screen room, rm_title, is also actually the level select. Once we've determined the player's pressed enter, we deactivate the title object and load in the level select objects. Most of the animation is taken care of using Game Maker's timers and a draw function. • What is the music made in? The music is made in a program called OrgMaker 2. It's a free music-creation tool programmed by Studio Pixel; it's the same soundfont as used in Cave Story. A friend of mine is working in rearranging the music - he's also the guy who does the Cavern Kings soundtrack. Take a listen in the differences: Boomer's Big Finale (Cloud Theme) Boomer's Big Finale (Cloud Theme) Rearrangement • How did you design the first level? This is actually the third redesign of the first level. My original first level is ancient, representing my initial proof of concept. In retrospect, my own artwork looks like garbage there. The second iteration of the level required backtracking. I wasn't a big fan of it, so I redesigned it a second time. I tried to not give the player too much information in text, outside of some basic control stuff. The first non-obvious thing occurs when the player falls into the pit with the Ghost Block powerup - I intentionally made it impossible to escape the pit without the Ghost Block being used, and I also made it impossible to progress due to the spikes. This forces the player to learn the main mechanic. If the player is observant enough, they can backtrack to get the three coins that they noticed they couldn't get to earlier, and use the Ghost Block to speed up the return trip. I also intentionally didn't tell the player that they can ghost through nearly any block - this forces them to try out new stuff to get past the spikes, as before they were only forced to go through the yellow blocks. The gray blocks at the end of the level you can't change - so again, the player has to go under them instead of through them. I think this is an interesting way to impart knowledge onto the player without being too hand-holdy. • What are the blue guys' names? They're called Ballums. • Ballums? One day I hope to make an orange variant with black stripes, so I can call those guys Basketballums. • Your question here: Ask any question, and I'll answer! Don't expect me to share too much source code, though - gotta keep some of it secret, at least.
|
# ? Oct 30, 2015 20:06 |
|
The game looks like a fun little puzzle-platformer. I'll definitely follow this thread to see how it develops! It's always neat to see a dev play and talk about their creation.
|
# ? Oct 30, 2015 20:10 |
|
Geemer posted:The game looks like a fun little puzzle-platformer. I'll definitely follow this thread to see how it develops! Yeah, it's a good motivator to get working on it again, too.
|
# ? Oct 30, 2015 20:47 |
|
I got a real understanding of what you are trying to convey to the player in that first level. Good job on it. I take it there's a tutorial level for each ability?
|
# ? Oct 30, 2015 20:48 |
|
Hitlers Gay Secret posted:I got a real understanding of what you are trying to convey to the player in that first level. Good job on it. I take it there's a tutorial level for each ability? Yeah. Each ability gets a tutorial level. Some other gameplay mechanics get a tutorial level too; like scrolling levels and explosive boxes.
|
# ? Oct 30, 2015 21:00 |
|
Gamesfreak13563 posted:• What engine is this programmed in?
|
# ? Oct 30, 2015 23:56 |
|
FractalSandwich posted:Honestly, I think a lot of the ill will comes from people confusing it with RPG Maker, which is a completely different tool from a completely different company that is legitimately awful. Even then, I've seen people make good use of it - by cutting out all the RPG elements and making noncombat games. I'd be interested in hearing more about this, actually. A friend of mine is trying to make his own game, and he's been using RPGmaker so far.
|
# ? Oct 31, 2015 00:34 |
|
If you ghost all the blocks underneath you, would you fall off the screen? And can enemies follow you through ghost blocks?
|
# ? Oct 31, 2015 00:44 |
|
FractalSandwich posted:Honestly, I think a lot of the ill will comes from people confusing it with RPG Maker, which is a completely different tool from a completely different company that is legitimately awful. Even then, I've seen people make good use of it - by cutting out all the RPG elements and making noncombat games.
|
# ? Oct 31, 2015 01:03 |
|
I think this first stage captures the same basic nudge that the Super Mario franchise tries to go for in their first stages. What was your inspiration for getting started on this project in the first place?
|
# ? Oct 31, 2015 01:03 |
|
Valgaav posted:I'd be interested in hearing more about this, actually. A friend of mine is trying to make his own game, and he's been using RPGmaker so far. The way it's designed, it very strongly encourages you to make a very particular kind of game. More than just providing a framework to make it easier to implement an RPG, it really oversteps its bounds and comes with a lot of design decisions made for you, such that if you want to innovate or push the genre forward in any way in terms of systems and mechanics (or really even bring it up to 2015's baseline standards) you have to redo everything yourself anyway - and making any changes in code is completely undocumented and unsupported, if I'm not mistaken. If you're a hobbyist with no programming background and all you want to do is make a lovely imitation of Final Fantasy 6, RPG Maker will probably do what you want. But if you're a hobbyist with no programming background and you want to make a game that's actually good, you're much better off using Game Maker and implementing everything the way you want it to begin with. It won't be any more work in the long run. If you want to make your own games, you need to learn to program sooner or later, and GML is real easy to work with, even for a beginner.
|
# ? Oct 31, 2015 01:16 |
|
I kind of like the idea of making the cursor be a Guest/assistant to Boomer. That can only lead to good things in my opinion. What if Guest gets kidnapped? Or it gets sick and you can only erase X amount of blocks? Speaking of, is the number of phantom-able blocks unlimited? Ok, enough of my curiosity. I really enjoyed this beginning and am looking forward to more. Good work!
|
# ? Oct 31, 2015 03:46 |
|
Mraagvpeine posted:If you ghost all the blocks underneath you, would you fall off the screen? And can enemies follow you through ghost blocks? Yes to both. Falling off the screen is an instant death. Aerdan posted:I think this first stage captures the same basic nudge that the Super Mario franchise tries to go for in their first stages. What was your inspiration for getting started on this project in the first place? Actually I don't remember now. I think it was Terraria or something to that effect, where the player had a real control over the environment. LaCelestina posted:I kind of like the idea of making the cursor be a Guest/assistant to Boomer. That can only lead to good things in my opinion. What if Guest gets kidnapped? Or it gets sick and you can only erase X amount of blocks? Speaking of, is the number of phantom-able blocks unlimited? Ok, enough of my curiosity. I really enjoyed this beginning and am looking forward to more. Good work! The amount of changeable blocks is unlimited for most types. For the Platform and Gravity blocks, you're limited to six at a time, and for the Box Block, you're limited to one at a time.
|
# ? Oct 31, 2015 05:37 |
|
I love the idea of using collectibles as a way to teach players how the features work. I caught on to the solution for those last two coins just as you solved it. Obviously, falling off the stage is instant death, but what about if you un-ghost a block while Boomer's standing in it? Does that also kill him?
|
# ? Oct 31, 2015 18:18 |
|
I like the concept behind the gameplay; I'll certainly be watching this thread with interest. I always wanted to see a platformer with lots of environment manipulation (independent of the character) as its thing.
|
# ? Oct 31, 2015 18:26 |
|
This looks a bit more polished than some of the marvelous Game Maker titles Lowtax played thru... This game makes me think of Lemmings. A cool thing from Lemmings you might be able to incorporate is doing the same level with different tools. It starts out giving you plenty of the exact tool you need to complete a level (tools are limited in Lemmings). Once you've got a feeling for the tools, the difficulty is increased by giving you plenty of all tools – you have to learn to pick which tool to use yourself. Finally, it gives you just enough of the tool you need, and finally not enough of the tool you need, so you have to find an alternative solution. Not all levels come in all versions, but I find the mechanic of having to rethink how to solve a level with different tools interesting. Another thing you may or may not already have, is an auto-runner component. In addition to automatically scrolling, Boomer also runs automatically, so you have to ensure there's safe passage. You might not even be under time pressure if you can block off Boomer early on, prepare the path and then ghost block him out. You should probably prepare for the future with an iOS version ample with in-app purchases
|
# ? Oct 31, 2015 18:59 |
|
I think he's probably already got something like that:Gamesfreak13563 posted:Some other gameplay mechanics get a tutorial level too; like scrolling levels and explosive boxes.
|
# ? Oct 31, 2015 20:13 |
|
== Log 002: On Algorithms == Gameplay Video Today, we take a look at the second level, which introduces crates to the player. You can push or place boxes onto switches to make lockblocks intangible, but only if all switches of the same color are pushed down. The game supports 16,777,216 different colors of switches in the same level. • How do the lockblocks work? I have a main object obj_game that runs most of the game logic. obj_game holds a dictionary - a mapping of colors to arrays of switches. In other words, I can 'look up' and get a list of all of the switches that have color color. Finding all of the switches is not computationally difficult. The problem comes with the lockblock objects: Game Maker has what's called a 'step event.' You can have objects run code every frame -- step -- of the game. My way of checking if the lockblocks are intangible is for each obj_lockblock to run through the list of switches and stop if it finds a switch that isn't activated. Here's the relevant code in the step event: code:
Let's apply asymptotic run time analysis to the algorithm of finding if all the switches of a color are depressed. Let's call the number of lockblocks of a color l and the number of switches of a color s. In my algorithm, each lockblock goes through the list of switches. In the worst-case scenario, where all the switches are depressed, each lockblock will go through the entire list of switches. The runtime is O(ls). This is a polynomial-time algorithm. Can we do better? Can we knock it down to linear time? The answer is yes. Instead of having each lockblock compute if all the switches are depressed, let's have obj_game do it once, and then store the result in another dictionary. Then, each lockblock can simply look up whether or not it should be intangible. We'll define another dictionary, switch_truth, in obj_game for this purpose. In obj_game, Begin Step: code:
code:
• Why do you teach the player to trap the Ballums on the switch? This comes up later in the game, when you have more tools to control the movement of the Ballums. Lots of puzzles will revolve around trapping Ballums on switches so that you can proceed, and since they move independent of the player character, it's a time-based way to make switch-puzzles. Blastinus posted:I love the idea of using collectibles as a way to teach players how the features work. I caught on to the solution for those last two coins just as you solved it. Gamesfreak13563 fucked around with this message at 18:34 on Nov 1, 2015 |
# ? Nov 1, 2015 17:48 |
|
I'm really enjoying this. You're skills at teaching both gameplay and game-making mechanics are spot on.
|
# ? Nov 1, 2015 18:13 |
|
I look forward to seeing what kinds of puzzles you make out of Boomer's ability to hold crates on his head. Can he jump while holding a crate?
|
# ? Nov 1, 2015 18:36 |
|
Very interesting. I'm learning programming and your example code and explanations are actually quite helpful.Gamesfreak13563 posted:It is impossible to revert a transparent block Boomer is standing in; the game just doesn't allow you to do it. Likewise, if you're inside a lockblock and a switch is deactivated, the block remains intangible until Boomer moves out of the space. This is also true for Ballums or any other solid object.
|
# ? Nov 1, 2015 18:42 |
|
The feel of the game kinda reminds me of Eversion a bit, the cute characters and colors and the physics.Hitlers Gay Secret posted:I'm really enjoying this. You're skills at teaching both gameplay and game-making mechanics are spot on. Yeah this is a really cool idea for a thread. It's kinda like a making-of video that you would get in some games, but way more in depth. Also, you get to learn new things and as someone who is interested in game design this is a great thread. Gamesfreak do you have experience with other engines? Like, say, Construct? I've tried to use Game Maker before but I find its "flow" a bit strange to get used to, as I first started dabbling with programs like The Games Factory and Multimedia Fusion. Speaking of game engines, if there's anyone here interested in one, I really recommend you check out GDevelop. It's an open-source program with an interface similar to Construct 2 and The Games Factory. You can export native games to Windows and Linux, as well as make HTML5 games and export them to iOS or Android.
|
# ? Nov 1, 2015 18:46 |
|
Blastinus posted:I look forward to seeing what kinds of puzzles you make out of Boomer's ability to hold crates on his head. Can he jump while holding a crate? Carbon dioxide posted:If he's in the middle of a big square of lockblocks and the switch gets deactivated, will the blocks around him become solid, trapping Boomer forever?
|
# ? Nov 1, 2015 20:35 |
|
I see you're an actual computer scientist. I come from the Tom Francis school of game programmers, where I have no actual training and write all my code the quick and dirty way and just go with the first thing that works, rather than do it the technically correct way.
|
# ? Nov 1, 2015 22:41 |
|
Gamesfreak13563 posted:But, before you godspeed.
|
# ? Nov 1, 2015 23:20 |
|
FractalSandwich posted:I see you're an actual computer scientist. I come from the Tom Francis school of game programmers, where I have no actual training and write all my code the quick and dirty way and just go with the first thing that works, rather than do it the technically correct way. Premature optimization is the death of projects. Write things quick and dirty, then go back and fix it: that's how I did it with the switches.
|
# ? Nov 2, 2015 01:14 |
|
Playing the demo--noticed that jumping up underneath spikes in Boomer's Beginning kills you. Is that going to be patched, considering the bottom of spikes aren't spikes? Also, noticed that you don't lose coins if you die. That's awesome and saves on back-tracking for poorly timed jumps. Regarding Crate Hill: props to the respawning block in the second level. I tried throwing it off the cliff just to see if I could get myself stuck. EDIT: for spelling and grammar Sally fucked around with this message at 05:17 on Nov 2, 2015 |
# ? Nov 2, 2015 01:33 |
|
I tried out the demo, and yeah. I really like how you've handled the level design. Reading about how you've handled things within the code is interesting as well. I had a few issues with some of the mechanics in later levels, but I might have been doing things wrong there. I'll wait until logs for those levels to come out to talk about them. How did you decide what the physics for the game were gonna be like? Did you just adjust things until they felt good, or what?
|
# ? Nov 2, 2015 05:12 |
|
== Log 003: Springs and Themes == Gameplay Video Let's look at the third level, Spring Meadows. This aptly-named level introduces springs and the Spring Block powerup to the player. We can see now that there's more to changing blocks then just making them intangible. In the interest of keeping things simple for the tutorial, we only have the Spring Block in this level - we don't start combining different powerups until around level seven. • How do the themes work? Themes are simple: at the beginning of the level, I store the current theme in a global variable called THEME. This lets me access the theme in constant time from any object by simply referencing it. Each theme is just a number, really; but since keeping track of magic numbers is difficult, I've implemented a few of what's called macros. People familiar with macros in other language might better recognize them as the #define directive: code:
code:
Sprites in GM:S can have animation frames: I have animation frames for the ground, yellow blocks, and gray blocks. But you'll notice they're not switching constantly; that's because I have their image_speed, or framerate, set to 0. When I display the tile, I simply add on a multiplier based on the current theme to the frame - that way, we can easily change the theme and the rest of the game will switch with it. See here: • The music is different. Yes, the music is different! Each theme has its own...theme. This music was actually meant to be the first level for a shmup type of game I was thinking about making for a game jam, but I repurposed it for the forest theme. Gamesfreak13563 fucked around with this message at 17:05 on Nov 2, 2015 |
# ? Nov 2, 2015 15:40 |
|
I notice the flag is on a three-tile platform; it's kind of weird that our hero doesn't fall off when he walks off stage (since there isn't a fourth block on the platform that would support him as he walks out of the level). Does GML not support enums?
|
# ? Nov 2, 2015 17:53 |
|
Aerdan posted:I notice the flag is on a three-tile platform; it's kind of weird that our hero doesn't fall off when he walks off stage (since there isn't a fourth block on the platform that would support him as he walks out of the level). I'm sure there's a platform for him to land on just out of frame. I like how quite a few of the puzzles we've seen so far have involved manipulating Ballums somehow. They're less enemies and more brainless helpers that you have to escort to their destination.
|
# ? Nov 2, 2015 18:01 |
|
Blastinus posted:I'm sure there's a platform for him to land on just out of frame. Or once the Flag is gotten, the game moves to the end-of-level routines, and stops checking for such pesky things as "Has this thing left the level space?"
|
# ? Nov 2, 2015 18:10 |
|
Aerdan posted:I notice the flag is on a three-tile platform; it's kind of weird that our hero doesn't fall off when he walks off stage (since there isn't a fourth block on the platform that would support him as he walks out of the level). berryjon posted:Or once the Flag is gotten, the game moves to the end-of-level routines, and stops checking for such pesky things as "Has this thing left the level space?" Gamesfreak13563 fucked around with this message at 20:12 on Nov 2, 2015 |
# ? Nov 2, 2015 20:05 |
|
I can confirm that GML has supported enums since sometime last year, although I think their performance is pretty much identical to macros.
|
# ? Nov 2, 2015 20:11 |
|
Blastinus posted:I like how quite a few of the puzzles we've seen so far have involved manipulating Ballums somehow. They're less enemies and more brainless helpers that you have to escort to their destination. How heavily was this bit inspired by Braid, or is it more of a case of drawing from the same reference pools of earlier puzzle platformers?
|
# ? Nov 2, 2015 20:29 |
|
Oh cool, the thread went live this weekend. I'm definitely bookmarking this, as it looks like a super fun game. I'm a huge fan of retro-style platformers and the like. I know nothing about code, so I just skim past the programming talk, but I've done enough time studying 8- and 16-bit era games to realize that what separates a good platformer from a great platformer is the way it teaches you mechanics. Super Mario Bros 1 is probably the ultimate in elegance for this, with World 1-1 holding your hand without feeling like it is the whole time, It encourages you to jump, hit bricks, explore the Y axis of the level, find hidden passages, learn how goombas and koopas and all the powerups work, and it does it all with zero difficulty. Show, don't tell is the name of the game. With Super Mario World, things had gotten sophisticated enough that they couldn't get away with that for everything. They still teach you right off the bat a lot of things by dropping you in an easy to experiment area to play with stuff, but they had to also add the occasional signposts, which are smartly ignorable, along the way. I really think why this game is shining so far is that you do such a good job of that concept. You really nail the hybrid of easily ignored quick text for mechanical instructions, instead then leaving the level to follow a structure of "introduce new tool, make small illustrative puzzle to show full potential of tool, end with semi-optional puzzle that requires realizing exactly what the tool does". It's simple, and it's complete, and you know everything you need to by the end of each level. Also, I'm going to nth the idea of doing something fun and possibly diegetic with the cursor. Making it a sidekick or like, a little sister or brother is all you really need to do, this is a game light on story, so you don't need to worry too much about the design. I can't wait to see where this goes!
|
# ? Nov 2, 2015 20:44 |
|
It doesn't have to be a character per say, but giving the cursor its own sprite will help with noticing it when you need to start using your abilities. Think about how everyone complains about Armagrog (?)in the fact that it uses the default cursor. yes I know the game has more problems than just that, we're not here to discuss that.
|
# ? Nov 2, 2015 20:50 |
|
I'll chime in again and repeat what others have said: I love games that teach mechanics by showing them instead of putting a dialog box in your face. The prime example of this for me is Super Metroid's Shine Spark and Wall Jump. You just end up trapped in a place with a bunch of animals showing off how to do it and you gotta figure it out yourself. You force players to use the new tools to progress in an easy to understand exemplary puzzle. I'm really interested in seeing what you will do with later puzzles, when tools start to be combined. On another note: This game looks like it'd be a great candidate for having a level editor where people can make (and share) their own levels. Do you have any plans for such a feature?
|
# ? Nov 2, 2015 20:55 |
|
|
# ? May 6, 2024 17:24 |
|
Geemer posted:The prime example of this for me is Super Metroid's Wall Jump. You just end up trapped in a place with a bunch of animals showing off how to do it and you gotta figure it out yourself. Or, you quit the game and make note to never go in that direction. Wall Jumping in Super Metroid still makes no sense to me and that was not a good way to teach a mechanic. Mostly because that has portions of the mechanic that can't be explained by showing (in order to actually wall jump, you need to first press against the wall and then hold the opposite direction and press jump again).
|
# ? Nov 2, 2015 20:59 |