Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

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

April 19, 2024, 05:39:02 AM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsMoonQuest
Pages: 1 ... 154 155 [156] 157 158 ... 189
Print
Author Topic: MoonQuest  (Read 1319827 times)
eigenbom
Level 10
*****


@eigenbom


View Profile WWW
« Reply #3100 on: June 29, 2015, 04:52:34 PM »

HM - I'm ignoring you now.
AB - aw yeh Smiley
Logged

Mixer
Level 1
*


I've never really known what to put here.


View Profile WWW
« Reply #3101 on: June 30, 2015, 04:14:43 PM »

Post more snippets of code, they are awesome Tongue
Logged

My twitter is @5Mixer.
I'm currently making a dungeon game, check it out :D
https://forums.tigsource.com/index.php?topic=59139.0
ernanir
Level 2
**


Hello World


View Profile WWW
« Reply #3102 on: July 01, 2015, 04:21:35 AM »

Quote


this is dope.

Totally agree, dope as fuck :D
Logged

siskavard
Guest
« Reply #3103 on: July 01, 2015, 12:11:29 PM »

every time I pop into this thread I see something cool
Logged
happymonster
Level 10
*****



View Profile WWW
« Reply #3104 on: July 02, 2015, 01:26:42 AM »

Boo! Tongue

Still looks good!!  Coffee
Logged
eigenbom
Level 10
*****


@eigenbom


View Profile WWW
« Reply #3105 on: July 08, 2015, 05:22:38 PM »

Update: After some time off I'm now back in action! Evil

This week I've spent a significant amount of time cleaning up my vast list of TODOs for Moonman, and the rest of the week I'll be defining the next milestones. Managing a project of this size can get daunting, but I just need to remember to keep cleaning out my tasks and re-evaluating the plan.

First on my list of things will be to get the next two areas (Seed and Ember) up and running, in some form or another. This trumps the gameplay atm because we need to start balancing the art across the regions, and when those are in place GP will have a clearer basis to develop the background and tile art further. The first 'big milestone' will be to have those four areas, their respective boss areas, and the gameplay all working well. If we work hard then October/November for that seems like a reasonable goal.

While I was on a break @narwolf was busy working on item concepts and colours, and I can't wait to start bring those things into the game. Here we have bucket helm, face shield, and golden sword:



And here we have some colour studies for Ember and Palus (we're still working on Mesa and Seed).



On the game design side, here's a sneak peek at an early concept for Nerve, the boss area in Seed. It's a connected series of small caves, with dangerous neural sinews that have repeating patterns of electrical activity. Each ganglia in the outer perimeter will need to be destroyed to unlock the Seedstone in the center.



It's just a concept at this stage, but we're thinking about procedurally generating the patterns you'll see in the sky. Here are some prototypes I created in Unity3d, using a bunch of Perlin noise-based functions. In the final game the effect would be slowed down quite a bit.

Logged

SafetySnail
Level 0
***



View Profile
« Reply #3106 on: July 08, 2015, 11:50:48 PM »

Do they have to be slowed down? That green sky at that speed looks awesome.
Logged
eigenbom
Level 10
*****


@eigenbom


View Profile WWW
« Reply #3107 on: July 09, 2015, 12:15:17 AM »

I'll see how it looks in-game. I don't want the sky distracting from the action Smiley
Logged

ThilDuncan
Level 0
***


Indie Developer at Ghost Town Games


View Profile WWW
« Reply #3108 on: July 09, 2015, 05:46:08 AM »

Really like seeing your broad stroke concepts transition into fully fledged levels/ tiles, clearly a technique which works really well as the palette of the game is always so nice : )

also:

Quote
I'll see how it looks in-game. I don't want the sky distracting from the action Smiley

- always happy when gameplay and art are given equal consideration!

(Been lurking on this thread for a while, very excited!)

P.
Logged

McMutton
Level 10
*****


McMutton


View Profile
« Reply #3109 on: July 09, 2015, 12:27:53 PM »

Still truckin'? Still awesome!

Also:


YOU CANNOT DEFEAT WINTER.
Logged
eigenbom
Level 10
*****


@eigenbom


View Profile WWW
« Reply #3110 on: July 09, 2015, 03:50:40 PM »

ThilDuncan -- Thanks!

McMutton -- Haha muttons, I will never stop trucking

Logged

eigenbom
Level 10
*****


@eigenbom


View Profile WWW
« Reply #3111 on: July 16, 2015, 11:33:31 PM »

Update: Work continues on the colours and structure of the 4 regions. These thumbnails show the general layout of the palus, seed, ember, and mesa regions. I've been thinking hard about the commonalities between them -- which are then factored into modules I can re-use between the generators.



For example: many of the regions have cave-like structures that are generated from noise-based functions. So I've decided to build a general purpose Caver module, used in the following way (c++):

Code:
CaveRegions regions = DefineRegionsSomehow();
CaverResult cr = Caver<BlockData>(regions, blockFunction);

// defined elsewhere ...
CaveBlock<BlockData> blockFunction(vec2d p, ...){
  // trivial example:
  if (noise(p)>0) return B_SOIL; else return B_AIR;
}

The Caver function applies the blockFunction to each tile and then does some extra work, like identifying where caves exist, and so on. The interesting work is really in the blockFunction, which can be built up using various primitives like Warp, Bands, Cells, FractalSum, and so on.

It's not all functional though (in the mathematical sense), however, one interesting thing about this approach is that you can compose functions in lots of interesting ways. For example, the following code, when evaluated over a square, gives the image below (where the letters represent different densities of the function.)





With some perseverance you can get some really organic shapes. Here are some prototype part for the seed level in Moonman. I've been printing them in ascii because it lets me work much quicker.





A big development in the design of the Seed area, is that the surface will now be covered in coral-like structures. This surface crust of corals will be a general-purpose material (like lumber). Here's some initial sprites:



I'll end this devlog with a few more of my ascii experiments..







Logged

happymonster
Level 10
*****



View Profile WWW
« Reply #3112 on: July 16, 2015, 11:37:16 PM »

Looks cool! Smiley

I like the new tiles too..
Logged
eigenbom
Level 10
*****


@eigenbom


View Profile WWW
« Reply #3113 on: July 16, 2015, 11:38:00 PM »

Thanks HM, been a little quiet lately but gearing back up :D
Logged

jctwood
Level 10
*****



View Profile WWW
« Reply #3114 on: July 17, 2015, 12:58:26 AM »

I have to say I would love to see an ASCII mode in Moonman now that you have shown such beautiful structures rendered using characters.
Logged

dancing_dead
Level 2
**


View Profile
« Reply #3115 on: July 17, 2015, 03:50:14 AM »

very impressive organic looking shape generation!

also, your C++ looks so clean and readable. hard to believe it's C++ even... Smiley
Logged
eigenbom
Level 10
*****


@eigenbom


View Profile WWW
« Reply #3116 on: July 17, 2015, 03:39:13 PM »

I have to say I would love to see an ASCII mode in Moonman now that you have shown such beautiful structures rendered using characters.

Haha, nooo .. (Did you see my first ever mockup of moonman in ANSI art?)

very impressive organic looking shape generation!
also, your C++ looks so clean and readable. hard to believe it's C++ even... Smiley

Thanks DD. Those snippets are not really representative of my codebase, but I try to spend some time here and there cleaning it all up.

For example: when I started Moonman dev things like "auto", brace-initialisers for vectors, lambdas, and range-based for loops weren't really in the c++ zeitgest (at least not in a standard way). So in the last year I've been writing in this new style -- which means I've got 80k lines of code over 4 years, written in a couple of different styles. I even have different enum naming conventions. I started using enum ThingBob {kThis, kThat} when I was doing lots of Objective-C coding for another project, but now I use enum ThingBob {TB_THIS, TB_THAT}. (This has the benefit of being able to write "TB_" and get the autocomplete for all valid options for that enum. I might eventually switch the enum classes, although writing ThingBob::This seems a bit messy to me.)

So maybe if you saw my full code-base you'd reconsider Wink


Logged

The MegaMagic Dude
Level 0
***



View Profile WWW
« Reply #3117 on: July 22, 2015, 08:01:18 AM »

I can't help myself xD

I love the game, btw. And the song too. Talk to Dan Harmon to include it in the ending DDD:



Logged


Visit our devlog!

eigenbom
Level 10
*****


@eigenbom


View Profile WWW
« Reply #3118 on: July 22, 2015, 03:42:11 PM »

I can't help myself xD
I love the game, btw. And the song too. Talk to Dan Harmon to include it in the ending DDD:

Haha, classic. Oh that would really fit the credits ..
Logged

eigenbom
Level 10
*****


@eigenbom


View Profile WWW
« Reply #3119 on: July 23, 2015, 10:42:31 PM »

Update:

This week we worked on two big things. Firstly, I refactored many parts of the world generators, and secondly, GP and I created a MEGA MOON WORKSHEET that contains every single sprite and block in the game.

World Gen Framework

Continuing on from last week, I created a bunch of separate modules for world generation. The underlying motivation is that each region in Moonman has a distinctive world structure and so having a general shared toolkit will make my life a lot easier. The current world generation (wg) modules are:

wgcommon: 2d arrays of blocks, polygons, and functions for converting between them
wgfunctional: high-level functions (like domain warp)
wgstamp: routines for stamping templates like houses and trees into 2d block arrays
wgdistribute: distribution functions for scattering plants and world objects
wgdungeon: dungeon generation routines and helpers like A* and subdivision
wgcave: functions for carving out caves. you can supply an arbirtrary block function (see below)
wgflood: takes fluid 'seeds' planted in the environment and spreads them out
wgseed: seed specific routines, like glooper
wgmountain: mesa specific, e.g., mountain generation

Planned modules include:

wgarchitect: will contain functionality for designing and building houses
wgarborist: better planting and distribution of flora
Many areas will contain cave-like structures, and so the wgcave module has a flexible function GenerateCaves which creates caves from a user-defined function. A simple example is below.

Code:
void generateCaves(){
  ..
auto cbf = std::bind(&TestGeneratorImpl::caveBlockFunction, this, _1, _2, _3, _4, _5);
auto caves = GenerateCaves<TestBlock>(vec2i{ ww, wh }, caveRegions, cbf, mRandom);
..
}

void caveBlockFunction(const vec2d& p, double depth, const CaveData& cd, CaveBlockCorner& cbc, TestBlock& tb){
// Basic noise function
double x = p.x * 0.15;
double y = p.y * 0.2;
double surface = 1 - clamp(depth / 6, 0., 1.);
double cave = mRandom.noise(x, y, 0);
cave += surface;
if (cave > 0){
cbc.fg = 1;
tb.type = TBT_SOLID;
}
else {
cbc.fg = -1;
tb.type = TBT_EMPTY;
}
};

Running this simple example gives the following output (when printed to console), where the @ symbol represents solid terrain and the period (.) is blank space. wgcave also handles the generation of the smooth slopes.



This is an important part of world generation, but it's only one step of many. More complex functions can be composed together to start building the natural aspect of the world. Here's an example of the Seed level currently under design:




Players won't ever see the world laid bare -- they'll only ever have a local view:



Worksheet

The second thing we've been working on is a big worksheet. We now have a central place we're every design and block will live. It contains all the current stuff and new concepts and sprites. We'll continue to work from this sheet as we create the palettes, update all the old sprites in the game, and adapt and implement the new sprites. It took about 3 full days and I'd like to show you the whole thing, but ** spoilers **, and so here's just a sneak peek of a few parts.











Logged

Pages: 1 ... 154 155 [156] 157 158 ... 189
Print
Jump to:  

Theme orange-lt created by panic