I have a history when it comes to programming and designing NES games, but mainly as a hacker, and I have considered homebrewing from time to time. I think as long as classic gaming exists people will play classic games. I have a strong and passionate urge and considerable to create NES games, but I really don't want to feel like I'm wasting my time if people don't take it seriously, and that it is far too cumbersome for its own good.
Thoughts?
Well even though I've been in NESdev since 5+ years I still have doubts if it is a good idea !
Maybe we could share "traps" to avoid though. I have been on a game project for 5+ years, and the more the time pass, the less I do any progress. At first (started in 2005) I worked on it very hard and it was progressing very fast, the game engine was complete in 2007, then I made many improvement to it in 2008, and then I did really little progress, I only implemented a few more enemies and levels going on very slowly.
A trap is to start to code before having a ready game design. You should get ideas for a complete game, including many enemies, last bosses, etc... before you start programming. I had an idea just for one level and so I coded one level, and got stuck...
Optomon wrote:
I have a strong and passionate urge and considerable to create NES games, but I really don't want to feel like I'm wasting my time if people don't take it seriously, and that it is far too cumbersome for its own good.
You cannot expect the majority of people to consider it a decent hobby nor expect them to respect the work you put into it. On the other hand, the internet makes it easy to get in contact with people interested in retro gaming. Members of sites like nintendoage are going to love what you do. If that's alright with you, by all means, go for it.
My personal motivation is that it's been a childhood dream of mine to make an NES game. It has become kind of an obsession, gotta finish it, no matter what. :)
Definitely listen to what Bregalad has to say, though. Having an elaborate picture of what the game is going to be like will help a lot. Also, do not underestimate level design and enemy AI + event scripting. It can become quite a daunting task if you don't know what you're getting into.
miau wrote:
Also, do not underestimate level design and enemy AI + event scripting. It can become quite a daunting task if you don't know what you're getting into.
+ 1 to this, moreover do not underestimate design in general. If you ask me, game design, difficulty balancing, art and level design are the hardest parts of making a game. Programming the engine is easy peasy compared to that, especially with the wealth of information available here and on other websites. Getting good music and sfx for a game is probably the easiest part because the chiptune community is so big.
As for the original question... No I'm really not sure if it's a good idea at all. Still I find myself sporadically working on a game.
If you need someone to tell you to spend time on your hobby then maybe that's not the right hobby for you.
Hey Optomon. Nice to see you here.
Like miau it has been a dream of mine to make an NES game since I was little. The nostalgia and the good feeling I get pursuing an old dream is motivation enough for me to keep at it. If you had the same kind of dream growing up, this is a great hobby.
Since you come from a rom hacking background, you have a big head start. Based on the work you've done (assuming you are the same Optomon I think you are) you seem very knowledgeable about the NES, ASM and how the pros did things. You have the skills to jump right in. A lot of people start this hobby knowing nothing and do fine.
As far as taking it seriously, everyone here takes it seriously. There are regulars that have been posting here for years. Some people release their games on cart and
sell them. The collectors over at NintendoAge are enthusiastic about homebrew releases. Sivak's homebrew Battle Kid got a lot of press, even from
mainstream gaming sites. If you make a great game, people will want to play it.
Another approach is---if you don't have a solid idea for your game, as I most definitely did not---make the goals for your game as constrained as possible, in terms of features or size. I had no idea what form my game would finally take, but I knew I wanted the engine and gameplay to be as simple as possible (but still exhibit certain features I wanted, like scrolling). I haven't finished my game yet so time will tell if this was effective or not.
The number one reason you should make a game is for yourself. If you have a passion for NES games, and you've always wanted to make one that's more than enough of a reason. Selling it on cart, for me, would just be a really fun bonus on top of what I'm doing. I don't expect to make mountains of money on it---but to see my game on a new cart would be really rewarding.
My reason for it is I want to be a programmer and love assembly and want to see my programs work a NES because it was my first system, too, so it all comes into one and I am working on a game. Despite it being simple and NROM-128 (Would be NROM-64 or even NROM-32 if they existed, haha), I am having problems finishing it.
I am stalled on it though, once I got far and got some of the main stuff done for it, I hit a wall. Not a programming wall,but I kept putting work on it off and switching to other stuff, despite I want to still work on it, but now that school has started, too, my time is zero and I haven't worked on it in weeks, so yeah, once you start work, only take breaks once in a while or else starting back on it will be difficult. I just need time to start on it again, re-write some stuff, remember how it works, and fix a few bugs and stuff and add some more details and it'll be done. Just learn from my mistake and don't ever stop, even if it's 10 minutes only reading your code, try not to go a long time not looking at it.
Is it a good idea?
I don't know.
Do I enjoy it?
Yes. And that's all that really matters to me. Some people knit, some watch tv, others go out and dance, while I like to spend my time making games.
Quote:
The number one reason you should make a game is for yourself. If you have a passion for NES games, and you've always wanted to make one that's more than enough of a reason. Selling it on cart, for me, would just be a really fun bonus on top of what I'm doing. I don't expect to make mountains of money on it---but to see my game on a new cart would be really rewarding.
I agree with that. Sounds selfish, but the #1 reason to develop games is for your own statisfaction.
I consider myself to be lucky to have skills in programming, music and a little graphical stuff too, which makes me able to program games all my myself. Many people doesn't have this luck. (BTW I such hard at chemistry, biology, litterature, sport and handing out with girls as a compensation of that, but those skills aren't needed to make games
)
One could say it is important to make game for people who will to play it, but honnestly, when you haven't released your first game, nobody will aim to play it. In fact a few people will, I recevied a few messages of people who said they were impatient to play my game, and this is very appreciated. The might give me some motivation, but this isn't the #1 reason, at least yet. The day someone on here will have a significant fanbase of people asking for games, this might change though.
When it comes to the commercial things, I agree that sellings actual carts can be quite motivating. HOWEVER I disagree with people publishing their game only on commerical carts, and not releasing any free version, mainly because this is a hobby afterall, and since people freely took time to make free tools to assemble 6502 code, edit graphics, and people in this forum freely answers to any question related to NES development, the least someone can do is release a free version of games.
Nobody will ever be able to feed his family by selling NES games... not that I wouldn't want to do that if it was possible ! I'd be the first to be happy to run an actual game development company as a true job, but I know this is not going to happen.
Optomon wrote:
I have a history when it comes to programming and designing NES games, but mainly as a hacker, and I have considered homebrewing from time to time. I think as long as classic gaming exists people will play classic games. I have a strong and passionate urge and considerable to create NES games, but I really don't want to feel like I'm wasting my time if people don't take it seriously, and that it is far too cumbersome for its own good.
Thoughts?
There are people that still play and buy NES games. New games have been produced and sold. You are the only one to decide if it's worth your time. For some part of the appeal of the NES is its simplicity or limited nature. You couldn't really make a game yourself to match what is done on systems today. But making a game for NES is reasonable for a small group or just 1 person.
Making a game for the NES though is really secondary to actually designing the game. Dealing with the NES hardware isn't that difficult. But designing a full game on any platform is alot more work. You'll have some limits imposed by the NES hardware but still you have the same challenge of designing a game.
I agree with the fact you should create the game before you program it. Kind of like writing an essay. You know point form notes, bubbles, sketches and so on.
3gengames wrote:
...but now that school has started, too, my time is zero and I haven't worked on it in weeks
You know, this is actually quite an interesting topic. Is our time really that short? I'm pretty sure for most people it's just a matter of bad time management. Now I'm not saying I'm good with that myself, in fact I know I suck at it. But I'm just deceiving myself if I say I don't have enough time do this and that when I hang on IRC or senseless websites all day long.
thefox wrote:
3gengames wrote:
...but now that school has started, too, my time is zero and I haven't worked on it in weeks
You know, this is actually quite an interesting topic. Is our time really that short? I'm pretty sure for most people it's just a matter of bad time management. Now I'm not saying I'm good with that myself, in fact I know I suck at it. But I'm just deceiving myself if I say I don't have enough time do this and that when I hang on IRC or senseless websites all day long.
Yeah, I do have about 5 hours in the afternoon, but when I can't sit down and get 8 hours of work done, I don't like to work on it. 1 hour work, 30 minutes to eat, get sucked onto facebook forever browsing the web, get back focusing on the game, then go take a shower and get ready, but then it's like 10PM. XD
Yeah I just have to manage my time better I guess, But I don't like working on something 2 hours and calling it quits. I like to get lots of stuff done at a time.
Oh well, just don't do what I do and you should be fine.
3gengames wrote:
Yeah, I do have about 5 hours in the afternoon, but when I can't sit down and get 8 hours of work done, I don't like to work on it. 1 hour work, 30 minutes to eat, get sucked onto facebook forever browsing the web, get back focusing on the game, then go take a shower and get ready, but then it's like 10PM. XD
You don't really realize yet how much time you have. I would kill just to have that much time on my hand to work on my personal stuff. From your answer, you really don't know yet how to manage it.
If you really can't do anything because you don't have 8h, you will never do anything. This is just an excuse you made yourself to avoid working on it. In brief, this is called procrastinating and we are all good at that
Wait until you have to work long hours, have to commute long time, have kids that needs your attention and don't want to sleep until late time and you will realize after how much time you had. When you can play only 15 min more or less on a game and you get excited about it, you will realize more what I'm talking about.
Maybe deep inside you don't want to work on that project anymore. Only you will be able to make the final decision.
I have to agree with Banshaku, that is blatant procrastination. Take it from me, I'm 17 and I have had more than my fair share of trouble with that. If I had that kind of time on my hands to just lay back and code I would be in heaven.
Usually in a situation like this, if you have been working on your code for a long time, you are probably burnt out in which case you should take a break from it for a while and wait for your muse to come back. If you are just not wanting to work on it for no apparent reason then maybe you really don't want to do it and won't admit it.
Yeah, I'm 16 and have tons of stuff to do after school too randomly like goto swim meets and such. I am very active after school.
Well I guess this is good motivation to try working on my game only a little bit each day. If I show a new video to you guys, it has.
Nice to meet you all, and a couple of you, nice to see you again.
The number #1 reason to make games is self enjoyment, absolutely right. I always like the idea of making NES games with a high degree of passion and indulgence. A big issue seems to keep oneself motivated to make the game and stay focused on it, and not having it get too disorganized, which is understandable for large scale individualistic projects. But I'm glad to hear the value here in the NES, and the bottom line that if you make good games, people will play them.
I'm liking the advice about planning the whole thing out before you do it. It is very important to sit yourself down and know exactly what you are going to work on and plug away for hours. It's a good feeling.
Managing one's time really is an important topic. I have maybe 4 to 8 hours a week to work on my homebrew. And the one thing that keeps me moving forward is a rather granular TODO list. I plan out all the next things to do, as well as the bugs I need to squash. Also internal versioning helps as well.
Does anyone do anything similar?
In that respect I'm kind of bad. I mean if I have an application I am working on, then planning it out is perfectly legitimate but when I'm working on a small homebrew project like I'm doing right now (I'm making a space ship fighting game that is pretty simplistic to get the hang of scrolling backgrounds) I typically will just jump into cowboy coding mode since there isn't necessarily a whole lot to work on. If I were working on something of the size that cartlemmy is working on, I would most certainly plan things out well in advance.
cartlemmy wrote:
Managing one's time really is an important topic. I have maybe 4 to 8 hours a week to work on my homebrew. And the one thing that keeps me moving forward is a rather granular TODO list. I plan out all the next things to do, as well as the bugs I need to squash. Also internal versioning helps as well.
Does anyone do anything similar?
This sounds almost identical to how I work. I work on my game approximately 3 evenings a week, and on those evenings a max of maybe 2 hours. I keep a "dev log" text file. Every time I sit down I write in this and say what I'd like to accomplish for that session. If whatever that is is not extremely simple, I'll usually break it down into bite sized steps. Those steps may be as small as "create new source file for enemy." Sounds silly...but when you're as lazy as me it actually helps
The nice thing about not being able to work on it every single day is it almost builds burn out into your schedule. Instead of working like a madman for 8 hours a day for a month or two, I work like a mad man in tiny spurts with 2 day breaks in between. This way, I never burn out. I've been working this way for almost two years now, with zero gaps except for family occasions.
Everyone has to figure these things out for themselves of course, but it doesn't hurt to share; you never know who you might help/influence.
*edit* a more general comment about planning things out. This is next to impossible to do, at least for your first game. That of course may mean I just suck at planning. All I did for my game was decide what engine features I wanted to support, and gameplay features. I tried to stick to these constraints as ferociously as I could. For example, my first goal was to have 1 way scrolling. This kept certain aspects of the engine very simple such as the lifetime of items and enemies. At one point I decided I really wanted 2 way scrolling. This produced unforeseen consequences and I had to implement a lot more logic to handle enemies and items the way I wanted to. Thankfully, this did not kill the project. That was the last bit of "feature creep" I allowed into the game---any more would certainly multiply the remaining schedule. A better engine, more interesting gameplay can wait til the next project.
Gradualore wrote:
Every time I sit down I write in this and say what I'd like to accomplish for that session. If whatever that is is not extremely simple, I'll usually break it down into bite sized steps. Those steps may be as small as "create new source file for enemy." Sounds silly...but when you're as lazy as me it actually helps
I learned from
this article at 43 Folders that until your next three steps are no longer than ten minutes each, the only work you should do on the project is analysis: break each step into smaller steps. I do much of my tool coding on the bus to and from my day job; breaking things into steps no longer than a bus ride is vital to me.
Quote:
That was the last bit of "feature creep" I allowed into the game---any more would certainly multiply the remaining schedule.
I learned this the hard way when I posted
Lockjaw Tetromino Game (for PC) to tetrisconcept. It was originally a satire of certain specific aspects of Tetris DS, but over the course of
one thread, it grew into one of the most configurable Tetris clones around as people continued to ask for an option for this and an option for that. Eventually, I got bug reports that some of the options conflicted with other options: while option A was turned on, B did nothing and C made the game completely unplayable. That was the last straw, and for a while, it turned me off to development. (Open
this article and scroll down to "The Question of Preferences".) I still get occasional requests through e-mail to update the game, even though I have no time for Tetris clones anymore.
I once pm'd you about this and did not receive a response , but LJ65 is awesome. An old buddy of mine is a long time tetris nemesis, and for some reason he can clean my clock in LJ65, but I can beat him at the old tengen tetris. Weird huh?
[It looks like someone wants to split this to the LJ65 topic. --MOD]
Gradualore wrote:
I keep a "dev log" text file. Every time I sit down I write in this and say what I'd like to accomplish for that session.
Same here. Sometimes I'll make a general note, then realize it can be split into multiple steps. Like the item "Wall jumping!" below, I know that will be split into many steps, but I put it there for now just to remember I want to do it soon.
The cool thing about this is you can look back at your progress and really feel like you are going somewhere. I think that blindly developing can lead to feeling lost, directionless, and defeated.
Are you planning on creating your own music editor? I had considered this, but there are several mature and useful music tools out there like Famitracker. Famitracker even comes with a driver you can just stick in your game. I used this driver for a while but eventually found it a bit heavy weight for what I needed, plus I had a hack in place to play hand-written sound effects that was kind of clumsy. So, I eventually wrote a sound driver based on the Nerdy Nights sound tutorials (inspired by it, really), and made an addition to Famitracker that allows the addition of plugins that can export for different sound drivers. I've included an example exporter and driver (the one I'm using in my game) for others to play with. See
this thread. It is in more or less alpha stage right now, but I know at least one person has been able to use it successfully for their project and another person who I think is heading towards using it
. Oh crap, I just realized you're using linux! Hopefully famitracker works in wine...haha =D
Gradualore wrote:
Are you planning on creating your own music... ... Hopefully famitracker works in wine...haha =D
Yes, I was thinking about it. Hand writing it doesn't seem like much fun. And I agree the Famitracker engine is way too bloated for what I'm doing (and no sound effects from what I understand). But perhaps I could utilize the exporter you are talking about. Also, I have tried Famitracker, it seems pretty cool. I have a windows box as well that I switch to when I need windows specific stuff.
I forgot to mention, in working with a few guys who expressed interest in the exporter, I ported my sound driver from CA65 to ASM6 (which I am aware you are using). This is only available in the development version, until jsr releases the next version. I can send a local snapshot to anyone interested.
cartlemmy wrote:
Managing one's time really is an important topic. I have maybe 4 to 8 hours a week to work on my homebrew. And the one thing that keeps me moving forward is a rather granular TODO list. I plan out all the next things to do, as well as the bugs I need to squash. Also internal versioning helps as well.
Does anyone do anything similar?
I'm happy this topic has come up because I've been doing this in an extremely limited situation and have never really realized how useful it would be to do it all the time.
In the past, the times that I've used TODO lists and broken the TODO items into individual tasks is when I have been away from the computer. I have a little notebook that I use to jot down ideas for my game. Occasionally I find myself stuck somewhere with a lot of time and nothing to do and I'll pull it out and write 6502 code on paper. Somehow this situation brings out the best of me. Because I don't have the luxury of testing code real-time, I have to be meticulous in my planning. I break everything I'm trying to do into small steps and I attack them one by one. It's very systematic. And efficient.
On the computer my approach has usually been to dive right in. I have a vague idea of what I want done ("make a status bar", "end the game when the timer runs out") and I jump in haphazardly without a real plan. I can get things done this way, through trial and error, but the code isn't as good. When I come across a bug my habit is to just try random "reasonable" changes until one of them works rather than thinking the problem through. I think this approach leads to a lot of "rewrites" and "reorganization" of code I find myself doing every few months or so. Vague goals lead to sloppy code, and they're procrastination's best friends too.
Seeing you and Gradualore share your ideas about this has helped me realize what I've been (not) doing. Today I spent 15 minutes and made a small task-based TODO list and it made a huge difference when I started coding (at the computer!). Thanks!
Something like this before you start coding.
http://dl.dropbox.com/u/2590713/SMB1.jpg
I'm not sure how much planning is the healthy amount to make before coding. When I was younger, I wanted to see results fast, so I'd draw a shitload of sprites first and then make sure they were displayed on the screen as soon as possible. Note that I'm not even talking about the NES here, this was when I made games in QBasic. That approach did show results quickly, but eventually I couldn't get the program to evolve because of poor planning of the underlying architecture, so I would eventually give up on these projects.
Nowadays, I plan a lot before anything else, and I don't start coding until I have at least 60% of the game aspects figured out (which means a lot of schematics, pseudo-code, and things like that). However, because of all the time I spend planning and implementing this basic architecture, it takes me a long time to see something actually move on the screen, so there isn't much motivation to go forward.
If I ever find what the perfect balance is, I'll be sure to tell you guys! =)
MetalSlime wrote:
...I think this approach leads to a lot of "rewrites" and "reorganization" of code I find myself doing every few months or so.
Ack, same here!
I do like quick results, though. It keeps me motivated over a long period of time. Like, I'd be on a coding spree, spending all of my free time on the project for a month and get a lot done, then progress stalls for two months because the next hurdle is too big or I'm just burned out. Todo lists work fine for a while to get back into the action, but after a week or two, when I'm in the middle of my "coding mania" any attempts to update them slow down the pace of work so much.
I keep getting back to it, though, so that's definitely a step up from all insta-failed projects before it.
marvelus10 wrote:
Something like this before you start coding.
http://dl.dropbox.com/u/2590713/SMB1.jpg
Yeah, if you're in a team it's obviously a good idea to have elaborate design documents.
If you're working alone, at least outline the general idea of your game, even for small projects. That way you will never lose the big picture when your mind needs to focus on the details of the actual implementation.
I'm a huge sucker for that kind of footage by the way, where is that picture from? Did I miss another Iwata Asks interview?
EDIT: Oops, just saw the new topic in General Stuff.
I have an interesting thought to add that I've found helpful for maintaining momentum over time: Always do slightly less than you *want* to do. It's like you have an energy bar that is constantly refilling on its own very slowly... (I can think of a few games with something like that...). Don't use it up too fast!
Gradualore wrote:
I have an interesting thought to add that I've found helpful for maintaining momentum over time: Always do slightly less than you *want* to do. It's like you have an energy bar that is constantly refilling on its own very slowly... (I can think of a few games with something like that...). Don't use it up too fast!
I like this. I think I actually subconsciously do this.
I am in the middle of entering all of my bugs and feature ideas into a web-based bug tracking system (trac) that integrates with my revision control system (subversion). I should have done this sooner.
I find that having a granular todo list helps keep the momentum going. I've got a private beta-tester who has given me some excellent feedback.
I find that my development effort breaks down into four phases:
1) Initial design and prototyping. Lots of fun. Can't stop coding. I can't sleep at night because my mind is racing with what I want to code but haven't gotten to yet.
2) Slow slog to getting a usable prototype that implements enough of the game that its worth playing. This is where I tend to lose the most stream, as this phase is mostly grunt work.
3) Beta-testing. I now have a playable product, but it needs lots of bug fixes, tweaks and other enhancements. This phase is both mundane and a bit exciting. I can see the end, I have a playable product. Momentum picks back up. I just entered this phase with my NROM game-compo entry.
4) "long tail". You know the saying, "The last 10% takes 90% of the time". Lots of grunt work, some boring. It is easy to get burnt here and "take a break", but lose interest while away. I have a great feeling that this won't happen this time around, as the compo is coming up (ob-bitch: Is it?)
Unless someone else decides to host this compo, I don't see it happening. Jeroen doesn't appear to be into it at all.
Is Jeroen (nesdev bbs) the same as "Jero32" on nesdev irc?
I asked b/c Jero32 is on IRC often, so we could go ask him there...
As far as I can tell, one and the same.