Bay 12 Games Forum

Please login or register.

Login with username, password and session length
Advanced search  
Pages: 1 ... 5 6 [7] 8 9 10

Author Topic: Aqizzar makes a game  (Read 15465 times)

dennislp3

  • Bay Watcher
    • View Profile
Re: Lunkheads Zero - Work In Progress
« Reply #90 on: January 08, 2014, 08:27:34 pm »

ptw
Logged

Aqizzar

  • Bay Watcher
  • There is no 'U'.
    • View Profile
Re: Lunkheads Zero - Work In Progress
« Reply #91 on: January 10, 2014, 10:48:53 am »

When I said "tomorrow", I forgot that I'm lazy and have real job work to do.  I'm actually posting from my job right now.  Aq "Day Late and a Dollar Short" Izzar, stickin' it to the man!


Very intelligent code stuff - snipped!

I was going to ramble about all the inner mechanics of this system, but it speaks for itself.  I feel like being enigmatic.  Not fully operational yet, but should tomorrow or so, depending on how much I need to fake working at my real job.

So, does the legibility of that code mean we will be able to simply add tiletypes ourselves? Or design "vaults" like in some Angbands?

Essentially yes.  I needed a map design system that accommodates both random and static generation.  That example doesn't really demonstrate weighting or variance, but the idea is that just by defining more or fewer sets, you can have maps that are completely designed, designed on a pattern but choose pieces from specific sets, have static pieces and randomize everything else, or completely random and everything else you can think of.

It does have one major drawback so far: because you have to design all the tiles by hand, maps will look like they're made of hand drawn tiles.  I have ideas for how to get around this, by defining tiles as "randomize this area" so you can still have say a 'hill' block but the actual makeup of that hill will be fuzzy, which will be especially important for resource veins.  But ultimately I'm afraid my map system (being made of 11x11 blocks) might not be able to handle, for instance, applying a Perlin noise function over a large area.

There's also the problem that I'll have to draw an assload of maps.  I plan to write a separate program to basically spit out map definitions with parameters.  I hear you asking, "But Aq, if you're going to automatically generate the maps anyway, why can't that be part of the game itself?"  To which I answer, yeah that's a good point, I should probably do something with that.
Logged
And here is where my beef pops up like a looming awkward boner.
Please amplify your relaxed states.
Quote from: PTTG??
The ancients built these quote pyramids to forever store vast quantities of rage.

Aqizzar

  • Bay Watcher
  • There is no 'U'.
    • View Profile
Re: Lunkheads Zero - Work In Progress - Suggestions Wanted
« Reply #92 on: January 14, 2014, 12:00:25 am »

Code: ("Evolved Code") [Select]
#MAP_SPACE
HANDLE:debug_random_map
DEFAULT_MATERIAL:default_air
GRAVITY:9.8

AREA_DEF:.:HANDLE:empty/1
AREA_DEF:F:HANDLE:filled/1
AREA_DEF:P:HANDLE:platforms/1
AREA_DEF:A:HANDLE:filled/1,platforms/2
AREA_DEF:B:HANDLE:filled/2,crevase/1
AREA_DEF:l:HANDLE:stair_left/2,pyramid/1
AREA_DEF:L:HANDLE:stair_left/1
AREA_DEF:r:HANDLE:stair_right/2,pyramid/1
AREA_DEF:R:HANDLE:stair_right/1

SET_DEF:1/1
SET:1:MAP:9,9
FFFFFFFFF
FP......F
F..A.BP.F
F.lPA.r.F
F..L.r..F
FB.AAAL.F
FAr.PA.RF
FFFBLrRFF
FFFFFFFFF

#MAP_TILE
TILE_CHAR:F
SET_DEF:1/1
SET:1:MATERIALS:default_stone/5
#END_MAP_TILE

#MAP_AREA
HANDLE:stair_left
SET_DEF:1/1,2/1
SET:1:FOREGROUND
F``````````
FF`````````
FFF````````
FFFF```````
FFFFF``````
FFFFFF`````
FFFFFFF````
FFFFFFFF```
FFFFFFFFF``
FFFFFFFFFF`
FFFFFFFFFFF
SET:1:BACKGROUND
F``````````
FF`````````
FFF````````
FFFF```````
FFFFF``````
FFFFFF`````
FFFFFFF````
FFFFFFFF```
FFFFFFFFF``
FFFFFFFFFF`
FFFFFFFFFFF
SET:2:FOREGROUND
F``````````
FF`````````
FFF````````
FFFF```````
FFFFF``````
FFFFFF`````
FFFFFFF````
FFFFFFFF```
FFFFFFFFF``
FFFFFFFFFF`
FFFFFFFFFFF
SET:2:BACKGROUND
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
#END_MAP_AREA

#MAP_AREA
HANDLE:stair_right
SET_DEF:1/1,2/1
SET:1:FOREGROUND
``````````F
`````````FF
````````FFF
```````FFFF
``````FFFFF
`````FFFFFF
````FFFFFFF
```FFFFFFFF
``FFFFFFFFF
`FFFFFFFFFF
FFFFFFFFFFF
SET:1:BACKGROUND
``````````F
`````````FF
````````FFF
```````FFFF
``````FFFFF
`````FFFFFF
````FFFFFFF
```FFFFFFFF
``FFFFFFFFF
`FFFFFFFFFF
FFFFFFFFFFF
SET:2:FOREGROUND
``````````F
`````````FF
````````FFF
```````FFFF
``````FFFFF
`````FFFFFF
````FFFFFFF
```FFFFFFFF
``FFFFFFFFF
`FFFFFFFFFF
FFFFFFFFFFF
SET:2:BACKGROUND
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
#END_MAP_AREA

#MAP_AREA
HANDLE:platforms
SET_DEF:1/1,2/1
SET:1:FOREGROUND
`FFFFFFFFF`
```````````
```````````
`FFFFFFFFF`
```````````
```````````
`FFFFFFFFF`
```````````
```````````
`FFFFFFFFF`
```````````
SET:1:BACKGROUND
`FFFFFFFFF`
```````````
```````````
`FFFFFFFFF`
```````````
```````````
`FFFFFFFFF`
```````````
```````````
`FFFFFFFFF`
```````````
SET:2:FOREGROUND
`FFFFFFFFF`
```````````
```````````
`FFFFFFFFF`
```````````
```````````
`FFFFFFFFF`
```````````
```````````
`FFFFFFFFF`
```````````
SET:2:BACKGROUND
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
#END_MAP_AREA

#MAP_AREA
HANDLE:pyramid
SET_DEF:1/1
SET:1:FOREGROUND
```````````
```````````
```````````
```````````
```````````
`````F`````
````FFF````
```FFFFF```
``FFFFFFF``
`FFFFFFFFF`
FFFFFFFFFFF
SET:1:BACKGROUND
```````````
```````````
```````````
```````````
```````````
`````F`````
````FFF````
```FFFFF```
``FFFFFFF``
`FFFFFFFFF`
FFFFFFFFFFF
#END_MAP_AREA

#MAP_AREA
HANDLE:crevase
SET_DEF:1/1
SET:1:FOREGROUND
F`````````F
FF```````FF
FFF`````FFF
FFFF```FFFF
FFFFF`FFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
SET:1:BACKGROUND
F`````````F
FF```````FF
FFF`````FFF
FFFF```FFFF
FFFFF`FFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
#END_MAP_AREA

#MAP_AREA
HANDLE:empty
SET_DEF:1/1,2/1
SET:1:FOREGROUND
```````````
```````````
```````````
```````````
```````````
```````````
```````````
```````````
```````````
```````````
```````````
SET:1:BACKGROUND
```````````
```````````
```````````
```````````
```````````
```````````
```````````
```````````
```````````
```````````
```````````
SET:2:FOREGROUND
```````````
```````````
```````````
```````````
```````````
```````````
```````````
```````````
```````````
```````````
```````````
SET:2:BACKGROUND
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
#END_MAP_AREA

#MAP_AREA
HANDLE:filled
SET_DEF:1/1
SET:1:FOREGROUND
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
SET:1:BACKGROUND
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
FFFFFFFFFFF
#END_MAP_AREA

#END_MAP_SPACE
Spoiler: Results (click to show/hide)

Okay, so maybe it's not as impressive as it looks, but this is the kind of feature that takes a prototype from "proof of concept" to "alpha".  No longer is my map generation bound by one-off implementation, now it's just a question of the elbow grease known as content development.

It also makes use of an Dictionary<Tuple<char, string>, Dictionary<string, int>> object.  When you're casually throwing around Dictionary<Tuple<char, string>, Dictionary<string, int>> that's when you feel like a boss.

Next step down the line will be mining and filling in tiles.  After that is kinda fuzzy.  That's why I'm asking for suggestions from the three or four of you still checking this thread.  Actually, I'm planning on doing something like "Constructions" after mining, because I feel like it'll be a good stepping stone to the major work of getting back to what I made this thread for a year ago, Non-Player-Character Management.  I seem to remember that being the whole point of this exercise.  And I want a slightly more developed gameworld for them to run around in.

More important, I want suggestions for content.  Items, features, things to see, so on and so forth.  It'll give me something to dive and out of without letting my own worldbuilding go out of control.  I'd ask for suggestions on materials, since I need those now as targets for terrain interaction and NPC mining, but thanks to years of Dwarf Fortress I know more about geology than I ever would have expected.
Logged
And here is where my beef pops up like a looming awkward boner.
Please amplify your relaxed states.
Quote from: PTTG??
The ancients built these quote pyramids to forever store vast quantities of rage.

MaximumZero

  • Bay Watcher
  • Stare into the abyss.
    • View Profile
Re: Lunkheads Zero - Work In Progress
« Reply #93 on: January 14, 2014, 12:03:57 am »

Okay, so maybe it's not as impressive as it looks...
That's a whole hell of a lot farther than I ever got coding. I, for one, am thoroughly impressed, not that that should mean much.

More important, I want suggestions for content.  Items, features, things to see, so on and so forth.  It'll give me something to dive and out of without letting my own worldbuilding go out of control.  I'd ask for suggestions on materials, since I need those now as targets for terrain interaction and NPC mining, but thanks to years of Dwarf Fortress I know more about geology than I ever would have expected.
What kind of setting are you planning on having? That'll determine what kind of stuff you need in your world.
Logged
  
Holy crap, why did I not start watching One Punch Man earlier? This is the best thing.
probably figured an autobiography wouldn't be interesting

Minstrel

  • Bay Watcher
    • View Profile
Re: Lunkheads Zero - Work In Progress - Suggestions Wanted
« Reply #94 on: January 14, 2014, 06:26:14 am »

Next step down the line will be mining and filling in tiles.  After that is kinda fuzzy.  That's why I'm asking for suggestions from the three or four of you still checking this thread.

Do you mean suggestions as to how to program it? Because I can't help you there: I'm just starting to learn Python.

If you want tips on how to set it up in game mechanics: make sure that digging a tunnel which you can enter is the simplest action possible. I have spent way too much time in Terraria and Starbound doing the dig-move-dig tango.

Aqizzar

  • Bay Watcher
  • There is no 'U'.
    • View Profile
Re: Lunkheads Zero - Work In Progress - Suggestions Wanted
« Reply #95 on: January 14, 2014, 09:09:14 am »

Do you mean suggestions as to how to program it? Because I can't help you there: I'm just starting to learn Python.

If you want tips on how to set it up in game mechanics: make sure that digging a tunnel which you can enter is the simplest action possible. I have spent way too much time in Terraria and Starbound doing the dig-move-dig tango.

I was actually asking for suggestions on development priorities, but that's a good thing to keep in mind.  The "LMB Shuffle" you have to do to mine anywhere in those games is exactly what I want to avoid, but aside from not having a good alternative in mind, this specific game being a roguelike means the control scheme is radically different from what it would be in a more advanced game.

I suppose one option in games like that would be a "swing pick" command that just equally tries to mine out everything in front of you without having to aim, so you could just walk+swing to dig tunnels.  Or even just a "dig until interrupted command" which would do the same job until there's nowhere to walk to, so you'd still have to watch what you're doing but wouldn't have to hold down a couple buttons the whole time.  I could even do something like that in this game, so... yeah, I'll remember that.

What kind of setting are you planning on having? That'll determine what kind of stuff you need in your world.

There's really two settings, the Lunkheads themselves and then everything else in the world.  Certainly I'd throw in every kind of forgotten civilization, buried aliens, Land of the Lost type underground cliches you'd expect.  The Lunkhead stuff I guess I'd describe as 'near future technology with late-Soviet style'.  Maybe like Stalker but only as serious as Worms.  So your top-tier native equipment might be lasers and robot-suits but it'd still look machine-stamped and thirty years old.  You can't really convey that in a console game, but that's the idea I'm going for, and it carries through to descriptions on food and clothes and whatnot.
Logged
And here is where my beef pops up like a looming awkward boner.
Please amplify your relaxed states.
Quote from: PTTG??
The ancients built these quote pyramids to forever store vast quantities of rage.

Minstrel

  • Bay Watcher
    • View Profile
Re: Lunkheads Zero - Work In Progress - Suggestions Wanted
« Reply #96 on: January 17, 2014, 05:35:24 pm »

I was actually asking for suggestions on development priorities...

Hmm, I would say get the digging or exploration parts workable and then have people from the forum just core out the planet - by the time they get to the nougat magma centre, they will have a laundry list worth of suggestions. :D

MaximumZero

  • Bay Watcher
  • Stare into the abyss.
    • View Profile
Re: Lunkheads Zero - Work In Progress - Suggestions Wanted
« Reply #97 on: January 17, 2014, 09:22:29 pm »

Priority one: Digging and other large engine pieces. All the fluff and items and whatnot can always be added later.
Logged
  
Holy crap, why did I not start watching One Punch Man earlier? This is the best thing.
probably figured an autobiography wouldn't be interesting

Aqizzar

  • Bay Watcher
  • There is no 'U'.
    • View Profile
Re: Lunkheads Zero - Work In Progress - Suggestions Wanted
« Reply #98 on: January 19, 2014, 03:21:01 pm »

Priority one: Digging and other large engine pieces. All the fluff and items and whatnot can always be added later.

The fluff is what I'm asking for suggestions on, so I don't waste time thinking about it at this stage.  In addition to the priorities that is.

Spoiler: Speaking of which... (click to show/hide)

So that's digging out tiles.  Filling tiles in is a completely different issue, I've put some thought into how I'd want it done, which of course is hampered by being a roguelike.  But I'm not sure I should bother with it just yet, and instead go straight into Constructions.  Especially with the restrictions on movement controls that comes with being a console game, I realized as I was jumping around that instead of giving the player a lot of fiddly movement options it would make more sense to just build ladders and platforms and stuff everywhere you need to go.

Constructions are different from just filling it tiles, you see, which makes this concept slightly different from your typical voxel-builder.  How different I'm not quite sure of yet, but multi-tile structures will need to be more intelligent than just placing a bunch of individual blocks next to each other will easily allow.  I foresee a lot of overcomplication in my future.
Logged
And here is where my beef pops up like a looming awkward boner.
Please amplify your relaxed states.
Quote from: PTTG??
The ancients built these quote pyramids to forever store vast quantities of rage.

Aqizzar

  • Bay Watcher
  • There is no 'U'.
    • View Profile
Re: Lunkheads Zero - Work In Progress - Suggestions Wanted
« Reply #99 on: January 28, 2014, 11:25:07 pm »

Constructions!



A year and a day after I started this thread, and about six months after I got serious about it, almost every core component of this game is blocked into place, except the six hundred gorilla-component that I started it for.

Of course, everything's still pretty slapdash.  Constructions can't be removed, the interface is nonexistent, the collision detection is held together with paper clips, rubble is still called "default_stone:default", and I've put almost zero thought into how Constructions can be built off of each other.  I'll be cleaning up a lot of those, and maybe revisit the item-pickup issues I've been frowning at since I implemented them, over a couple days.  Hopefully this weekend I'll put out a Feasibility Test Release so the three or four of you still following this thread can tell me whether my interface is a disaster or not.  I probably won't change anything either way so it's kinda pointless, but at least it gives me a benchmark.

I'm not spending more than a week on that stuff though, because it's long past time to kick into gear and tackle what I started this for, Intelligent NPCs And The Management Thereof.  I have absolutely no idea what I'm going to do.
Logged
And here is where my beef pops up like a looming awkward boner.
Please amplify your relaxed states.
Quote from: PTTG??
The ancients built these quote pyramids to forever store vast quantities of rage.

Skyrunner

  • Bay Watcher
  • ?!?!
    • View Profile
    • Portfolio
Re: Lunkheads Zero - Work In Progress - Suggestions Wanted
« Reply #100 on: January 29, 2014, 02:56:21 am »

I forgot which language this is in... I was going to say if it's C++ use pair instead of tuple, but then realized C++ doesn't have a Dictionary class.
Logged

bay12 lower boards IRC:irc.darkmyst.org @ #bay12lb
"Oh, they never lie. They dissemble, evade, prevaricate, confoud, confuse, distract, obscure, subtly misrepresent and willfully misunderstand with what often appears to be a positively gleeful relish ... but they never lie" -- Look To Windward

ToonyMan

  • Bay Watcher
  • Danger Magnet
    • View Profile
Re: Lunkheads Zero - Work In Progress - Suggestions Wanted
« Reply #101 on: January 29, 2014, 03:43:57 pm »

I will command the autonomous empire that rules the earth.

Suggestion:
Giant worms
« Last Edit: January 29, 2014, 03:45:37 pm by ToonyMan »
Logged

Aqizzar

  • Bay Watcher
  • There is no 'U'.
    • View Profile
Re: Lunkheads Zero - Work In Progress - Suggestions Wanted
« Reply #102 on: February 01, 2014, 02:47:59 pm »

I forgot which language this is in... I was going to say if it's C++ use pair instead of tuple, but then realized C++ doesn't have a Dictionary class.

C# actually, which I think is the least popular of all languages to write roguelikes.  The frontend display plugin I use, Libtcod, has so little discussion or documentation on the C# version that this forum is the third or fourth Google result.  There are probably simpler things I could use besides Tuples, but I just found them and thought it'd be cool.



Let's talk about pathfinding.

In a typical, that is top-down, roguelike or almost any planar game where you don't have to worry about things like gravity, pathfinding is pretty simple.  Just do an A* floodfill from Point A to Point B, or any of the performance improved alternatives if you'll accept an uglier path.  This can become a noticeable problem with realtime games but not really anything made in the last 15 years unless you've got a huge number of calculations hitting a very complicated space.

Performance is not my worry, even though I do want to make a real-time game eventually.  My problem is that A* fills are kinda useless for a platforming game, because the rules of movement are all different.  With a top-down map, you only have to consider whether or not you want to walk on a particular coordinate.  For me, consider a map like this:



Nomenclature: The ladder looking things are ladders, the thin platform looking things are platforms you can walk on or choose to drop through.  I know this is complicated side-scroller stuff, try to keep up.

In this scenario, Point A can walk to Point B and vice versa, but getting from A to B is a lot faster if you're allowed to drop off a ledge.  Getting from Point C to D also requires this, and it may or may not be possible for Point D to reach C depending on whether and how far D can jump.  Point E has two major paths to reach Point D, but has to consider how far it wants to fall.  And any part of this map can change due to the voxelized nature of the game.

I don't actually know how games with height mechanics do their pathfinding.  You can look at games like Terraria or Starbound or 3D games like any Bethesda title and easily the confuse an AI trying to reach you.  Stand on an unclimbable object and watch them dance and bounce below your feet.  I suspect that most games take the easy route of just having the AI consider getting closer with the X-axis and leave the Z-axis to semi-random jumping.  I can't recall any platformer-AI that can double-back and path around obstacles.

These are by no means difficult problems.  There's an annual competition to write Java programs that can play Super Mario World in ways a human would never conceive, although teaching an AI to follow pathing goals more complicated than "go right" does raise the bar a bit.  I don't know exactly how these guys do their thing and while I'm curious, I've got something completely different in mind.  And I think it'll prove useful with an engine that has to consider pathing in real-time.  Behold (disco warning):



When the map generates, it group up every coordinate, and compares it to the coordinates around it.  In then makes a list of "blocks" composed of contiguous cells with the same movement type; in this case, tiles you can walk on, tiles you can climb, and tiles you can drop from.  Then it cycles through all the blocks to consider every other block: What blocks does this overlap with?  What blocks can be dropped to?  What blocks can be reached with different lengths of jumping?  All of this information is stored as static Connections.  With this precalculated map, when an actor has to get from Point A to Point B it doesn't have to consider every cell between the two all the time:

I am currently in Block 3, where is my target?
Target is in Block 5, does Block 3 overlap with Block 5?
No, what blocks does Block 3 connect to that can reach Block 5?
Do I have the movement types needed to cross those Connections?
How many cells will each path take me?

And so on.  That way, each AI is only flood-filling a small one-dimension-ish portion of the map at a time.  This also means that whenever a tile in the map changed, only a small portion of the map has to be updated.  The player could certainly spoof this with a bunch of adjacent ladders or weird jumping windows, but it's an idea I'd like to pursue.

So, that's what I'm working on now.  If nobody hears from me in a while, send help, I'll probably be very hungry.
Logged
And here is where my beef pops up like a looming awkward boner.
Please amplify your relaxed states.
Quote from: PTTG??
The ancients built these quote pyramids to forever store vast quantities of rage.

MaximumZero

  • Bay Watcher
  • Stare into the abyss.
    • View Profile
Re: Lunkheads Zero - Work In Progress - Suggestions Wanted
« Reply #103 on: February 01, 2014, 03:01:36 pm »

I...wow. I'm nonplussed. That's fucking amazing.
Logged
  
Holy crap, why did I not start watching One Punch Man earlier? This is the best thing.
probably figured an autobiography wouldn't be interesting

Minstrel

  • Bay Watcher
    • View Profile
Re: Lunkheads Zero - Work In Progress - Suggestions Wanted
« Reply #104 on: February 07, 2014, 03:01:32 pm »

A solution so elegant even I could understand it (after re-reading)!
Pages: 1 ... 5 6 [7] 8 9 10