Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411595 Posts in 69386 Topics- by 58444 Members - Latest Member: FightingFoxGame

May 07, 2024, 03:57:55 PM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsPhantom Soulking - DOOM-Inspired FPS Roguelike
Pages: [1] 2
Print
Author Topic: Phantom Soulking - DOOM-Inspired FPS Roguelike  (Read 6438 times)
Lycaon
Guest
« on: June 26, 2014, 03:08:50 PM »

Phantom Soulking is a first-person, DOOM inspired roguelike that I started working on in late May.

Tech
Unity (C#)
A* Pathfinding Project

All of the art so far is either nonexistent or placeholder stuff, because I am basically the anti-Picasso. I plan on having a DOOM-style pseudo-3D aesthetic to the game, with sprites instead of models for everything in the game that change depending on your position relative to the object.

Screen shake (just added today)

Another short gameplay demo

(Apologies for the garbage framerate in those webms.)

If you want to see this thing come together, come and follow me on Twitter, where I will be complaining about programming and video games on the regular.
« Last Edit: November 03, 2016, 08:32:39 PM by Emma » Logged
Neeko
Level 1
*


View Profile WWW
« Reply #1 on: June 26, 2014, 05:15:43 PM »

I think this has potential for sure! I love that you plan to stick with sprites rather than use models. Have you started working on the procedural generation for the levels yet?
Logged

Currently developing Demons with Shotguns, a 2D competitive platformer arena game.
MindShaft Games
Lycaon
Guest
« Reply #2 on: June 26, 2014, 05:20:37 PM »

I think this has potential for sure! I love that you plan to stick with sprites rather than use models. Have you started working on the procedural generation for the levels yet?

Yep, the basic framework for that is all finished. I did a writeup on how it works on my blog, if you're interested. There's still a lot missing from it - in particular I want to add some more elevation variation, and just generally make the levels more interesting to navigate, but most of the heavy lifting is done in that department.
Logged
Neeko
Level 1
*


View Profile WWW
« Reply #3 on: June 26, 2014, 05:31:05 PM »

Very cool, that's what I was going to ask for next if you've already started it Wink

I'm thinking about using procedural generation to create small 2D platformer levels for my game, but I just wouldn't know where to start to implement that type of thing. There's a lot of research I need to do first.
Logged

Currently developing Demons with Shotguns, a 2D competitive platformer arena game.
MindShaft Games
Lycaon
Guest
« Reply #4 on: June 26, 2014, 05:37:52 PM »

Very cool, that's what I was going to ask for next if you've already started it Wink

I'm thinking about using procedural generation to create small 2D platformer levels for my game, but I just wouldn't know where to start to implement that type of thing. There's a lot of research I need to do first.

There's two main approaches - one is the method I use, which is what I call the "true procedural generation" method. With this, the whole level is generated algorithmically, and there's no human involvement at any step of the process. This is the method used by most old-school roguelikes (Angband, Rogue, Nethack, Moria, ADOM, etc.)

Modern roguelikes, on the other hand, have been largely trying a different approach - what I call the "lego chunks" method. This is something like in The Binding of Isaac, where there's a bunch of chunks of equal sizes, and you just stick 'em together. You design the chunks, the game simply decides what order to put them in.

What you might be interested in is how Spelunky does its levels, which although they seem like they were generated with the first method, in reality they were done with a bizarre fusion of the first and second method. You can read about that here and here.
Logged
Lycaon
Guest
« Reply #5 on: September 12, 2014, 08:16:34 AM »

Oh dear, it's been a while, hasn't it? I sort of forgot about this bit as I got lost in prototyping and coding and all that mumbo jumbo. Nonetheless, I resolve to update this thread every day. I might switch to a weekly or twice/thrice weekly schedule, if progress becomes slow, but at this point I think things are happening quickly enough to warrant a daily update.

Anyway, shit's gone down since we last spoke. I demolished and re-built from scratch what I had before, with a better idea in mind of how to do it. I changed the way level generation works, so now instead of using a more traditional Rogue/Nethack-style method (which was producing boring levels), it now sticks together pre-built rooms, Binding of Isaac style.

I've added a new system for managing different enemy types - enemy types are now handled on a room-by-room basis, with each room having a certain pool of enemies to pick from. Right now there are only two types of enemies, for test purposes, but that number will go up in the future.

The art is still placeholders - all the weapons and enemy/item sprites are ripped from DOOM, and the textures are just solid colours.

I leave you with this gif of a hilarious bug I had with the Cyberdemon boss monster.
Logged
Lycaon
Guest
« Reply #6 on: September 18, 2014, 03:10:34 PM »

IT'S ALIIIIIIIIIIIVE!

I've got the sprite rotation system in place, so now



When you rotate around sprites, you see them from different angles!

This has been the world's most boring update.
Logged
Pemanent
Level 4
****



View Profile
« Reply #7 on: September 18, 2014, 03:41:35 PM »

nice! I've always loved that effect. I think it looks cool. So nice work. Smiley
Logged

Lycaon
Guest
« Reply #8 on: September 20, 2014, 07:25:18 PM »

Text update this time, since I don't have much in the way of screenshots for this.

I'm working on items! The way that items will work is that every floor will have an item room that shows you three random items from the pool, and you can take one of them. There will probably be an item that lets you have two.

Items can be anything from simple statistical upgrades to new weapons to gameplay-altering mechanical changes. There's also a set of "active" items that can be used at your leisure and do things like freeze all enemies in a room, make you temporarily invincible, or heal you.

The way these are implemented is using something I had yet to play around with, abstract classes.

Basically, I've got a parent abstract class, Item, which inherits from MonoBehaviour, and has an abstract function in it called OnPickup().

Then each item has its own script which inherits from Item (Item inherits from MonoBehaviour so I can attach the item scripts to GameObjects, since dumb C# doesn't have multiple inheritance), and has an override function OnPickup(), which describes what the item does when the player picks it up.

I have an item called the

, and it looks like this:

Code:
public class TurboEncaublator : Item {

public override void OnPickup(GameObject player){
PlayerController controller = player.GetComponent<PlayerController>();
if(controller.damageAmplifier > 0){
controller.damageAmplifier = controller.damageAmplifier + (0.15f * controller.damageAmplifier);
}
else{
controller.damageAmplifier = controller.damageAmplifier + (0.15f * (controller.damageAmplifier + 1));
}
}

}

Another little bit down.
Logged
Lycaon
Guest
« Reply #9 on: September 21, 2014, 10:04:43 AM »

As an addendum to the last update, here's a gif of picking up items!

Logged
Lycaon
Guest
« Reply #10 on: September 30, 2014, 04:30:56 PM »

Finally trying to get rid of that placeholder art. Doing art for games *sucks*. Much respect to anyone who does it. I also made some improvements to items and level generation.



ADDENDUM: Is there anyone who'd like to help me with art on this game? I can do it myself, but I'd rather not have to. IF YOU'RE INTERESTED MESSAGE ME ON TWITTER.
Logged
Lycaon
Guest
« Reply #11 on: October 01, 2014, 11:35:25 AM »

Blood spatters! These help make it easier to tell if you're hitting an enemy. This effect was surprisingly easy to achieve. I didn't use unity's built-in particles system, instead I just wrote a function that takes a Vector3 and creates some random particles around there.

Code:
	public static void CreateBloodParticlesAtPoint(Vector3 point, int minParticles, int maxParticles){
int numParticles = Random.Range(minParticles, maxParticles + 1);

for(int i = 0; i < numParticles; i++){
GameObject particle = (GameObject)Instantiate(bloodParticle, point + new Vector3(Random.value, Random.value, Random.value), Quaternion.identity);
particle.transform.localScale = new Vector3(Random.value, Random.value, Random.value);

}

}

The bloodParticle object is just a little 8x8px red square.

Here's a gif of it in action!


(BONUS: A look at the the door textures I've made. The USB symbol doors lead to regular rooms, the ethernet symbol doors lead to item rooms, and the skull doors lead to boss rooms. I'm not particularly happy with the ethernet symbol for item rooms, so if anyone has any suggestions for a computer-y symbol that represents "there's treasure in here", let me know!)
Logged
Lycaon
Guest
« Reply #12 on: October 02, 2014, 05:58:59 PM »

More particle stuff! I've tweaked some values, and finally settled on enemies exploding into variously coloured ones and zeroes when they die! Also, I wrote some code that makes all the walls and floors and the player's weapons be randomly coloured.

I did that by doing all the art in black and white, and then just setting the colour value of the texture in code to a random colour from my cyberpunk palette. (Cyan, magenta, yellow, neon/lime green, purple, bright orange).

Gif in action!
Logged
Lycaon
Guest
« Reply #13 on: October 02, 2014, 06:09:00 PM »

Also, I forgot to mention that now when your health drops below 20% of max, the screen goes glitchy.

Logged
Lycaon
Guest
« Reply #14 on: October 04, 2014, 02:29:46 PM »

After much strife, I have wrestled Unity's physics system into cooperation with the A* Pathfinding Project (and my own AI code) to allow enemies to handle uneven terrain! Also, the player can, too, but that was less horribly stressful to implement.

Logged
Lycaon
Guest
« Reply #15 on: October 06, 2014, 08:15:19 PM »

Brief update - now when you press Tab, a menu comes up showing you your stats. It gets randomly colored every time you open it, too!

Logged
Lycaon
Guest
« Reply #16 on: October 08, 2014, 11:39:55 AM »

A main menu! I've had a barely functional one up until this point, but I decided it was high time to make it look nice and have functions.



I really like the way it's turned out. I started to worry that I was going overboard with the magenta & cyan color scheme, but then I realized that was impossible. There's no such things as too much magenta & cyan.
Logged
rj
Level 10
*****


bad, yells


View Profile WWW
« Reply #17 on: October 08, 2014, 12:34:04 PM »

dude! that looks fantastic

i think some kind of glitchy/blissed out afterimage effect on stuff (esp. the logo) would be pretty killer

in fact, why not add some blissed out neon afterimages to the gameplay too (to a lesser extent)

IF THAT IS POSSIBLE
Logged

Lycaon
Guest
« Reply #18 on: October 08, 2014, 05:27:59 PM »

Alright, I did some more polish work and wound up with this:

Logged
rj
Level 10
*****


bad, yells


View Profile WWW
« Reply #19 on: October 28, 2014, 11:39:13 AM »

hi all! i'm the guy working on sound + music and some touchup art for phantom soulking.

how about a preview of the title screen music? mmkay: https://soundcloud.com/spellmynamewithabang/title-screen/s-kszvr
Logged

Pages: [1] 2
Print
Jump to:  

Theme orange-lt created by panic