Spacepunk'd [Demo]

SerafukuSoftware

New member
So after 2 weeks, and still going. I've been grinding out on my first ever NESMaker game: "Spacepunk'd"

Here's a few screenshots so far:
sodj1SL.png
i3LeeCC.png
emfSi3O.png

nAdodfj.png
jcigJ3V.png
RA5vTRi.png


Spacepunk'd is a basic 2.5D Run & Gun Shmup, where you play as a lone Spacegirl who's mission is to shoot-down a gang of Spacepunks that have taken over the the city of Neokyo. Male/Female Spacepunks occupy and patrol various parts of the city including Mini-marts, Arcades and Maid Cafés. Some Spacepunks carry laser-guns and won't hesitate to shoot a stream of NES-breaking bullets at you. On certain screens, the punks have tied-up city residents that you rescue by collecting them. On some screens, there are CRT Monitors that provide information and hints. Guarding the last screen of the stage are a couple of absoloute units that take 15 hits to kill. Long story short, the objective is to kill all of the punks, rescue all the residents, get to the end of the stage and beat the boss at the end.

All of the game's background graphics and character sprites were made by yours truly. Which in all honesty I've put more effort into than the actual gameplay so far being that programming isn't my strong point. I pretty much made up everything as I went. The game's art-style was heavily inspired from anime (specifically anime by Studio Trigger) and Ken Sugimori's art in the original Pokemon games for Game Boy. Gameplay wise, I was attempting to recreate something along the lines of Sega's arcade version of Michael Jackson's Moonwalker. Another huge influence was actually going to Japan for a holiday last year and visiting cities in Tokyo like Shinjuku and Akihabara.

I'm nearing completion (about 85%) However, there are many things I want to fix before I think about uploading this into the Byte-Off Competition, and hopefully with some help I can achieve that.

- Screen-triggers need to be implemented so that once Spacepunks are killed, they won't return once you left the screen and come back. Same goes for the health hearts and the residents.
- The health-heart powerups don't seem to be working properly as once collected they don't appear to increase your health.
- Finalise the animations on the mini-boss at the end of the stage and figure out how to trigger Wingame-screen once he's been killed.
- Add a small soundtrack if I have enough time (to replace the placeholder music & sfx which are just the standard nesmaker demo ones)
- Create some supporting art (mostly a cover image, not too sure about a manual but I'll make a "quick-start guide")

Here's a W.I.P ROM if anyone is interested
https://drive.google.com/file/d/1TJkKKYmnxuj2aMC99pryhDkRPdIYtmq5/view?usp=sharing

Feedback, suggestions and assistance is very much welcome as always, I hope you enjoy this W.I.P even tho it's a buggy and unstable mess. Hopefully within the remaining 7 days I can finish this up for everyone's enjoyment and for the Competition! Thank you all! :D
 

Bucket Mouse

Active member
I think screen triggers were covered in the Adventure tutorial; it should be as simple as that.

The candy-colored artstyle looks great; looks like it took a while.

Some people are probably going to mention the slowdown, but it's the NES -- I consider it an unavoidable tradeoff if you want a decent amount of baddies onscreen.
 

SerafukuSoftware

New member
BentPawGames said:
Love the aesthetic!


drexegar said:
Look pretty dope! Love the title screen and the sprites!

I'm super pleased you guys like the a e s t h e t i c s! :D Thank you heaps!

Bucket Mouse said:
I think screen triggers were covered in the Adventure tutorial; it should be as simple as that.

The candy-colored artstyle looks great; looks like it took a while.

Some people are probably going to mention the slowdown, but it's the NES -- I consider it an unavoidable tradeoff if you want a decent amount of baddies onscreen.

I did watch over both of the Adventure Module tutorial videos for 4.0.0 and 4.1.0 and in the 3h video, Joe did go over Screen Triggers, albiet briefly. I did attempt to follow what he has showed but nothing seemed to work on my end, and more or less I'm very confused. I kinda need a proper step-by-step instruction to go over.

and Thank you! I was going for a cool-coloured neon nights kinda aesthetic for the game. Funny enough, it took me longer to arrange the graphics into the banks in NESMaker than it took me to draw them in MSPaint! xD

The Slowdown is inevitable without efficient programming and memory management afaik, also being that my sprites are bigger than 16x16 it doesn't help.
 

AllDarnDavey

Active member
Very nice sprite animation and pixel art work!
Feels weird to me to shoot with A instead of B, maybe that's just me?
I would not have known to go to the CRT monitors if you hadn't said anything... they just don't stand out from the background or call enough attention.
Lots of screens don't block you from walking up offscreen and getting stuck out of bounds.
It feels a little unfair that enemies can shoot diagonal and I can't.

That's it. I know fixing the issues is a lot harder then listing them, so good luck. But overall it's pretty great!
 

Bucket Mouse

Active member
SerafukuSoftware said:
I did watch over both of the Adventure Module tutorial videos for 4.0.0 and 4.1.0 and in the 3h video, Joe did go over Screen Triggers, albiet briefly. I did attempt to follow what he has showed but nothing seemed to work on my end, and more or less I'm very confused. I kinda need a proper step-by-step instruction to go over.

and Thank you! I was going for a cool-coloured neon nights kinda aesthetic for the game. Funny enough, it took me longer to arrange the graphics into the banks in NESMaker than it took me to draw them in MSPaint! xD

The Slowdown is inevitable without efficient programming and memory management afaik, also being that my sprites are bigger than 16x16 it doesn't help.

Ah, you know the problem? In the video, the trigger was set by a text box. That's not an option here. You'll have to go for a tile instead, which isn't a feature that comes out of the box.

Go to Routines > (name of your game folder) > ModuleScripts > TileScripts, open Notepad and save a file called TriggerTile.asm in there. Its contents will simply be:

TriggerScreen screenType

Now open NESMaker and using Project Settings, assign TriggerTile.asm to an empty, unused Tile Type. Then open your game, right-click on a tile you know the character will walk on, and change its property to that assigned tile. Create a row of them so the character WILL walk across it as they leave. Then on the other screens, do the same.
 

SerafukuSoftware

New member
AllDarnDavey said:
Very nice sprite animation and pixel art work!
Feels weird to me to shoot with A instead of B, maybe that's just me?
I would not have known to go to the CRT monitors if you hadn't said anything... they just don't stand out from the background or call enough attention.
Lots of screens don't block you from walking up offscreen and getting stuck out of bounds.
It feels a little unfair that enemies can shoot diagonal and I can't.

That's it. I know fixing the issues is a lot harder then listing them, so good luck. But overall it's pretty great!

Thank you very much for your feedback, Davey! Yeah, I plan on switching the shooting-button from B to A in the Next Update. Now that you've mentioned it, I'll make the CRT Monitors a different colour on the palette so it stands out a bit more, the sprite I use to activate the textbox, I'll probably add a screen animation as well to make it noticeable. I gotta repair alot of the screen boundaries as well. Now you make a great point about the Spacepunks - I've made them shoot towards the player which can be very irritating since I have programmed any decent AI in them at all. I really want to make my Spacegirl player to move in 8 directions, I'm not sure if anyone's made input scripts for 8-directions yet, but that would be a huge improvement than being stuck in just 4. The punks defs have more of an advantage than the player, so I'll see what I can do tomorrow to fix that. But thanks again for the feedback!

Bucket Mouse said:
Go to Routines > (name of your game folder) > ModuleScripts > TileScripts, open Notepad and save a file called TriggerTile.asm in there. Its contents will simply be:

TriggerScreen screenType

Now open NESMaker and using Project Settings, assign TriggerTile.asm to an empty, unused Tile Type. Then open your game, right-click on a tile you know the character will walk on, and change its property to that assigned tile. Create a row of them so the character WILL walk across it as they leave. Then on the other screens, do the same.

You are a godsend, my guy! The trigger tiles work! All I need to do now is fix them up on all the screens and hopefully they should all work by the next update! Sweeet!!
Would you by any chance know how to fix the heart-powerups? I have my heart game object set up as 'Pickup/Powerup'' and the Powerup_IncreaseHealth script added to PowerUp00, but whenever I lose my health and pick one up it doesn't seem to add an extra heart. But Thank you so much for helping me out with the Triggers, I've been scratching my head with these things for about a week, and I really should've asked earlier xD
 

dale_coop

Moderator
Staff member
SerafukuSoftware said:
Would you by any chance know how to fix the heart-powerups? I have my heart game object set up as 'Pickup/Powerup'' and the Powerup_IncreaseHealth script added to PowerUp00, but whenever I lose my health and pick one up it doesn't seem to add an extra heart. But Thank you so much for helping me out with the Triggers, I've been scratching my head with these things for about a week, and I really should've asked earlier xD


For your powerup, try modifying the script with :
Code:
;;; Increase Health code for player.
;;; works with variable myHealth
;;; works with HUD variable HUD_myHealth.
	LDA myHealth
	CLC
	ADC #$01
	CMP #$09		;; <--- HERE the max health limit you can NOT reach (means if your max health is 8, here is 9)
	BCS skipGettingHealth
	
	TXA
	STA tempx
	;;;you may want to test against a MAX HEALTH.
	;;; this could be a static number in which case you could just check against that number
	;;; or it could be a variable you set up which may change as you go through the game.
	inc myHealth
	LDA myHealth
	
	LDX player1_object
	STA Object_health,x

	;;; we also need to set up the routine to update the HUD
	;; for this to work right, health must be a "blank-then-draw" type element.
	STA hudElementTilesToLoad
		LDA #$00
		STA hudElementTilesMax
		; LDA DrawHudBytes
		; ORA #HUD_myHealth
		; STA DrawHudBytes
	UpdateHud HUD_myHealth
	LDX tempx
	
skipGettingHealth:
	PlaySound #SFX_INCREASE_HEALTH
 

dale_coop

Moderator
Staff member
Btw, your game looks awesome! Congrats, it's beautiful.

For your mini-boss killed go to Win Screen... you could check which monster you are destroying (in the monster hurt script) and if it correspond to your mini-boss id, you execute the Go to Win script.
Could you share your Monster Hurt Script ?
 

SerafukuSoftware

New member
Oh Awesome! The hearts work properly now! Thank you again very much, Dale! :D

dale_coop said:
Btw, your game looks awesome! Congrats, it's beautiful.

For your mini-boss killed go to Win Screen... you could check which monster you are destroying (in the monster hurt script) and if it correspond to your mini-boss id, you execute the Go to Win script.
Could you share your Monster Hurt Script ?
I'm really glad you think so :D It means alot
I haven't made any modifications to the HandleMonsterHurt script as of yet to implement the mini-boss, so it's the just same one that comes standard with NESMaker. But I'll put the script below so if you don't mind pointing out which bit I'll need to edit, I'll see what I can do :)

HandleMonsterHurt.asm:
https://drive.google.com/open?id=12k2bCPFtpDrzvHnGmDOXvFl_S15TMdP0
 

dale_coop

Moderator
Staff member
SerafukuSoftware said:
Oh Awesome! The hearts work properly now! Thank you again very much, Dale! :D

My pleasure. I can help you with your mini boss fight too... could you share your Handle Monster Hurt script?
 

dale_coop

Moderator
Staff member
Modify your Handle Monster Hurt, around line 48, just before the "DeactivateCurrentObject" line, add those lines:
Code:
		;; check if the current monster is the BOSS
		LDA Object_type,x
		CLC
		CMP #OBJ_BOSS_MONSTER
		BNE +
			;; destroy the monster:
			DeactivateCurrentObject
			PlaySound #SND_SPLAT

			;; go to the Win Screen:			
			LDA #STATE_WIN_GAME
			STA change_state
			LDA #$01
			STA newScreen
		+
And in "Project Settings > User Constants", add a new one named "OBJ_BOSS_MONSTER" with the value "?" (your monster ID... counting from 16 in the "Monsters" list in NESMaker hierarchy).

This code will check if the monster you are killing is the mini-boss. If it is... it will warp you to the Win Screen


PS: And if you are using the sprite weapon (not the melee object), you might to make a modification similar in the Handle Sprite Weapon code...
 

SerafukuSoftware

New member
I've followed every step and it works perfectly! :D Win Screen now triggers once the mini-boss has been killed! I'll have a look at the sprite weapon script if I need to but so far it's looking really good. Thanks heaps again, Dale! :D I've got another curious question, would you know how to increase the invincibility frames of your player so you've got a bit of extra time to escape from danger instead of being bombarded immediately after?
 

dale_coop

Moderator
Staff member
I think in GameEngineData\GameData\Constants.asm, you will be able to change the values for :
Code:
;;//////////////////////////////
;OBJECT TIMERS
HURT_TIMER = #$08
INVINCIBILITY_TIMER = #$10
RECOIL_SPEED_HI = #$02
RECOIL_SPEED_LO = #$00
 

marp

Member
Looks really great, the artwork are lovely. Downloaded and played for a short time, got killed at the screen with the NPC (guess he was that at least, didn't get close enough ;)
 

SerafukuSoftware

New member
marp said:
Looks really great, the artwork are lovely. Downloaded and played for a short time, got killed at the screen with the NPC (guess he was that at least, didn't get close enough ;)

Thank you for trying it out! :D That's really bizarre that you got killed by an NPC, the only thing I've set up as NPC's are the Monitors - the Spacepunks spread throughout the city are the enemies xD
 

SerafukuSoftware

New member
Okay everyone, here's a quick update of my progress so far after getting some help and feedback from the forums:


- Added an extra 1-block-height to the fences at the backs on certain parts of the stage so that It prevents the player from accidentally ending up out of bounds. I also fixed some areas that the player was glitching through, but I probably haven't fixed every single one as of yet.

- Added extra detail and changed the colour of the CRT Monitors to that of the HUD, which stand out from the Neon-BG

- Fixed the Heart-Powerup so it now adds a heart once collected, However I've noticed a unfair glitch where if you collect a Heart with full health, the counter turns back around to 1 heart which when getting bombarded by a spacepunk, you die instantly. lmfao

-Activated triggers throughout each screen so that the spacepunks disappear from the screen once passed, however I believe I've screwed up the screentypes or placed the trigger-tiles in the wrong position because when you leave a triggered stage and go back (it erases the punks no matter if you killed them or not) which is not a bad thing, but if you go back to the next screen, the punks just disappear again xD This is an error due to my misunderstanding of triggers but hopefully I'll sort that out after work.

- Removed Title Screen Music because I was getting sick of it (It's the stock one used in the NESMaker Demos) - This game most likely will not have music by the end of the competition, It's too late for me to compose anything.

- The final boss now triggers a WinScreen once killed, albiet very abruptly as I haven't added a Death Animation to him. I still need to make walking animations for him.

The things I still need to do is:
- Make graphics for the Win Screen, Make animations for the Boss, Fix the spacepunks' movements so they're not too difficult to get around, and a couple other things. I'm going to make a front-cover hopefully the day before I upload the ROM to the competition.

In Australian Eastern Daylight Time, I've only got 5 days, 7 hours to complete whatever I can before the competition ends. I'm struggling however I'm not giving up. I'll upload my updated ROM to the forums hopefully tonight, if not, Thursday. - Thank you all and I'll get back to you very soon! :D
 
Top Bottom