Bay 12 Games Forum

Please login or register.

Login with username, password and session length
Advanced search  
Pages: [1] 2 3 ... 7

Author Topic: Let's make a roguelike, amateur programming at its... finest?  (Read 21478 times)

Girlinhat

  • Bay Watcher
  • [PREFSTRING:large ears]
    • View Profile
Let's make a roguelike, amateur programming at its... finest?
« on: October 14, 2012, 08:17:22 pm »

So I bashed my head against C++ on and off for a few years.  I struggled mainly to get any libraries to work.  My compiler would always refuse to add them, or would add them for a week and then I'd get distracted and come back (without changing anything) and they'd be broken.  Then a friend of mine was like "Try Python" and I'm like "holy fuck IT CAN BE THIS EASY!"

I've worked most of my way through a tutorial, but I've mostly veered off, because it's beginning to cover things like game mechanics and code logic - I mostly wanted to understand how to write Python and how to use libtcod's functions.  I've gotten a grasp on how to draw a console and how to interpret keystrokes and make the game loop.  The rest, like how to have monsters attack and how to draw a map, is stuff I can do on my own without major effort, and it's stuff that should be unique to a game so it's not a huge deal to skip that bit of the tutorial.

So!  Looking over the Other Games forum a bit, I've noticed a trend.  People want a survival game.  UnReal World, Cataclysm, Wayward, Harvest Moon, maybe a little Animal Crossing, along with multiplayers like Haven and Hearth, Wurm, and Minecraft with Terrafirmacraft...  people like these games of "farming sim gone hardcore."  The only issue is that it never quite fits the bill.  Usually it's too easy - once you set your wheat in the ground then the game's over.  You've got infinite free food and bears are the most dangerous thing that doesn't hunt you so you can just not go into caves and do perfectly fine.

I figure, hey, why not demoralize myself by making my first real project be a failure of a genre that's mostly explored but rarely perfected?  I want to make something that the Bay12 community would approve of, and that terrifies me because I'm not sure I can produce something that tortures the player so expertly.  After all, if you're alive then it must be too easy!  A delicate balance of undeath is required - if the player is perpetually half-starved then it can be considered a success.  The question then is... what would the community like?

My current ideas:
1: The player may do anything the player should do - UnReal World has many items only available from merchants, fairly common items too, like boats and fishing nets.  That seems lame.  Why can't the player weave a net?  UnReal World also has a few exotic items that only traveling merchants will sell, things that cannot be obtained in the local terrain.  Allowing the player to do anything the player should be able to do is important, so most all items crafted and most all terrain manipulated.

2: Allow for control over terrain - Build walls, destroy walls, pile dirt, fell trees, dig pits, bucket enough water to make an artificial pond.  No arbitrary restrictions on terrain, let anyone with enough shovels level a mountain.

3: Gain employees - Many farming sims fail here, you can only maintain so many tiles of crop before you run out of time in the day to tend them all.  Delegating jobs to employees will be essential.  You can set up a shack by the river and fish your life, sure, but you can also run a farm of a dozen employees, tending the fields, husbanding the animals (giggity), cooking food, and all the menial chores that one person just can't do alone.

4: Make it deep - Employees get paid to tend the fields.  Alright.  But why shouldn't they be dishonest sometimes?  Why shouldn't you be able to dock their pay if they pull in a poor harvest?  Why shouldn't a spurned employee be upset?  Why shouldn't an upset farmer set fire to the barn?  Why shouldn't you mount your steed and tell him that he has a head start to run as far as he can before you finish loading your rifle?  If things are complicated and encourage the player to remain in a small area and deal with several complex factors, then you could have the biggest map in the world and the player would still enjoy their 50 acres perfectly fine.

5: Zombies - Zombies.

These are the basic ideas I've got so far.  They all extend in various ways, of course, but it should hopefully be easy to see the direction of gameplay from these ideas.  I will now be accepting ideas to make More Epic (tm) and do my best to make awesome things happen as far as I'm able.

Discuss.
« Last Edit: October 15, 2012, 03:02:10 pm by Girlinhat »
Logged

Girlinhat

  • Bay Watcher
  • [PREFSTRING:large ears]
    • View Profile
Re: Let's make a roguelike, amateur programming at its... finest?
« Reply #1 on: October 14, 2012, 08:18:17 pm »

lol reserved

Sirus

  • Bay Watcher
  • Resident trucker/goddess/ex-president.
    • View Profile
Re: Let's make a roguelike, amateur programming at its... finest?
« Reply #2 on: October 14, 2012, 08:21:06 pm »

Zombies are kinda overdone, so I'd say drop them. Everything else sounds pretty good though. I especially like the idea of modifying terrain, it seems like not a lot of roguelikes do that sort of thing.
Logged
Quote from: Max White
And lo! Sirus did drive his mighty party truck unto Vegas, and it was good.

Star Wars: Age of Rebellion OOC Thread

Shadow of the Demon Lord - OOC Thread - IC Thread

Telgin

  • Bay Watcher
  • Professional Programmer
    • View Profile
Re: Let's make a roguelike, amateur programming at its... finest?
« Reply #3 on: October 14, 2012, 08:25:49 pm »

Mostly because it gets complicated in a hurry I imagine.  Of course, that's going to be a problem with most of the ideas suggested already.  Deep crafting systems have similar issues.

Of course, I believe that depth is going to be the important thing here that sets one game apart from another.  The last thing you want to do is spend a few months churning away at Python only to produce something that's a fairly shallow copy of every other game in the genre.

I wish I had better suggestions, but if I did, I'd probably be trying to put them to game form myself.  :)
Logged
Through pain, I find wisdom.

Lectorog

  • Bay Watcher
    • View Profile
Re: Let's make a roguelike, amateur programming at its... finest?
« Reply #4 on: October 14, 2012, 08:32:29 pm »

Quote
I figure, hey, why not demoralize myself by making my first real project be a failure of a genre that's mostly explored but rarely perfected?
I am following this project.

Zombies... perhaps. Either you're making a zombie game or you're not. I don't know of any games with zombies where the focus is not zombies because of the nature of zombies.
An alternative could be aggressive wildlife and NPCs, kind of like you presented in item 4.
If you really think you can make a "farming and zombies" game, then go for it. I think it's more likely to be a better game without zombies, though.

Point #4 is an interesting one. I think you should add it in once everything else is finished. It's a big goal, especially for a novice programmer, to pull off correctly. And a game could be quite great without it.

These are just suggestions, of course. I'll be interested in this regardless of the specific implementations.

General encouragement!

The last thing you want to do is spend a few months churning away at Python only to produce something that's a fairly shallow copy of every other game in the genre.
I think that's a perfectly good product. It provides a lot of learning and a good base off which to make a better, more unique game.
Logged

Girlinhat

  • Bay Watcher
  • [PREFSTRING:large ears]
    • View Profile
Re: Let's make a roguelike, amateur programming at its... finest?
« Reply #5 on: October 14, 2012, 08:37:44 pm »

Well, part of what I wanted to hit, and didn't really explain, is a bit of cold northern terrain.  People familiar with URW will know what I mean.  Even summer suggests a jacket, and winter suggests death.  The zombies I would use would be one of two ways, either the ancient Scandinavian Draugr, or some type of ancient zombie/vampire, because old legends are a bit similar.  While Skyrim has popularized the Draugr, the old legends are of a warrior possessed back to life by whatever means, become immortal and consumed with bloodlust, unstoppable in its rampage until somehow lured back to set foot in his grave, which would tie him back to the earth.  The other option would be a sort of "live zombie" idea.  Not a shambler, but an active human being with all the speed and coordination as the player, and perhaps just slightly less thought than the average NPC.  They would be quick and dangerous, hard to deal with and liable to sneak into the farm at night and feast on fresh cow corpses.

I was also debating imps, goblins, demigods, and other mystical beings, which would all play a more economic role, like bribing the spirit of the rain to improve your crops, but would play a fairly backseat deal, while the main goal was to deal with your dirt and your rocks.  If zombies were put in, then they would be an uncommon enemy, frequent enough to make you worry but uncommon enough that a new player could be caught unawares, and an experienced player might assume their map to be clean.  The idea, either way, is to return them to the true night terror they were meant to be.

NINJA @Telgin - terrain manipulation is actually quite easy, I don't know why others don't do it.  Look at DF, you can build, shuffle deconstruct, and tons of stuff at will.  It's fairly simple code, you just change a flag or two, or more ideally, you have your tile types already defined and you just tell it "this is now X type of tile" and then it is.

Crafting promises to be a bigger issue, because there's no real way to make it completely modular and on-the-fly.  You really have to have a giant list of items and ingredients, which is relatively easy but drudgery.

DOUBLE NINJA! @Lectorog - I already mentioned my idea for zombies, so yeah.  It won't be the main focus, but it'll hopefully get the hairs on the back of your neck when you wake up and find a goat head slammed against the barn wall and a trail of blood leading into the thick woods.

Getting complicated is, to me, relatively easy though.  It's less data management, and more about AI.  I always hit issues with how to handle data and save tile info and whatnot, but Python's cool like that.  AI is relatively easy, it's just a long string of if and else and some personality parameters with RNG.  That's something I feel a lot more confident doing than a map, honestly.

Telgin

  • Bay Watcher
  • Professional Programmer
    • View Profile
Re: Let's make a roguelike, amateur programming at its... finest?
« Reply #6 on: October 14, 2012, 08:56:10 pm »

NINJA @Telgin - terrain manipulation is actually quite easy, I don't know why others don't do it.  Look at DF, you can build, shuffle deconstruct, and tons of stuff at will.  It's fairly simple code, you just change a flag or two, or more ideally, you have your tile types already defined and you just tell it "this is now X type of tile" and then it is.

The principles are simple, but depending on just what you want to allow, you quickly run into complications just like DF has.  :)  If you have multiple z-levels for example, you'll need to account for the possibility of undermining structures if digging is allowed.  And it becomes possible to trap diggers in alcoves, or to build impenetrable walls and ditches that you'll have to provide ways around (or live with the exploits).

So while the principles are simple, prepare to spend some time figuring out the details.
Logged
Through pain, I find wisdom.

Girlinhat

  • Bay Watcher
  • [PREFSTRING:large ears]
    • View Profile
Re: Let's make a roguelike, amateur programming at its... finest?
« Reply #7 on: October 14, 2012, 09:01:57 pm »

Single-level, I don't see much spelunking here.  I may steal Ultima Ratio Regime's idea of "each tile has a height" instead of doing blocky maps.  More than likely I'll go UnReal World's style though (And Cataclysm), letting you build a floor+ceiling tile that prevents weather and does some fun things with how heat and light works.  I also don't see much issue with solid walls - people tend to starve without underground shroom crops, and I'll probably make people become restless/stir-crazy/cabin-fever to encourage more game dynamics.

Urist McScoopbeard

  • Bay Watcher
  • Damnit Scoopz!
    • View Profile
Re: Let's make a roguelike, amateur programming at its... finest?
« Reply #8 on: October 14, 2012, 09:21:01 pm »

Damnit. If only this was in java...

Anyways, maybe it could be in the 1700s? I think that'd be an interesting period for survival. (Americas, Siberia, or Scandinavia)
Logged
This conversation is getting disturbing fast, disturbingly erotic.

Swiftling

  • Bay Watcher
    • View Profile
Re: Let's make a roguelike, amateur programming at its... finest?
« Reply #9 on: October 15, 2012, 12:11:38 am »

I'm also -attempting- to make a roguelike with python and libtcod, although I really have no idea what I am doing.

Anyway, you've got some good ideas. I especially like having employees and them possibly being dishonest/rebelling. That seems to be where a lot of simulation games fail, you get to the point where there is so much stuff to do and manage, you can't cope on your own.
Logged

Neonivek

  • Bay Watcher
    • View Profile
Re: Let's make a roguelike, amateur programming at its... finest?
« Reply #10 on: October 15, 2012, 12:40:03 am »

Spoiler (click to show/hide)

Put in spoiler instead of deleting... but ultimately I misread... I seem to be doing that a lot really late at night.
« Last Edit: October 15, 2012, 03:01:23 am by Neonivek »
Logged

mendonca

  • Bay Watcher
  • [CLIVE]
    • View Profile
Re: Let's make a roguelike, amateur programming at its... finest?
« Reply #11 on: October 15, 2012, 02:53:52 am »

Good luck, following this to see how things progress and also to see how you tackle the implementation of your ideas.

Will you be posting your code up here (in the fullness of time, of course) or just giving us an .exe to play with? I'd be interested in seeing the code, but of course if you don't intend to make it public, then that's not gonna happen and I'll still watch with much interest ...
Logged

Mephisto

  • Bay Watcher
    • View Profile
Re: Let's make a roguelike, amateur programming at its... finest?
« Reply #12 on: October 15, 2012, 09:36:22 am »

UnReal World, Cataclysm, Wayward, Harvest Moon, maybe a little Animal Crossing, along with multiplayers like Haven and Hearth, Wurm, and Minecraft with Terrafirmacraft...  people like these games of "farming sim gone hardcore."

This premise is surprisingly similar (identical, even) to the roguelike that I'm planning. If the languages weren't so different, I would suggest a big collabo.
« Last Edit: October 15, 2012, 09:39:39 am by Mephisto »
Logged

Girlinhat

  • Bay Watcher
  • [PREFSTRING:large ears]
    • View Profile
Re: Let's make a roguelike, amateur programming at its... finest?
« Reply #13 on: October 15, 2012, 11:08:19 am »

Good luck, following this to see how things progress and also to see how you tackle the implementation of your ideas.

Will you be posting your code up here (in the fullness of time, of course) or just giving us an .exe to play with? I'd be interested in seeing the code, but of course if you don't intend to make it public, then that's not gonna happen and I'll still watch with much interest ...
Right now I'll just be throwing out a .exe because what I have now is basically 90% copied from tutorial and 10% personal flair.  It's so barebones that if anyone felt inclined to mod it, it could become radically different from what I do and cause weirdness when I try to do things, if that makes any sense.  It probably won't take long for me to make it open source though.

Also, @Neonivek - Livestock will be included, but nothing so arbitrary.  Under those rules any animal would hit rating 100 given a few feedings.  More than likely I'll be using something similar to Haven and Hearth's livestock - newly captured livestock have stats of 10.  When bred, the child has a stat of [(father+mother)/2 + rand(-10,+25)] which is to say, the average of the father and mother, and then that pulled randomly -10 or +25.  This gives a fairly straightforward way to improve your animals.  If you want more meat, breed two cows that have high stats in "meat quantity" and hope the dice are polite.  It gets trickier when you want to do multiple stats though, like meat quantity AND meat quality, you have to get lucky twice.  Many players would have two bulls, one for meat and one for milk, and a lot of heifers that they would pick the best meat-giver and the best milk-giver and have two strains of cattle.  Once both strains reached a high level, it would be easy to breed them together to create a third omni-strain.  If I'm going to do that, then I'll probably allow feed to influence stats as well, to a point.  Newborn calves raised on dirt and straw might end up with -10,+10 dice roll, but raised in a cozy barn and fed apples, maybe more like -5,+30 rolls.  When they mature then their stats are set, and they can drop due to poor nutrition but when they're well taken care of they get back to normal, so you don't want to butcher a cow when it's sick and underweight.

I also like Minecraft's mod of Forestry, which is actually an add-on mod to Buildcraft.  In it you have bees, with several different base species.  Desert bees produce a lot of honey, but only live in hot, dry environments.  Water bees can still produce honey while it's raining, and can live in wet environments just fine.  With enough breeding, you can get a breed of bees that produce a lot of honey and can produce honey during rain.  Of course it goes further too, with "more bees" (which is an addon to an addon to a mod of a game) then you can get, say, bees that produce iron ore, and another that produces gold ore, and another that heals players within range.  With enough breeding, you can get bees that produce iron, gold, heal players, and can produce honey underground during the rain.  The genetics use punit squares, so it all makes sense and follows a slightly random chance, but if you're at it long enough you can produce some amazing bees.  I have no idea how I would do this with cattle.

Also, stats will be visible on animals.  That's vital to gameplay and without it, it'd be very hard to do any sort of breeding.

dennislp3

  • Bay Watcher
    • View Profile
Re: Let's make a roguelike, amateur programming at its... finest?
« Reply #14 on: October 15, 2012, 02:44:09 pm »

Hrm...I need to do the exact same as you...we should be study buddies XD

I am just starting to work on my own roguelike as well and like you I have dipped into C++ multiple times and never followed through with it. Til now of course where I decided that I am just gonna do it already and quit making excuses.
Logged
Pages: [1] 2 3 ... 7