Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length

 
Advanced search

1368138 Posts in 64204 Topics- by 56143 Members - Latest Member: Chi_taah

October 22, 2019, 04:50:17 AM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsMoonQuest (OUT NOW!)
Pages: 1 ... 176 177 [178] 179 180 ... 189
Print
Author Topic: MoonQuest (OUT NOW!)  (Read 1125326 times)
kcbanner
Level 0
***


View Profile
« Reply #3540 on: June 13, 2016, 10:17:05 AM »

Always love these insights into the internals of Moonman. Dear ImGui looks great for building these tools, I've been looking at it recently and I'm glad to see it can be customized to do something like this. For object placement, do you store metadata on all the level tiles that say if they support certain objects?
Logged

eigenbom
Level 10
*****


@eigenbom


View Profile WWW
« Reply #3541 on: June 13, 2016, 04:48:59 PM »

For object placement, do you store metadata on all the level tiles that say if they support certain objects?

Nah the objects can be attached anywhere. E.g., a torch could be stuck onto a window tile.
Logged

eigenbom
Level 10
*****


@eigenbom


View Profile WWW
« Reply #3542 on: June 17, 2016, 05:17:53 PM »

Update: I wonder sometimes why I add the year in the title of these, then I remember that yes, I'll probably still be working on Moonman in 2017, so it's good to yearstamp these. Of course, the game will be out this year, but we'll be continually developing it until final release, and other platforms may appear in 2017. That's still 12 years before the singularity, so it's all good.

This week has been all optimisation and editor. Sam has been tuning the game, and reduced the number of OpenGL calls from 20000 (per-frame!) to 4000. Of course I feel partially responsible for this inefficiency :stuck_out_tongue: but it turns out that SFML trades a lot of speed for API simplicity. Optimising all this stuff will mean the game will run better on older machines and (potentially) mobile platforms, and will give me some headroom for more sophisticated effects for the high-performance version.

I've pretty much finished what I set out to do in the editor: you can now create small structures and export them. We'll be using this to make a lot of the world features I mentioned in a previous devlog. We'll show some of our creations next week.

The basic workflow is that you first build your structure using the tools: place blocks, attach world objects, add fluid, etc. Then you can add annotations to the world: notes, anchors, and object bounds (the rectangle below). Then when you click export the system gets all the things within a bounds and exports it out to a game-compatible template file.



Here's some more complex test shapes.



The format, like most of Moonman's resource files, is a .json file. This is an earlier version but shows some of the interesting components. The block_data field is just a Base64 encoded width*height length array of all the block data. The format also stores a block database, the "fg_db" field, which maps block type to block name. I need this so I can load templates made in an older version of the game, which will happen often during the next few months. Also it means that I don't have to re-export all the templates just because I modify the block list. (I mentioned a similar database feature last week in relation to serialisation.)

Logged

eigenbom
Level 10
*****


@eigenbom


View Profile WWW
« Reply #3543 on: June 24, 2016, 11:05:24 PM »

Update: Finished up the editor this week and Alex has started to create some interesting things with it. We're populating the world with things like shrines, lamp posts, fountains, etc. and it's an interesting challenge to come up with styles for these objects. Here's a few simple shrines I created while testing out the new editor features.



We've got a lot of objects to make, and have started to group them into a few styles. Here are some of them:

Primitive -- Primitive structures could contain strange symbols, traps and spikes, and they could appear scattered mainly around the forest and mountain regions. A primitive outpost could be made out of raw wood, stone blocks, and would be very ramshackle in its design.

Civilian -- A style that appears primarily in the town. Civilian buildings are made from wood and stone and contain tables and chairs, shelves, and interesting architecture. A civilian lamp post would be a nice simple wooden post with an iron lantern or lamp, whereas a primitive lamp post might just be a torch attached to a long branch.

Unnamed Stone Style -- Generally this style involves heavy use of the stone materials in chunky designs with obelisks. You'll find shrines, statues and hidden caches in this style.

Unnamed Aztec Style -- This style is a mix of stone and brass, with motifs of faces and other funny designs reminiscent of some aztec designs. It's a style which'll appear in the later game, but you may find one of these sculptures anyway. Typically this stuff will be trapped.

Other planned styles include Royal, Skeleton, and Techological. We're having a lot of fun design these things and are hoping that wandering around the world and finding them is a fun experience. In other news, Sam continues optimising - he's found significant bottlenecks in the system, and is now working on another core optimisation (converting a bunch of vertex arrays to VBOs). SFML unfortunately has some inefficiencies which we need to work around.

This week I also started to add some of the new world features into the game. Here's a lamp post which had another lamp post generated on top of it. Not sure if it's a bug or a feature.

Logged

Macuyiko
Level 0
*


View Profile
« Reply #3544 on: June 25, 2016, 07:05:17 AM »

Looks super cool. Are you using some sort of procedural generation to come up with interesting shrine/object ideas or are they all constructed by hand?
Logged
eigenbom
Level 10
*****


@eigenbom


View Profile WWW
« Reply #3545 on: June 25, 2016, 08:54:34 PM »

Looks super cool. Are you using some sort of procedural generation to come up with interesting shrine/object ideas or are they all constructed by hand?

Cheers, nah there'll be no procgen on the smaller things like shrines. We're basically just making a whole bunch of variations by hand.
Logged

eigenbom
Level 10
*****


@eigenbom


View Profile WWW
« Reply #3546 on: July 01, 2016, 11:04:53 PM »

Update: Content-spree continues. Added a tonne of new blocks and world objects this week. We've got lots of little bits and pieces which we're using to construct interesting features. Here's a scene Alex put together to show some of the pieces.



Added inheritance to blocks to simplify the specification. So, for example I can now simply say that the bookshelf_big block type inherits from the bookshelf block type, and all the properties are copied over. I can then specify any that are different. (In this case the big bookshelf has a greater health.) Here's a section of the output of a script I wrote to show these relationships.

Code:
bone: dt dig h 6 sbod false
--bone_spine:
bone_wall: h 4 sbod false
bookshelf: dt chp h 4 sbod false
--bookshelf_big: h 6
brass: dt 1 dt sms h 10 sbod false
--brass_2x1:
--brass_2x2:
--brass_disc:
--brass_pylon:
brass_chain: an true dt ore h 16 sbod false
clay: cl 3 dt dig h 10 ml 2 mm 1 st natural sbod false
--clay_slope:
clay_wall: h 4 sbod false
--clay_vine_wall:
----clay_vine_wall_dense:
--clay_wall_patchy:
--clay_wall_really_patchy:
--clay_wall_slope:

Sam continues to optimise the engine and over the next two weeks he'll be adding LOW, MEDIUM, and HIGH quality settings to the game. This'll be available from the launcher, and will hopefully enable more people to play the game at decent frame rates by disabling some of the visual features.

Unfortunately we've encountered an issue with certain OSX integrated-graphics setups. Moonman runs too slow to be playable (~10fps) and it is too big of a job to optimise at the moment. We'll test again when the LOW quality setting is ready, but it's likely that we'll just set the minimum specifications to require a graphics card. Strangely the game runs well enough on my Mac Mini (which I assume is integrated gfx), so this doesn't affect all systems. At some point after launch we'll take another look into optimising the engine to perform better on lower-end systems.

Added crumble aspect for mining. If you have a compatible item/block combo then you can demolish blocks much quicker.

Logged

Bricabrac
Level 2
**


Fail again. Fail better.


View Profile
« Reply #3547 on: July 03, 2016, 12:55:26 PM »

The editor looks super neat! Will it be available for users/modders too? It would be so convenient to build an object and pop it into the world, instead of building it "by hand" with your character.
Logged

Selling Sunlight - Wandering Merchant RPG
kcbanner
Level 0
***


View Profile
« Reply #3548 on: July 03, 2016, 02:18:36 PM »

Check this out: http://www.shiningrocksoftware.com/2016-06-23-passing-values/ the developer of Banished encountered perf drops on certain OS X setups, perhaps you are hitting a similar issue?
Logged

eigenbom
Level 10
*****


@eigenbom


View Profile WWW
« Reply #3549 on: July 03, 2016, 05:47:48 PM »

The editor looks super neat! Will it be available for users/modders too? It would be so convenient to build an object and pop it into the world, instead of building it "by hand" with your character.

Yeah I hope to release the editor at some point after the first public release.

Check this out: http://www.shiningrocksoftware.com/2016-06-23-passing-values/ the developer of Banished encountered perf drops on certain OS X setups, perhaps you are hitting a similar issue?

I'm not sure it's a similar issue but it's an interesting issue that they encountered. Ours is something to do with the smaller command buffer available on the integrated gfx driver.
Logged

eigenbom
Level 10
*****


@eigenbom


View Profile WWW
« Reply #3550 on: July 09, 2016, 06:48:10 PM »

Update: Sam is working on quality settings for the game, you'll be able to to choose between LOW, MEDIUM, and HIGH gfx settings. LOW will be super bare-bones and will only render the essential parts of the game, at a lower quality, with no effects. HIGH will render everything, all effects, maximum particles and shaders, more things in the world, higher precision physics, and so on. MEDIUM is a compromise where we'll aim to make the game look as good as possible but disable some of the higher-end effects. We'll tune these defaults as we go, but at the least I wanted to have a stripped back minimal version of the game that'll run well on lower-end hardware.

World-wise I'm working on a few different pieces, for instance, I've finalised most of the volcano area tiles and am delving down into the pieces that make up the cathedral which sits below the surface.

In addition we're adding more stuff as usual. We'll be adding procedural generated signs to buildings, crystals that can be mined for the crystal resource (these are interesting because they aren't block-type resources, rather they are object-type resources), different bridges to add some flavour to the world, and plenty more.







Logged

eigenbom
Level 10
*****


@eigenbom


View Profile WWW
« Reply #3551 on: July 15, 2016, 08:07:02 PM »

Update: Sign Generation
Over on this thread we were discussing names for Taverns, Armouries, etc. I took all the suggestions and built a procedural sign generator. It has a bunch of templates and words and can generate Merchant, Armoury, Tavern and Miscellaneous signs like "The Prancing Leech", "The Six Axes", "Honey and Wyrm", etc.

The system is really simple, it just chooses between different patterns. For instance, 3 possible patterns for the tavern might look like this:

TYPE1 -----> THE <COLOUR> <CREATURE>
TYPE2 -----> THE <CREATURE_ADJ> <CREATURE>   
TYPE3 -----> THE <CREATURE> and <CREATURE>


When generating a name, the system then chooses one of TYPE 1, 2, or 3 at random. It then replaces each of the <BRACKETED> terms with a random entry chosen from a list. It's more-or-less a context-free grammar-based generator. The tavern generator has about 20 of these kinds of patterns.

As I build the system I start generating names to get a feel for it and I keep adding rules and exceptions until I get a reasonable variety of decent sounding names. Then comes the matter of getting the signs into the game itself. I could either (a) convert the generator code into c++, (b) embed python into the engine (blehk!), or (c) just generate a huge list of names and then include those directly in the game. For now I went with (c) - so while the signs were technically procedurally-generated, they aren't dynamically generated. Instead there are just huge lists (1000 signs per type) which the game pulls from.

Here is an example run of the generator:

Merchant

The Big Sponge
The Iron Torch
The Cork, Stick and Cork
The Gray Belt
The Toy and Arrow Store
The Conspicuous Rock
The Happy Fan
The Open Chasm
Glorious Store
The Snow Bag Shop
Eternal Well
The Cheap Thread
The Smelly Thimble
Snow Sponge
Curious Lamp
The Chocolate Thimble
The Rope's Handle
The Cheap Cat Packet
The Coral Toy
The Mirror's Lump

Blacksmith

Longswordsmith
Noggin and Cuirass
The Bulwark and Daggerplace
Silver Dustpan
The Dull Noggin
Barricadeplace
Ten Pickaxes
The Seven Tridents
Battleaxe and Scythe
The Iron Raiment
The Green Shovel
Seven Feathers
The Cloak and Longsword
Pale Pickaxe Anvil
The Enchanted Robe House
The Pale Sword
The Halberdhouse
The Perfect Stinghouse
The Mirror and Poker
Violet Sword

Tavern

The Gray Lobster Pub
The Long House
Magical Cave
Lizard and Brute
The Dark Place
The Lizard and Bloat
The Place Where You Get Drunk
The Pale Wyrm
The Hungry Tesseract
Pale Leech
Maverick Pit
The Musty Nook
Flamboyant Vole Brewery
The Chocolate Limpet
Golden Tesseract
Coral Rabbit
The Glass Mudcrab
The Lonely Cockatrice
The Librarian's Nose
The Hound and Squirrel

Miscellaneous Signage

Jump Over Spare Notion
Give Way to the Long Nook
Don't Touch the Holes
Loots Here!
Jump Over the House
Embrace the Pier
Avoid the Rabbit
Give Way to Awful Duty
Observe Unreal Cuteness
Cook Cave
Observe Lousy Style
Give Way to Alarming Causality
Cook Extreme Utility
Jump Over Enormous Belief
Don't Touch Harrowing Brute
Embrace the Place
Embrace Keen Injustice
Embrace Inferior Logic
Live for Liberal Infallibility
Jump Over Bloat

And here I am testing some of the signs in the game:



And now for my favourite generated tavern name...

Logged

Prinsessa
Level 10
*****


Ava Skoog


View Profile WWW
« Reply #3552 on: July 16, 2016, 02:16:14 AM »

Looks good, but..! I really think you should make any other signs disappear if a new one shows up. It looks a bit buggy (even if it isn't) and disorienting when there are many text labels at the same time.
Logged

eigenbom
Level 10
*****


@eigenbom


View Profile WWW
« Reply #3553 on: July 16, 2016, 11:12:03 PM »

Looks good, but..! I really think you should make any other signs disappear if a new one shows up. It looks a bit buggy (even if it isn't) and disorienting when there are many text labels at the same time.

Yeah I might end up doing that. As it stands now these signs are few and far between, there might be like 5 in an entire level, they won't be all stacked up like this.
Logged

eigenbom
Level 10
*****


@eigenbom


View Profile WWW
« Reply #3554 on: July 22, 2016, 10:58:07 PM »

Update: The cathedral level is taking shape, most of the design is done and the implementation is catching up. Here's an ascii representation of a generated level:



You can see the general layout, feature rooms like "store" and "chamber", and the connecting corridors and staircases. This level will be more linear than the others with just a few potential paths down to the Archive. Some of the technical issues I've solved are generating (mostly) non-overlapping room and corridor layouts, parametric room generators (e.g., stores have a variable height and number of shelves), and ensuring that the entire thing is all connected together. Little to no mining will be needed in this level. Here's a store room:



Over in the dialogue thread a few of us started to pitch ideas for what the NPCs might say. All the dialogue is procedurally-generated, which is not too tricky given that the NPCs spout nonsense. We cam up with a whole heap of templates and then I implemented them. Here's some of the thousands of lines of dialogue that the system generated:



The render quality system is now in place and you can choose from low or high quality atm. At low quality we've stripped out all non-essential effects, draw fewer objects, and render at a lower resolution, among other restrictions. This will be the Minimal Moonman that you should only run if your system is low spec. I'll also be adding a medium quality before release that will disable the higher-end effects.

Two more higher-end effects that I'm considering adding are a shiny metal material effect and light beams. The shiny material would have ideally make the metallic objects seem more sensitive to light. The light beams would be an overlay of light casting from windows and gaps in cave walls, etc. We'll spend a couple of friday afternoons experimenting with these and see how we go.
Logged

Prinsessa
Level 10
*****


Ava Skoog


View Profile WWW
« Reply #3555 on: July 23, 2016, 01:04:18 AM »

Ooooh. Neat procgen stuff in multiple ways. Is the grammatical mistake (these clothes makes instead of these clothes make) an artifact of the procgen or your own typo? Can you fix it?

Would love to hear a bit more about how the dialogue generation works. c:
Logged

jack0088
Level 0
*



View Profile WWW
« Reply #3556 on: July 23, 2016, 05:11:10 AM »

hey ben, amazing game. i admire your enduring motivation  Hand Thumbs Up Right

i'm really curious, how many lines of code do you have at this point?
Logged

Hobby game developer and Lua enthusiast. Currently working on Cavemen, an 8-bit roguelike.

Engine of choice: Codea | Language of choice: Lua
Fallow me @twitter
eigenbom
Level 10
*****


@eigenbom


View Profile WWW
« Reply #3557 on: July 23, 2016, 11:24:14 PM »

Ooooh. Neat procgen stuff in multiple ways. Is the grammatical mistake (these clothes makes instead of these clothes make) an artifact of the procgen or your own typo? Can you fix it?

An artifact, the system doesn't really know about plurals "this hat makes", "these pants make", etc. It's a really simple system, basically just generating random strings and joining them together. Check out Nanogenmo for for much more interesting approaches.

hey ben, amazing game. i admire your enduring motivation  Hand Thumbs Up Right
i'm really curious, how many lines of code do you have at this point?

Hi, thanks Jack! Smiley It's hard to tell exactly, but there's about 120k lines of moonman code, not including whitespace, comments, or external libraries.



Logged

jack0088
Level 0
*



View Profile WWW
« Reply #3558 on: July 24, 2016, 02:31:56 AM »

Hi, thanks Jack! Smiley It's hard to tell exactly, but there's about 120k lines of moonman code, not including whitespace, comments, or external libraries.

Woah?!! WTF Thats a lot! It's a task on its own to manage only that..
May I also ask you another question? (this one might be a little more technical though)

How do you display your maps? Are you slicing them into chunks and draw visible tiles as chunks or is everything on screen a separate object? How does it scale up to layers?

What I wonder about is how to display a lot of objects efficiently, and you seem to have solved that task already, so I thought I could ask for some tips.
Logged

Hobby game developer and Lua enthusiast. Currently working on Cavemen, an 8-bit roguelike.

Engine of choice: Codea | Language of choice: Lua
Fallow me @twitter
eigenbom
Level 10
*****


@eigenbom


View Profile WWW
« Reply #3559 on: July 24, 2016, 04:07:48 PM »

How do you display your maps? Are you slicing them into chunks and draw visible tiles as chunks or is everything on screen a separate object? How does it scale up to layers?

I render every 16x16 set of tiles into a render texture, and only re-render them when they change. Then I just render those textures to the screen.

My friend, Jasson, who makes a game called Crea does it a different way: he uses vertex arrays to batch the tiles into a few draw calls. Both approaches have their pros and cons.
Logged

Pages: 1 ... 176 177 [178] 179 180 ... 189
Print
Jump to:  

Theme orange-lt created by panic