Wartide 1990 (in development)

This is an archive of a topic from NESdev BBS, taken in mid-October 2019 before a server upgrade.
View original topic
Wartide 1990 (in development)
by on (#162120)
I am working on a homebrew nes game, would appreciate the comments/feedbacks.

Image

Currently there is not much of a gameplay. You can move forward endlessly. It generates some (very stupid) enemies. You can destroy terrain. and that is all.

I am planning to add some more terrain objects (buildings and stuff) and then I will focus more on gameplay. I still have no idea how to improve it though.

Here is a link for it if you want to test it on your browser.

http://enginmercan.com/wartide/
Re: Wartide 1990 (in development)
by on (#162121)
Nice start. I just played it on real hardware and it works fine.

Is the terrain randomly generated?

It's great that you can shoot in 8 directions, and really cool that you can destroy terrain. It took me a while to figure out how to do it. I think it takes too many shots.

I died, (it's good that I was able to die) and no respawn, or game over screen, or reset.

Sometimes the scrolling seems a little jittery. I'm not entirely sure why. It might be lag frames. Is all of the game logic in NMI by chance?

Just realized, you do have more than one life, and a life bar. The life bar is too low. It's very hard to see, and when you respawn, it's instant, so the player doesn't even know they died.

No idea to improve it on gameplay or code? There are a lot of ways you could go with it, but it's pretty cool that you started out with a little game. You could build this into a sweet top-down shooter with some crafting.
Re: Wartide 1990 (in development)
by on (#162122)
> Nice start. I just played it on real hardware and it works fine.
Thanks! I wish I could run it on a real nes too, programmable cartridges are too expensive. I am planning to buy when I finish it more.

> Is the terrain randomly generated?
yes it is.

> It's great that you can shoot in 8 directions, and really cool that you can destroy terrain. It took me a while to figure out how to do it. I think it takes too many shots.
Yeah, I planned terrain destruction for last result actually. If it somehow generates and impassable terrain, so players can continue to play :D Such case shouldn't be possible though (I hope)

> I died, (it's good that I was able to die) and no respawn, or game over screen, or reset.
> Just realized, you do have more than one life, and a life bar. The life bar is too low. It's very hard to see, and when you respawn, it's instant, so the player doesn't even know they died.
Yeah, that feature is still missing. I am planning to add it when my screen generating tool is a bit better.

> Sometimes the scrolling seems a little jittery. I'm not entirely sure why. It might be lag frames. Is all of the game logic in NMI by chance?
Yeah, it gets laggy when there are too many enemies and bullets. probably it gets even laggier when it tries to update terrain. I am using Shiru's neslib and probably my code is very bad.
I don't understand what you mean by "all of the game logic in NMI by chance". It is a while(1) loop that runs in main.

> No idea to improve it on gameplay or code? There are a lot of ways you could go with it, but it's pretty cool that you started out with a little game. You could build this into a sweet top-down shooter with some crafting.
I just can't think anything more to add. I am planning different enemies and guns. But even with those it will boil down to game throwing enemies at you constantly. I probably should add some boss fights probably. And different levels. Then it would be a complete game I hope.
Re: Wartide 1990 (in development)
by on (#162123)
Pretty cool so far. If you don't have plans for the B button, maybe you could use it to lock the gun's aiming direction. So you could shoot and move in different directions. That can be more useful if the enemies get smarter, or chase you.

Quote:
Thanks! I wish I could run it on a real nes too, programmable cartridges are too expensive. I am planning to buy when I finish it more.


I'm planning on selling my GTROM board devkit in the $30 range, includes a flash cart and USB adapter. I do have a limited quantity of an early version of the kit right now, I'm working on an improved USB adapter for the general release.
Re: Wartide 1990 (in development)
by on (#162126)
Quote:
I am using Shiru's neslib and probably my code is very bad.
I don't understand what you mean by "all of the game logic in NMI by chance". It is a while(1) loop that runs in main.


I believe Shiru's neslib / cc65 approach is the opposite... It's an " all in the main" approach, with a "Wait for V-blank" at the end of the while loop. You get lag when your logic runs so long that you are already past the next V-blank period when it starts looking for one.

If you are consistently getting lag, you may have to either...
1.do only half of the collision checks each frame, and the other half next frame
OR...
2.Rewrite some of your code in ASM, to be as fast as possible.
Re: Wartide 1990 (in development)
by on (#162141)
dougeff wrote:
1.do only half of the collision checks each frame, and the other half next frame


That is pretty good idea, thanks. There is probably a lot to optimize in my collision code though, if I can't make it into a single frame I will try this too.

dougeff wrote:
2.Rewrite some of your code in ASM, to be as fast as possible.


I don't know anything about 6502 though. Even if I start learning, I believe it would just take too much time for me to code this game in assembly.

Memblers wrote:
I'm planning on selling my GTROM board devkit in the $30 range, includes a flash cart and USB adapter. I do have a limited quantity of an early version of the kit right now, I'm working on an improved USB adapter for the general release.


I would like to buy one when it is out. Will you ship it world wide? (I am from Turkey)
Re: Wartide 1990 (in development)
by on (#162143)
Also is there a C programming tutorial for nes games? What to do or what not to do. There are some hints in Shiru's web page, I was looking for a little more advanced one.
Re: Wartide 1990 (in development)
by on (#162150)
Quote:
Also is there a C programming tutorial for nes games? What to do or what not to do. There are some hints in Shiru's web page, I was looking for a little more advanced one.


Yes. Mine. It's not more "advanced", but it is more detailed.

https://nesdoug.wordpress.com/

I did not use Shiru's neslib or runtime.lib, but perhaps it could still be useful.

Also, the basic 6502 ASM instructions are easy to learn... LDA #0, STA some_variable. Etc. You could learn it in a few weeks.
Re: Wartide 1990 (in development)
by on (#162151)
shultays wrote:
I don't know anything about 6502 though. Even if I start learning, I believe it would just take too much time for me to code this game in assembly.

Depends on what you would consider too much time.

Seems like you've got a good grasp of the fundamentals on how to break tasks into simple instructions you can give to a computer. That's the big key. The instruction set for 6502 ASM is not big.

Overall the benefit for learning how to do it for at least some parts is pretty big. Somebody please correct me here if my estimates seem off, but you've got approximately 30,000 cycles per frame, (29780.5.) so if you're frames are already lagging I'm going to guess you're probably spending half of of that time on collision detection. With ASM, you could make a collision routine that would run under 5000 cycles per frame. If you want to make something along the lines of a Konami shooter, think of how much stuff they can have going on before they lag.
Re: Wartide 1990 (in development)
by on (#162156)
darryl.revok wrote:
With ASM, you could make a collision routine that would run under 5000 cycles per frame. If you want to make something along the lines of a Konami shooter, think of how much stuff they can have going on before they lag.

I hope you don't mean the alleged lagfest that is Gradius III. Ask psycopathicteen and Espozo about that one.
Re: Wartide 1990 (in development)
by on (#162157)
tepples wrote:
I hope you don't mean the alleged lagfest that is Gradius III.

Major lagfest. That and Super R-Type were two of my first SNES titles. Both ran stupidly slow on the SNES.


I was thinking more along the lines of Jackal for NES as I figured that's kind of what OP was inspired by. It doesn't seem to slow down with a pretty decent amount going on.

shultays wrote:
I don't understand what you mean by "all of the game logic in NMI by chance".

The most popular beginner's ASM tutorial simplifies the learning process by putting all of the game logic in NMI. It simplifies teaching but complicates things with larger programs. Some beginners stick with that framework so it was just a guess.

I guess I should have known it wasn't an NMI issue because the screen wasn't jumping around. I've run into that before.

Quote:
But even with those it will boil down to game throwing enemies at you constantly.

This can be fun if done well with bosses and interesting environments. Look at Contra.

Other than that, just brainstorming on some ideas, maybe you could do something objective-based, kind of like Desert Strike, but that would require being able to freely navigate. If it's linear then objectives are pretty insignificant.

Here's an idea, instead of points, collect money, and at the end of levels, get the options to upgrade parts of your tank. Upgrading treads makes it faster, upgrading armor makes it take less damage, upgrading the weapon makes it do more damage. Changing the sprites to reflect upgrades could be a nice touch that would remind the player they're progressing, and maybe armor upgrades could just be a palette swap.

Pretty obvious, but making unique enemies that require smart gameplay mechanics to beat is really what makes an action game. If you're not sure what to do to make an action game fun, I don't think you have to break the mold, you just have to do action well. If you get tired of blasting the same guys over and over, make some with more difficult AI that force you to get better at the game.

Power-ups dropped by enemies would be nice. Maybe a temporary super shot or the ubiquitous screen wiper.

There's a ton you could do. I could keep brainstorming but you probably get the idea. Play some games and see what you like and what you don't like.
Re: Wartide 1990 (in development)
by on (#162191)
shultays wrote:
Memblers wrote:
I'm planning on selling my GTROM board devkit in the $30 range, includes a flash cart and USB adapter. I do have a limited quantity of an early version of the kit right now, I'm working on an improved USB adapter for the general release.


I would like to buy one when it is out. Will you ship it world wide? (I am from Turkey)


Yes, I'll be shipping it world-wide.
Re: Wartide 1990 (in development)
by on (#162199)
darryl.revok wrote:
Here's an idea, instead of points, collect money, and at the end of levels, get the options to upgrade parts of your tank. Upgrading treads makes it faster, upgrading armor makes it take less damage, upgrading the weapon makes it do more damage. Changing the sprites to reflect upgrades could be a nice touch that would remind the player they're progressing, and maybe armor upgrades could just be a palette swap.
darryl.revok wrote:
Power-ups dropped by enemies would be nice. Maybe a temporary super shot or the ubiquitous screen wiper.

That sounds... Familiar...

Image
Re: Wartide 1990 (in development)
by on (#162288)
Thanks for the feedback guys. First I will try to improve performance, then will try to improve gameplay.

I started to use fceux, it looks like it will do for benchmarking specific parts of game code. I tried nesticle, but couldn't figure to make it work with neslib :) I guess fceux will do.