Macuyiko
Level 0
|
|
« Reply #3540 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
|
|
« Reply #3541 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
|
|
« Reply #3542 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. 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.
|
|
« Reply #3543 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
|
|
|
|
eigenbom
|
|
« Reply #3545 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. 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
|
|
« Reply #3546 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
|
|
« Reply #3547 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
|
|
|
|
oahda
|
|
« Reply #3548 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
|
|
« Reply #3549 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
|
|
« Reply #3550 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
|
|
|
|
oahda
|
|
« Reply #3551 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
|
|
« Reply #3552 on: July 23, 2016, 05:11:10 AM » |
|
hey ben, amazing game. i admire your enduring motivation 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: LuaFallow me @twitter
|
|
|
eigenbom
|
|
« Reply #3553 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 i'm really curious, how many lines of code do you have at this point? Hi, thanks Jack! It's hard to tell exactly, but there's about 120k lines of moonman code, not including whitespace, comments, or external libraries.
|
|
|
Logged
|
|
|
|
jack0088
|
|
« Reply #3554 on: July 24, 2016, 02:31:56 AM » |
|
Hi, thanks Jack! It's hard to tell exactly, but there's about 120k lines of moonman code, not including whitespace, comments, or external libraries. Woah?!! 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: LuaFallow me @twitter
|
|
|
eigenbom
|
|
« Reply #3555 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
|
|
|
|
jack0088
|
|
« Reply #3556 on: July 25, 2016, 03:01:41 AM » |
|
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.
Ben, thank you very much for the insight! I really appreciate that! I will try out both, since I had an idea similar to Jasson's method: making a mesh with 256 faces, assign each face a tile (which is just a region on same texture) and render that mesh in one draw call. When changes appear re-assign faces on the go.
|
|
|
Logged
|
Hobby game developer and Lua enthusiast. Currently working on Cavemen, an 8-bit roguelike. Engine of choice: Codea | Language of choice: LuaFallow me @twitter
|
|
|
oahda
|
|
« Reply #3557 on: July 25, 2016, 03:08:06 AM » |
|
How did you settle on 16x16 specifically? Does it begin to get slower again after that? Is it like a sweet spot? How big is one tile, so that I know how big 16x16 are?
|
|
|
Logged
|
|
|
|
eigenbom
|
|
« Reply #3558 on: July 25, 2016, 05:35:00 PM » |
|
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.
Ben, thank you very much for the insight! I really appreciate that! I will try out both, since I had an idea similar to Jasson's method: making a mesh with 256 faces, assign each face a tile (which is just a region on same texture) and render that mesh in one draw call. When changes appear re-assign faces on the go. Yep that's a super simple way to do it, good luck! How did you settle on 16x16 specifically? Does it begin to get slower again after that? Is it like a sweet spot? How big is one tile, so that I know how big 16x16 are?
One tile is 8x8 pixels, but tiles can be bigger than that with edges that stick out etc. I didn't test 16x16 tiles vs, say 8x8, so I'm not sure which would be better. For my physics I cache in groups of 4x4 tiles.
|
|
|
Logged
|
|
|
|
eigenbom
|
|
« Reply #3559 on: July 30, 2016, 12:04:24 AM » |
|
Update: I updated to Windows 10 this week. The game still runs well, though I had to update my graphics drivers. We've done a heap of tiny things this week, bug fixes, system-level stuff, and other things: FIX: A vertical line would occasionally flash. FIX: Misc bugs between low/med/high gfx modes, they all work perfectly now and the game runs well in low mode on my 5 year old mac mini. FIX: Rare crash on OSX to do with submerging entities Updated launcher to show gfx options and changelog. Removed old options. (see below) Re-enabled vignetting, there's an option to turn it off. Cleaned up gui options a bit. Window dimensions are now saved on exit. Updated Laser rendering Restructured Linux build, now it's bundled as a simple tar and will check for updates. I also did some major work done on build and deploy system -- it has to be cross platform and support the different modes of distribution (humble, itch, steam, mac appstore, ...). Each distribution platform has it's own method for handling updates and deployment, so it's just a matter of plugging into each of the systems. The standalone auto-updating version will still work as normal, though the game will also auto-update through itch and steam. Many details still need to be sorted out. Sam is building the OSX launcher next week. It'll work like the windows one. For the linux standalone version we'll just have a shell script which you type from command line, it'll check for updates too. Alex has been doing lots of work on cleaning up the ice and tomb areas in the Mesa. Despite drowning in post-its, I'm feeling confident that we're on schedule for the beta release.
|
|
|
Logged
|
|
|
|
|