It is currently Mon Oct 23, 2017 5:38 pm

All times are UTC - 7 hours





Post new topic Reply to topic  [ 34 posts ]  Go to page 1, 2, 3  Next
Author Message
 Post subject: An interesting idea...
PostPosted: Fri Apr 18, 2014 8:06 am 
Offline
Formerly AlienX
User avatar

Joined: Fri Apr 18, 2014 7:41 am
Posts: 133
Location: Bulgaria
The NES is a great system and developing games for it is an awesome thing to do. There's just one problem. A lot of it has to do with knowing 6502 assembly. There have been other ways of doing it, like with NBASIC or C(thou programming NES games with C seems to require special run-time libraries, that, as far as I know, aren't posted online), but it still involves writing huge complicated paragraphs of code. This is probably what scares most people away and why so many NES projects are left unfinished.
So, I have an idea, which I can't execute myself, due to a lack of time and enough advanced programming knowledge, so the only thing I can do is tell it. How about someone creates software, that will make it easier to make NES games. Sure, there's NESICIDE, but it still uses assembly. I'm talking about a more user friendly, easy to use program, close to the level of Game Maker. It's ambitious, I know, but think about how many people will be attracted to NES Game Development. To have all those creative types, that are not very good at programing, but with a little learning and hard work, be able to make their own games and add more to the homebrew scene.
You could say, I'm just whining, because assembly is too tedious to learn and use; that sitting down, busting out lines of code is hardcore and better, since you have more control over what's going on. Still, I think, the NES Game Maker idea is a good one and somebody with enough programming knowledge should give it a try. Perhaps nothing will come out of it, but maybe, it could be successful and could add new people to the community and, of course, more NES games.
I'll probably get bashed with the rest of the community's wooden club right in the head for posting this, but one of my dreams was to be able to make some neat NES games, but the assembly... Oh, God, the assembly... I'm pretty sure there are many more in my position. So, if it could be easier and more intuitive with PC and Mac games, why shouldn't be with NES games, as well?
Think about it.

_________________
Greetings! I'm That Bio Mechanical Dude and I like creating various stuff like movies, games and of course chiptunes!
You can check out my YouTube Channel.
You can also follow me on Twitter.


Top
 Profile  
 
PostPosted: Fri Apr 18, 2014 8:15 am 
Offline
User avatar

Joined: Thu Jan 19, 2006 5:08 pm
Posts: 744
Location: Shelton, Washington.
an NES game maker is not that possible (unless you create one like Dezaemon which abides to the limits), but making a BASIC or C program for it is!

Rob's NBasic is a horrible option, so to get what you need for basic programming, you might as well learn how Batari Basic's code works and make a variant/fork of it to support NES's hardware, or use Famicom Basic.

Or, until then, Stick with C or assembly. They are the only best choices so far, Although more options are in development, such as Ruby, Python and Atalan/Scratch, There's even a C# (C Sharp) compiler in it's WIP stages, I think.

EDIT: I've been in your shoes, AlienX. Everyone knows how it feels being a total newbie, I've been there and back!

_________________
AKA SmilyMZX/AtariHacker.


Top
 Profile  
 
PostPosted: Fri Apr 18, 2014 9:54 am 
Offline
User avatar

Joined: Wed Dec 06, 2006 8:18 pm
Posts: 2801
Chances are if you view Assembly as an impossible mountain to climb, you can't program anyway. But that doesn't mean you can't do anything. Programming is one part of making a game, but other important parts are the design of pretty much everything else and the art. Both graphics and sound/music.

If you seriously had an idea for a NES game but can't program, you could develop that idea and find a programmer that can help put it together. But I think alot of people don't realize they only have a small part of an idea and don't realize just how much more they need to figure out.

If you can program in BASIC, C, or something similar you can learn 6502 assembly. It's not that hard. It may take time to write things really efficiently but you may not need it to be very efficient alot of the time.

The NES doesn't have the resources to run any flexible sort of "Game Maker" like a modern PC does. I also don't think that assembly program is the "one problem". Infact I think assembly programming is far from the most challenging parts of making a game on the NES. You have to deal with plenty of other limitations, like the number of sprites, colors, tiles/patterns, bankswitching, limited memory, limited vblank time, etc.


Top
 Profile  
 
PostPosted: Fri Apr 18, 2014 11:22 am 
Offline
User avatar

Joined: Sun Jan 02, 2011 11:50 am
Posts: 522
MottZilla wrote:
You have to deal with plenty of other limitations, like the number of sprites, colors, tiles/patterns, bankswitching, limited memory, limited vblank time, etc.


That's the point I was thinking about when I read the first post. There have been many posts like this and many attempts and ideas for making the assembly language easier or bypass it altogether (some successfull) but you still have to learn about how the NES hardware works on a fairly low level to do anything worthwhile with it. You could make some kind of game maker engine, but it would likely be limited to games that were variations of the same game.


Top
 Profile  
 
PostPosted: Fri Apr 18, 2014 11:30 am 
Offline
User avatar

Joined: Sat Feb 12, 2005 9:43 pm
Posts: 10068
Location: Rio de Janeiro - Brazil
You might be interested in this awesome upcoming tool: http://nesrommaker.wikispaces.com/

Seriously though, there's only so much you can dumb down the development process of a retro game before the resulting code is so inefficient that it won't be possible to manage much action with enough speed.

Also, for something like this to be as simple as people who can't program would like, this tool would have to provide different game engines for all the different kinds of games (RPG, platformer, fighting, etc.), and that would be a huge undertaking for whoever is making such a tool, and the result probably wouldn't be as customizable‎ as users would like. There isn't even any guarantee that the games people make will serve as retribution for all this work, because when tools make the process too easy a lot of lazy people start to think they can also make games, but without real dedication all they can come up with is crap.

I believe that dedication is essential for creating something interesting, be it a game, a book, a drawing, whatever. So if you're already dedicated enough to come up with an awesome idea, you can probably go the extra mile and learn how to implement that idea yourself. If you really can't, you can always look for people who share the same vision as you and have the skills you don't. Either way you have to apply yourself, good things don't come easy.

Even batari Basic, which greatly simplified the process of making Atari 2600 games and significantly increased the amount of homebrew games, doesn't help with the actual game logic at all. It just abstracts the video hardware into something that doesn't require the programmer to "race the beam". It allows programmers to focus on their game engines, which still must be carefully planned on a game-per-game basis.

MottZilla wrote:
Infact I think assembly programming is far from the most challenging parts of making a game on the NES. You have to deal with plenty of other limitations, like the number of sprites, colors, tiles/patterns, bankswitching, limited memory, limited vblank time, etc.

I completely agree. The programming language is just a way for us to communicate with the system, and no matter the language you use, you still have to figure out WHAT to tell the system, and that's the tough part.

Even more complex the the specific hardware aspects you mentioned (sprites, colors, etc.) are the game programming concepts you need to master, like scrolling maps, collision detection, physics, object management... that's is the real challenge.


Top
 Profile  
 
PostPosted: Fri Apr 18, 2014 12:15 pm 
Offline
User avatar

Joined: Sun Jan 22, 2012 12:03 pm
Posts: 5736
Location: Canada
You could do something like this by basically starting with a template game that you "fill in the blanks". e.g. Someone could write a platform game engine and editor, and there is no game code to change and you just replace music and sound and level data. You aren't going to be able to customize character AI significantly without learning to program, but you can make an engine that is very data-driven and potentially give someone a nice tool for it that packages/assembles your data into the ROM and helps you manage the limitations.

The romhacking community already does this with existing games. You can find plenty of tools that are designed to replace data in existing games, especially Mario Bros games. Maybe you should try this approach? The only thing here is that existing games aren't designed with this kind of easy drop-in replacement in mind, so often the details get a bit hairy.

Honestly though, NES homebrew is a niche thing. There are a zillion easy game making tools for modern platforms. In general, people don't come to NES for easy. The reason there are so many tools for PC is that so many people have them and use them. Only a small subset cares about NES, not enough that someone out there already wants to build you a turnkey game-maker.

Anyhow, asking for it isn't going to make it happen. If you really want it: build it, and share it. You might not know how to program right now, but you can learn. If you did learn, would you care about making it easy for others, or would you just go on to build your own thing?


Top
 Profile  
 
PostPosted: Fri Apr 18, 2014 12:28 pm 
Offline

Joined: Mon Sep 27, 2004 2:57 pm
Posts: 1248
If you just want to make games without having to learn assembly (which honestly isn't the nightmare everyone seems to think it is), just get Love2D, or Klik N Play/Multimedia Fusion or something along those lines. It doesn't need to run on the NES.

Developing for the NES isn't even all that great, either. The only reason to do it is for the "wow factor" of simply doing something on a system nobody would expect, but even after 10+ years time, we barely have anything more than simple demos and puzzles, despite numerous people chiming in with their next big revolutionary homebrew project that they won't deliver (I'm guilty of this too).

Even if you did pull off something impressive, what would it get you? A small community of NES fanatics who are blown away, and maybe a kotaku article and that's about it. Have you heard of Battle Kid? Probably not, but I'm sure you're heard of Knytt Stories, or that goddamned Flappy Bird game. If you really want to make something impressive, it's probably better to do it on the PC, where the kinds of tools you're looking for do exist, as well as a much bigger community to give you support, not to mention a much more accessible platform for people to play your game.

I'm sorry to say, but we're really just a bunch of tired old dorks who won't let go of a 20 year old game console. If you're looking to strike gold, you probably won't find it here.


Top
 Profile  
 
PostPosted: Fri Apr 18, 2014 12:35 pm 
Offline
NESICIDE developer
User avatar

Joined: Mon Oct 13, 2008 7:55 pm
Posts: 1028
Location: Minneapolis, MN
AlienX wrote:
Sure, there's NESICIDE, but it still uses assembly.

...or C...or qbradq's uc65 extensions.


Top
 Profile  
 
PostPosted: Fri Apr 18, 2014 2:41 pm 
Offline

Joined: Sun Sep 19, 2004 11:12 pm
Posts: 19122
Location: NE Indiana, USA (NTSC)
Drag wrote:
If you really want to make something impressive, it's probably better to do it on the PC, where the kinds of tools you're looking for do exist, as well as a much bigger community to give you support, not to mention a much more accessible platform for people to play your game.

I can see three reasons why one might target a retro platform:
  1. Some game concepts aren't so great on a tiny 17" monitor, especially those that expect two to four gamepads. Are more PCs than NES or Super NES consoles hooked up to televisions? Slashdot users appear to think there aren't many gaming PCs in living rooms. Modern consoles are in living rooms, but they also have fairly restrictive developer qualifications.
  2. The cost of making assets (everything in a project that isn't code) for an NES game is within reach of a 1- or 2-man team, unlike on PC or modern consoles where players by and large won't pay for a game unless it's at minimum 3D with high-definition meshes and textures.
  3. How tight is the audio latency on a PC? I know it's horrid on Android. Modern consoles have low enough latency audio to support rhythm games, but they also have fairly restrictive developer qualifications.


Top
 Profile  
 
PostPosted: Fri Apr 18, 2014 4:26 pm 
Offline

Joined: Wed May 19, 2010 6:12 pm
Posts: 2295
For simple games with no bank-switching, I think it looks pretty feasible.


Top
 Profile  
 
PostPosted: Sat Apr 19, 2014 4:06 am 
Offline
Formerly AlienX
User avatar

Joined: Fri Apr 18, 2014 7:41 am
Posts: 133
Location: Bulgaria
Thanks for your replies. They really made me think about this.

rainwarrior wrote:
Honestly though, NES homebrew is a niche thing. There are a zillion easy game making tools for modern platforms. In general, people don't come to NES for easy. The reason there are so many tools for PC is that so many people have them and use them.


That's true, but accessibility is one thing, that would affect how many people play the game. For example, if I make a game in Game Maker, it's gonna be only on Windows. In order to appeal to Mac and Android users as well, I must get GameSalad Creator and start making the game all over again. If it's for the NES, more people will be able to play it, since there are emulators for almost every modern system: Windows, Mac, Linux, Android, iOS, Modded Playstations and Xboxes... In fact, someone could make a reproduction cart and play it on a real NES. While NES homebrew projects are niche, with enough advertising on different sites, it could be somewhat popular. "Battle Kid" certainly did. Yeah, I know, it's not that popular outside hardcore NES fans, but it still got some attention, as far as I know.

MottZilla wrote:
You have to deal with plenty of other limitations, like the number of sprites, colors, tiles/patterns, bankswitching, limited memory, limited vblank time, etc.


I don't really mind the hardware limitations so much. I think they give the system character. Sure, they can be annoying sometimes, but you can't make something incredibly advanced on the NES.

I have been making a game, that's for Windows, but in the style of NES games. And I mean, really in the style of NES games, following every noticeable limitation that the system has, mostly in the graphic department. From the limited color palette, only 3 visible colors per sprite, every 16x16 block of background using only one palette; being able to show only 8 sprites in the same row; the fact, that you can't have much going on on the screen, without slowing the system down, due to the short vblank period not allowing you to move all the different 8x8 sprites, that you have; to the smaller, more unnoticeable things, like the fact that sprites, that have been off-screen don't gradually move pixel-by-pixel in screen; rather, they just pop up, near one of the sides. Following all these limitations can be annoying, but it's required for the game to really feel like it's on the NES. Then I thought: "Why don't I just make it for NES?" I have been following the "Nerdy Nights" tutorials, but due to constant struggling with the tedious-to-use 6502 assembly, I kinda gave up on it.

Now I wonder, would it be better to sit down and continue this struggle, and make a game that's, possibly, more accessible to everybody or should I continue making it for PC, which will be easier, but by the end, not that accessible?

_________________
Greetings! I'm That Bio Mechanical Dude and I like creating various stuff like movies, games and of course chiptunes!
You can check out my YouTube Channel.
You can also follow me on Twitter.


Top
 Profile  
 
PostPosted: Sat Apr 19, 2014 6:34 am 
Offline

Joined: Sun Sep 19, 2004 11:12 pm
Posts: 19122
Location: NE Indiana, USA (NTSC)
I'd say make it for the PC using Pygame, trying to respect the NES limits as best you can. A Pygame game can be played on any platform that supports Python and SDL 1.2, which includes Windows, OS X, GNU/Linux, and Android. I've done this a bit myself: Wrecking Ball Boy, FHBG remake


Top
 Profile  
 
PostPosted: Sat Apr 19, 2014 11:31 am 
Offline

Joined: Sun Apr 13, 2008 11:12 am
Posts: 6303
Location: Seattle
AlienX wrote:
or C(thou programming NES games with C seems to require special run-time libraries, that, as far as I know, aren't posted online), but it still involves writing huge complicated paragraphs of code.
I strongly recommend looking at the Mojon Twins' two C projects.

Anyway, the problem with a "generic" game creator for the NES is that the NES only really has enough processing power and RAM to make any one kind of engine at a time: a generic engine that could be a platformer OR an RPG OR a shmup OR a puzzle game would have to throw a lot of versatility away in order to fit. (Alternatively, we could call that "generic engine" the NES hardware, and the software is the set of definitions that pick one of them)

So, ultimately, someone's going to have to write a suite of different generic runtimes for each supported game type in some lower-level language in the first place, and then have an interface to plug the data in. At that point, you might be better off using one of the myriad ROM level editors.


Top
 Profile  
 
PostPosted: Sat Apr 19, 2014 2:19 pm 
Offline

Joined: Sun Sep 19, 2004 11:12 pm
Posts: 19122
Location: NE Indiana, USA (NTSC)
lidnariq wrote:
So, ultimately, someone's going to have to write a suite of different generic runtimes for each supported game type in some lower-level language in the first place, and then have an interface to plug the data in. At that point, you might be better off using one of the myriad ROM level editors.

But there's one big difference.
  • Level editor for an original homebrew game: You may distribute the end result to the public. In fact, you're encouraged to do so as it may help you land a job at a company making games for modern platforms.
  • Level editor for a commercial game: You MUST NOT distribute the end result to the public. Copyright forbids it.

Here's one way I might consider working around it:
  1. Prototype a game in each genre as a total conversion of a commercial game that uses absolutely none of its graphics. Or prototype it on PC. Just make it fun.
  2. Someone else makes brand new engines to play the same games, with an architecture that allows a thorough level editor.
  3. The level editors for the new engines are the "game makers".
What has held back scrolling homebrew is that the skills for step 1 and 3 and the skills for step 2 don't always intersect.


Top
 Profile  
 
PostPosted: Sat Apr 19, 2014 5:30 pm 
Offline
User avatar

Joined: Sat Feb 12, 2005 9:43 pm
Posts: 10068
Location: Rio de Janeiro - Brazil
Here are some minor nitpicks, which might affect how your NES-like game will work:

AlienX wrote:
due to the short vblank period not allowing you to move all the different 8x8 sprites

You can surely move all 64 8x8 (or 8x16) sprites every frame. A sprite DMA, which copies 256 bytes (4 bytes per sprite time 64 sprites) to the OAM uses only about 513 cycles out of the 2273 or so cycles of VBlank. The problem with moving many sprites in a single frame actually lies in calculating these 256 bytes of positions, palettes and tile indices, which is done before VBlank. Depending on how optimized your engine, object A.I. and meta-sprite system are, these calculations may or may not finish in time for the vertical blank.

Quote:
like the fact that sprites, that have been off-screen don't gradually move pixel-by-pixel in screen; rather, they just pop up, near one of the sides.

Sprite popping only happens at the top and at the left of the screen, because sprite coordinates can't be negative. They can however scroll smoothly at the bottom and right sides of the screen without problems. If they don't, it's the games fault, not the NES'.


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 34 posts ]  Go to page 1, 2, 3  Next

All times are UTC - 7 hours


Who is online

Users browsing this forum: No registered users and 11 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group