Start developing a game and don't sink into engine design?

You can talk about almost anything that you want to on this board.

Moderator: Moderators

User avatar
dougeff
Posts: 3078
Joined: Fri May 08, 2015 7:17 pm

Re: Start developing a game and don't sink into engine desig

Post by dougeff »

how can one start developing the game and not burn out before seeing anything viable?
Technical issues, like "how to compress all way scrolling" will slow you down.

Maybe you need to simplify or rethink the project.

Many of the people who have been doing this for a long time limit their games to single screen at a time (zelda and mad wizard and every NESmaker game), or 2 screens at a time (most mojon twins games).

By adding this limit, you can focus on gameplay and game design.
nesdoug.com -- blog/tutorial on programming for the NES
User avatar
tokumaru
Posts: 12427
Joined: Sat Feb 12, 2005 9:43 pm
Location: Rio de Janeiro - Brazil

Re: Start developing a game and don't sink into engine desig

Post by tokumaru »

If you want quick prototyping, better use the PC rather than the NES, and convert the engine to the NES once it's working the way you want.
psycopathicteen
Posts: 3140
Joined: Wed May 19, 2010 6:12 pm

Re: Start developing a game and don't sink into engine desig

Post by psycopathicteen »

yaros wrote:I have an idea of the mechanic, and trying to find an approach to prototype it without spending month of developing tooling and engine just to realize it does not work. I am aware of the idea of Miminum Viable Product, but not sure how to approach it for NES.

My issue is that NES being limited hardware, and having limited software support. I can't really write bad and fast code, because don't have enough CPU, neither I can use sorting and big amount of variables for sates and collisions because I don't have enough RAM.

I want to have top-view game with 4-way scroll that I can theoretically put on cart. With structure of something like that

Code: Select all

    _
 __| |_
|      |
 --|___|
And I already have an issue of how should I store the data, and automatically load background and metadata. Cheap and fast way is just to have NxM arrays of background tiles, collision tiles, enemies etc, but it will obviously won't fit.

So now I start thinking about the of:
1. Storing maps (uncompressed nametables with ID, global x and global Y, because I didn't came up with a way to uncomress lines/columns without unpacking whole kilobyte of data into the ram)
2. Creating maps, as generic NES tools (like NESST) only cover 1 screen (probably just by hand, because trying to adapt "Tiled" editor to convert to what I need, will be even harder)
3. Storing collisions (probably parallel arrays of sorted x,y,type objects)

And all of this looks like a lot of work for a prototype (not saying as it shouldn't, as I am trying to develop for NES, and NES is not modern engine created to be easy).

My question is not about specific approach (although any hints/links would be appreciated), but more about how can one start developing the game and not burn out before seeing anything viable? What could or should be stripped off technically or nor in order to be able to progress?
Have you heard about meta-tiles? Most NES design levels with 16x16 blocks, and convert them to 8x8 tiles during scrolling.
User avatar
pubby
Posts: 583
Joined: Thu Mar 31, 2016 11:15 am

Re: Start developing a game and don't sink into engine desig

Post by pubby »

Scrolling is tricky but it doesn't take very long to implement.

The longer slog is implementing all of the items, levels, enemies, and abilities. That's the type of thing you'll burn out on.
User avatar
never-obsolete
Posts: 411
Joined: Wed Sep 07, 2005 9:55 am
Location: Phoenix, AZ
Contact:

Re: Start developing a game and don't sink into engine desig

Post by never-obsolete »

pubby wrote:The longer slog is implementing all of the items, levels, enemies, and abilities. That's the type of thing you'll burn out on.
This. I finished the core of my Zelda-like game years ago, but always get burnt out creating content. I also like building engines, so I've started a few other projects and bounce around a lot.
. That's just like, your opinion, man .
User avatar
Banshaku
Posts: 2417
Joined: Tue Jun 24, 2008 8:38 pm
Location: Japan
Contact:

Re: Start developing a game and don't sink into engine desig

Post by Banshaku »

It is possible to work on a huge project from the get go but chances are the motivation will dry once the grunt work comes and complication arises.

Better to start with smaller projects, which will allow to build your experience. Compared to bigger one, it will be easier to manage and code can be re-used too in your next one.
User avatar
toggle switch
Posts: 139
Joined: Fri Sep 30, 2016 8:57 pm

Re: Start developing a game and don't sink into engine desig

Post by toggle switch »

no matter what you do, it's going to take a while to get up and running.

what i did, was actually developed a level editor for my game before doing anything on the NES. that taught me the technical limitations of the graphics, which is going to factor into how you choose to compress your level data. design your level editor to spit out a bunch of hex data, and then your NES code is simply de-compressing the data and pushing it where it belongs, byte by byte.

it also makes level building much much more fun, which as others have mentioned, it can be a drag without the right tools.

my first project is a pretty full-scale game, but it's taken a year and half so far, with another 6 months to go.
User avatar
gauauu
Posts: 779
Joined: Sat Jan 09, 2016 9:21 pm
Location: Central Illinois, USA
Contact:

Re: Start developing a game and don't sink into engine desig

Post by gauauu »

I think it's important to spend a good amount of time near the beginning thinking about what you really want to do, and what's required to get there. Is 4-directional scrolling important to your dream project? How big of a game does this thing have to be? Do some back-of-the-envelope math to see what sort of compression might or might not be necessary. Do the simplest thing necessary to build the thing you want. Don't devise the world's best banking scheme, or level compression, or vram updater. Only make it as complex as you need to.

If you sacrifice too much, you'll be disappointed, and will lose interest. If you go too big, you'll get stuck and get discouraged. Find that minimum thing that still lets you make the game you're dreaming of.
pubby wrote: The longer slog is implementing all of the items, levels, enemies, and abilities. That's the type of thing you'll burn out on.
I like to mix it up. Leave a few interesting features unimplemented if you can afford to. Work on content when you're not in the mood to work on new features. Work on features when you're sick of adding content.
User avatar
Banshaku
Posts: 2417
Joined: Tue Jun 24, 2008 8:38 pm
Location: Japan
Contact:

Re: Start developing a game and don't sink into engine desig

Post by Banshaku »

There is a good part that I had to stop so "working" is quite a loose term in that case even though I had the project all the time in the back of my head but now I can put a little bit of time on it, which is refreshing. At that pace, I will match the same schedule as duke nukem forever :lol:

As for little projects, it can be interpreted in many ways. For example, if you scope is quite big, trying to build everything in one shot is quite hard. In assembler, one bug sometime can make thing fails many places (especially when you refactor the names and now everything goes south by accident ^^;;) and hunting it on a huge scale is hard. For your situation, the little projects would be "units" that can be used in your goal projects, code that can be reused with ease. Those units could be the 4 way scrolling, handling meta-sprites format, compression of data, handling of music and sfx, AI, intro/cut scene management, fx with raster etc.

By separating in smaller units/projects with test assets, it will be easier to manage and you will have re-usable code for later. And isolating the feature will make it easier to debug, which is a plus.
Oziphantom
Posts: 1565
Joined: Tue Feb 07, 2017 2:03 am

Re: Start developing a game and don't sink into engine desig

Post by Oziphantom »

Two ways

1. Use something more powerful, a SNES for example, you will be able to keep 6502 code, the tile format is the same, just its extra RAM, banks, CPU speed mean you can write the most crap code it will give you about NES performance. Then you can optimise and compress the data down as needed to get it to a NES. Or say screw it and release it as a SNES title.

2.) Hack the emulator, seems the NES and its PPU don't really have a very tight relationship, so get an emulator and make it execute 2,3 instructions per the normal 1. Just throw more RAM into the address space, and give yourself a 512K cart.
User avatar
tokumaru
Posts: 12427
Joined: Sat Feb 12, 2005 9:43 pm
Location: Rio de Janeiro - Brazil

Re: Start developing a game and don't sink into engine desig

Post by tokumaru »

Maybe use one of the emulators with Lua scripting (FCEUX, Mesen) and write most of the game in Lua? I don't know if you can manipulate the memory-mapped registers directly from Lua or how that works in regards to timing, but even if you have a ROM with just a vblank handler to dump buffers to the PPU, the rest of the logic could all be Lua.
User avatar
qbradq
Posts: 972
Joined: Wed Oct 15, 2008 11:50 am

Re: Start developing a game and don't sink into engine desig

Post by qbradq »

I like to start with a 12 pack of colored pencils and a graphing notebook.

[Big image]
User avatar
qbradq
Posts: 972
Joined: Wed Oct 15, 2008 11:50 am

Re: Start developing a game and don't sink into engine desig

Post by qbradq »

I could have said more :) I am on my phone so it's hard. When prototyping use the fastest thing that answers the questions you have. A lot of times drawing what you are thinking about is the fastest and easiest. Even if it's all straight lines and stock figures. That's what I start with :)
strat
Posts: 409
Joined: Mon Apr 07, 2008 6:08 pm
Location: Missouri

Re: Start developing a game and don't sink into engine desig

Post by strat »

The Lua scripting feature of FCEUX provides access to NES cpu memory so it's definitely possible to prototype the gameplay on the Lua side. Though as Tokumaru hinted, the rom should still have a typical NMI update routine. A minimal loop looks like this:

Code: Select all

while(true) do
	emu.frameadvance()
	
	--game loop goes here
end

I'm not sure if it's possible to keep absolutely all the code in Lua; you'd probably have to poll the vblank flag instead of using an NMI.
User avatar
PypeBros
Posts: 34
Joined: Sat Nov 10, 2018 7:35 am

Re: Start developing a game and don't sink into engine desig

Post by PypeBros »

I'd be tempted to suggest the use of NDS / GBA as a platform to quickly prototype NES stuff. You would have tiled graphics, multi-track sound (including with pulse generators in the case of the GBA) and NES-like input. You would have access to high-level language and about 10x more CPU power.

Of course, this is said by someone who's been doing NDS development and no NES development so far, so better cross-check that with people who have first-hand experience.
Image - may the source be with you.
Post Reply