Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411424 Posts in 69363 Topics- by 58416 Members - Latest Member: JamesAGreen

April 19, 2024, 08:18:54 AM

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


hello


View Profile
« Reply #3520 on: May 26, 2016, 07:35:18 PM »

moonman reminds me of Gumby, if he went on a diet and killed monsters n junk





If moonman and Gumby fought, who would win?
Logged

X P E T S    |    F I L T H Y  B E A R    |    P E S T
ansimuz
Level 1
*



View Profile WWW
« Reply #3521 on: May 26, 2016, 10:34:46 PM »

Wow its looking great since the last time i checked. All that path finding and jumping algorithms are rocket science.

Good job man.
Logged

I made Elliot Quest. Now i make Pixel art https://www.patreon.com/ansimuz
eigenbom
Level 10
*****


@eigenbom


View Profile WWW
« Reply #3522 on: May 26, 2016, 10:37:18 PM »

Very nice work.
If I had been there before, I would back at KS. Dammit.
Any ETR?

Thanks, this year I really hope Smiley

Why did you choose to make your own engine with SFML and C++? And why did you choose C++ over something like Monogame and C#? Just wondering, since I'm having a hard time wrapping my head around basic stuff  Grin

I wanted to learn how to build a game 'from scratch'. There's still some pieces like the physics engine and OS layer that I haven't built myself, but everything else I have. Smiley

If you're starting out, definitely don't choose SFML + C++. Instead I'd recommend to use Unity.

moonman reminds me of Gumby, if he went on a diet and killed monsters n junk

If moonman and Gumby fought, who would win?

Gumby would win because Pokey would come and Poke moony to death.

Wow its looking great since the last time i checked. All that path finding and jumping algorithms are rocket science.

Good job man.

Hey dude, yeah it's been a while! Currently in a content sprint so adding a whole heap of new stuff. No time to even write this post Wink
Logged

Kakapio
Level 0
***



View Profile
« Reply #3523 on: May 26, 2016, 11:20:59 PM »

Very nice work.
If I had been there before, I would back at KS. Dammit.
Any ETR?

Thanks, this year I really hope Smiley

Why did you choose to make your own engine with SFML and C++? And why did you choose C++ over something like Monogame and C#? Just wondering, since I'm having a hard time wrapping my head around basic stuff  Grin

I wanted to learn how to build a game 'from scratch'. There's still some pieces like the physics engine and OS layer that I haven't built myself, but everything else I have. Smiley

If you're starting out, definitely don't choose SFML + C++. Instead I'd recommend to use Unity.

moonman reminds me of Gumby, if he went on a diet and killed monsters n junk

If moonman and Gumby fought, who would win?

Gumby would win because Pokey would come and Poke moony to death.

Wow its looking great since the last time i checked. All that path finding and jumping algorithms are rocket science.

Good job man.

Hey dude, yeah it's been a while! Currently in a content sprint so adding a whole heap of new stuff. No time to even write this post Wink



Haha, definitely won't tackle my own tile engine for quite a while. Perhaps I will as soon as I get my PHD in computer science Wink
Logged

What will you make?

Twitter
Scarlet Tower DevLog
Kakapio
Level 0
***



View Profile
« Reply #3524 on: May 27, 2016, 05:50:22 PM »

How do you handle slopes? I'm working on a project in Unity right now, and am having difficulty as my tiles are too large. I have a circle collider on the feet, that I hope would allow the player to glide over small differences in height.


Here's what I'm talking about:
https://gyazo.com/53811ba375389c4244dfb45c139f9793
Logged

What will you make?

Twitter
Scarlet Tower DevLog
eigenbom
Level 10
*****


@eigenbom


View Profile WWW
« Reply #3525 on: May 27, 2016, 06:48:48 PM »

The easiest way is to just override the physics and snap the player up to the next height if they are pushing against a step. You'll have to search this devlog for specifics on how I handle slopes, it's complicated. Personally I'd just avoid having slopes altogether.
Logged

eigenbom
Level 10
*****


@eigenbom


View Profile WWW
« Reply #3526 on: May 27, 2016, 07:24:27 PM »

Update: The big news this week was that we released the Linux version of the Moonman alpha. If you're an alpha tester you can check it out from your humble (refer to the support page for installation details). It was a great achievement by Sam to get it all up and running so quickly, and over the next couple of weeks we'll sort out any issues that people have had.

While this has been going on Alex and I have been in art mode, sorting through the large amount of stuff we have, filling in gaps, making sure we similar colours for similar materials, and so on. It's a big job due to the sheer amount of assets we have, but we're making our way through. There are lots of things like tiny piles of skulls that all needed to be cleaned up and finalised.

I'll be implementing the labyrinth next and I just added some of the new tiles in this morning. See you next week!

Logged

eigenbom
Level 10
*****


@eigenbom


View Profile WWW
« Reply #3527 on: June 03, 2016, 06:59:32 PM »

Update: Hey there :slight_smile: This week Alex and I have been mocking up lots of concepts for world features -- intriguing things that you'll come across on your adventure. They range from small objects like lamp-posts to self-contained sub-areas like a room of traps. For example:


- dragon tooth (a growth of bone ore in a tooth shape);
- crystal sanctuary (a pocket of nature surrounded by crystal in the volcano area);
- specimen (a glass-block enclosure filled with liquid with a plant or thing inside);
- spider hole (a dug out hole in the terrain filled with webs and spiders); and
- skull pit (a dug out pit with skulls and bones down the bottom).


We've got a whole bunch of interesting ideas for these, broadly categorised and in a number of different styles. After these concepts are done we'll figure out a subset to include in the beta and then move on to implementing them.

Alongside this I'm continuing to add the Veil pieces to the game. Some new features are switches, spikes, and traps - some static and some triggered by sensors. Here's poor Carl testing these things out:







We've got a bunch of feedback back from the Linux test and we'll be making a few changes, specifically: we'll be packaging a 32-bit and 64-bit version in the same distribution and we'll be getting rid of the installer and just releasing a tarball (for the non-Steam version). We're having trouble replicating some of the OSX crashes you guys have been reporting so we'll be leaving them for now.

Sam has been investigating the renderer and making some optimisations. Some big goals for us there are:

- patch over any small pauses in gameplay due to rendering;
- improve efficiency when rendering many things on screen; and
- provide a 'lite' mode for older hardware.



Logged

RujiK
Level 2
**



View Profile
« Reply #3528 on: June 06, 2016, 04:40:34 AM »

Take that Carl! No one likes you anyway!

Eigenbom, have you gotten any bogus "publisher" offers? Like, "For 20% gross we'll market your game!" or something.


I saw this awhile ago and wondered how common it is.
http://morrisonlee.com/2016/05/23/game-publishers-in-2016-how-to-throw-your-lifes-work-away-in-seconds/
Logged

io3 creations
Level 10
*****



View Profile WWW
« Reply #3529 on: June 06, 2016, 09:16:21 AM »

I've checked out quite a few Greenlight projects in the last few months and every one of had a post with a similar marketing offer.  Interestingly, a month or so ago I used to see UltraShock but nowadays, it's a "sexy chick" avatar image (that changes from time to time) with some other account.  Not sure if it's the same company but the offer is probably the same.  As mentioned on the website that you posted, do your homework before actually committing to a deal like that.
Logged

miguli
Level 1
*



View Profile
« Reply #3530 on: June 06, 2016, 09:24:17 AM »

I one day read whole devlog of your's and very inspiring to read. It was interesting to see how much your project has grown and changed since start.

Seems like I'm late to the party, but following this devlog, really interesting to read.
Logged
kcbanner
Level 0
***


View Profile
« Reply #3531 on: June 06, 2016, 09:30:17 AM »

I'm always blown away with the particle effects in Moonman gifs, have you ever done a writeup on that implementation?
Logged

eigenbom
Level 10
*****


@eigenbom


View Profile WWW
« Reply #3532 on: June 06, 2016, 04:22:09 PM »

Eigenbom, have you gotten any bogus "publisher" offers? Like, "For 20% gross we'll market your game!" or something.

Not really *bogus*, but I've been approached by about 15 different publishers, from all the big names, to really tiny ones. I never really got my head around the value they would provide so have never seriously considered it. (i.e., I could just hire a marketing person for some small fee if I needed to offload some of that work.)

I one day read whole devlog of your's and very inspiring to read. It was interesting to see how much your project has grown and changed since start.

Wow, thanks for reading, it's a very long devlog Smiley

I'm always blown away with the particle effects in Moonman gifs, have you ever done a writeup on that implementation?

Thx, and nope, I haven't. I assume you're talking about the fire effect, rather than the water splash or block particles, etc. The key to the fire is additive blending and tone mapping, if you're interested you can read up on those.
Logged

Cragz
Level 0
*


View Profile
« Reply #3533 on: June 08, 2016, 04:08:17 AM »

Hi Ben, like a bunch of others I've just binge-read your entire devlog. Whilst the game looks stunning, what I really appreciate is your dedication to updating this thread over the last ~4.5 years.

Keep up the exceptional work, I'm certain you'll unlock the Worldwide Indie Darling achievement following release.

 Beer!
Logged
eigenbom
Level 10
*****


@eigenbom


View Profile WWW
« Reply #3534 on: June 10, 2016, 04:29:27 PM »

Hey Cragz, thanks dude! Smiley
Logged

eigenbom
Level 10
*****


@eigenbom


View Profile WWW
« Reply #3535 on: June 12, 2016, 08:17:41 PM »

Update: We nudge ever closer to the public beta. This week has been about the dev tools, working on compatibility of save files, optimisation, and world feature concepts. This devlog I'll be talking about the Editor and Serialisation.

Editor
I made some huge improvements to the internal editor -- this is the tool I use to test things and prototype little areas. It lets you add blocks, objects, mobs, etc. I spent a few days making it more user-friendly so that Alex and I can more easily create those world features I talked about last week.

Here's the block panel, which shows you all the blocks and offers a paint and fill tool. (It uses Dear ImGui10 for the GUI.) There's a "filter" text box which lets you navigate the list more easily. The fill tool and bigger brush sizes are especially handy.







The "object mode" lets you select an object from the list and then click into the world to add it. The editor also tries to snap the object to the nearest valid point and place it. Similar modes exist for mobs and items, too.



At the moment these tools are developer only, but we're having so much fun with them that I'm now seriously considering bundling them with the final game. It would probably be a feature that you'd have to unlock somehow, and to prevent spoilers it would only contain a subset of the content. Imagine creating a little level and then sharing it with your friends to play, I think that could be a lot of fun. This is a low-priority feature for now.

Serialisation
Not the most fun of topics but I think it's an important one to mention. The game is currently very fragile in terms of save files: you can't load games from different versions, and if something goes wrong with loading the game may just crash. I aimed to fix both of those this week. As we move into a content-creation phase of development we needed a stable save file system that is backwards and forwards compatible.

There are a few issues involved with compatibility:

File format
System architecture differences
Missing resources
Unknown/New resources


File Format: Consider that I want to add a new field "pants" to an object which I've saved. If your save file version is the same as your game version then this is all good, the game knows about pants and can read in that struct no problem.

struct DudeV1 { int x, y; }

struct DudeV2 { int x, y; bool pants; }


But what if you have V2 of the game and want to load a V1 save file (for instance if an update comes over steam and you want to continue playing your current game)? More rarely, what if you have V1 of the game and want to open a V2 save file? (This may happen if someone makes a level and sends it to you, but you don't have the exactly-right-version of the game.)

One solution to this is to use a generic format like JSON/XML, and then read or write as much as you want -- setting defaults when things are missing. E.g., if V2 reads in a V1 it may just set pants = true because that field would be missing in the V1 save. As long as you are strict about not removing any elements then all will be good.

If you're working in a binary format, as I am, then you need to be a little more careful. If you're writing out the Dude struct to a binary file, you'll need to also write out the sizeof(Dude) (see below) and the version of Dude. This allows V1 to skip unknown V2 data, and V2 to only read in as much V1 data as it should.

I built a little system based around libs like Cereal and Boost::Serialisation to do this in Moonman. The Dude example looks like this in the engine:



However there will always be occasional big structural changes to the save system, and for those I will break compatibility. The save will have a structural "VERSION" number, which is changed only if the save format breaks compatibility. I expect this will happen rarely, but when it does you'll lose your save files. A workaround for this is to provide a 'save game converter' function to map between old and new saves, but I don't think this'll be necessary given the nature of the game.

System architecture differences: Low-level languages are very susceptible to changes in architecture. If I write something like file.write(x); then that will write the exact bits of x as stored on the current system. Some typical example of architectural differences are little endian/big endian and 32-bit/64-bit. Floating point numbers may also be stored differently.

In C++ we also have a bigger problem, certain types or structs may have different sizes depending on which compiler and system you use. You write out a flat struct on MSVC and read it in on OSX? This may not work. To get around this you can use #pragma pack for structs and then sizeof() will be consistent, but this brings it's own challenges, and so the most straightforward way is to just serialise all the members of a struct explicitly (as I did in the Dude example above). There are other approaches (e.g., Protobuf) but this is the method I'm using in Moonman.

For differences in type size I'm just restricting my serialisation to types with a constant size, e.g., int32. And for differences in endian-ness, well, this is where I've drawn the line -- in the rare situation of a Big Endian port of Moonman comes up (Nintendo Wii?!), save files will simple be incompatible between endian-ness.

Missing resources: Assume you load a V1 save in a V2 game, but in V2 I've removed hats. Or I've removed the soil tile. Or something. Previously the system would have crashed because it didn't recognise the old hat or soil. Now it happily continues on, skipping over the unknown data. If you were wearing a hat it won't be there anymore - but that's the worst case.

For blocks we also have another problem, the IDs of blocks may change between version. A stone block may have ID=3 in V1, but ID=4 in V2. This is due to how I generate the ids. Previously the game would have seen ID=3 and used it's own mapping to determine the block (maybe wood has ID=3 in V2 and then all the stone would become wood!). Now I store a block database with the world itself and use this to maintain a compatible mapping.



Unknown/New resources:
Assume you load a V2 save in a V1 game, the save file may have kinds of unknown objects, items and blocks. The game now reports a warning but can skip over all the unknown data and load the level anyway. This is a rare situation, and if you got that warning and really wanted to play that level, then you'd probably want to update your game version anyway.

As always, I'm happy to answer any questions about this stuff. You can also subscribe to this forum to get the devlog updates.
Logged

kcbanner
Level 0
***


View Profile
« Reply #3536 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 #3537 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 #3538 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 #3539 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

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

Theme orange-lt created by panic