Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411274 Posts in 69638 Topics- by 58621 Members - Latest Member: hermo

November 14, 2024, 10:48:36 AM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsMoonQuest
Pages: [1] 2 3 ... 189
Print
Author Topic: MoonQuest  (Read 1420044 times)
eigenbom
Level 10
*****


@eigenbom


View Profile WWW
« on: September 30, 2011, 09:22:56 PM »

News: MoonQuest is now out!!

News: Moonman won some tigsource devlog awards! Link Link

MoonQuest is a procedurally-generated adventure game for PC.  It combines roguelike and minecraftian gameplay and is suitable for all inhabitants of this universe.





Each game presents a new world to explore in your quest to illuminate the endless night. Seek out the lost forest, delve into the spider caves, storm the castle of the Silver King, discover vast seams of gold ores, and craft a hat of such splendour that the cosmos will be jealous.

Some highlights of MoonQuest are:
  • A new world to explore every game, with frozen forests, hollow mountains, dangerous dungeons and populated towns;
  • Strange alien creatures, wandering merchants, and relentless enemies;
  • A rich environment with destructible tiles, ambient wildlife, and weather effects;
  • Strange moons that influence the game in unique ways (e.g., the Giant moon spawns giant versions of animals and enemies);
  • Hundreds of items including weapons, tools, hats, armour, shields, blocks, toolbenches, and so on;
  • Many resources to mine or harvest like silver, gold, sugar, salt, fur, and fruit; and
  • Several playable characters, each with different abilities and items;
    • Moonman, who illuminates with a moonly glow;
    • Amphibian, who breathes underwater;
    • Elemental, who detects ore with his antennae; and,
    • The Crusader, who starts the game with full armour;

Links






« Last Edit: February 25, 2020, 08:36:44 PM by eigenbom » Logged

eigenbom
Level 10
*****


@eigenbom


View Profile WWW
« Reply #1 on: September 30, 2011, 09:31:30 PM »

here's a screenshot. so far you can walk around, the collision and physics works well enough (only a few instances of walk-thru-walls Roll Eyes ), and you can place and delete blocks.

WARNING: OLDEST AND WORST MOONMAN SCREENSHOT

the cave generation is just a placeholder at the moment, but works well enough to test the other parts of the engine. you can also zoom out, in game, at the cost of your CPU burning up...

img, zoomed more, and more
« Last Edit: January 12, 2015, 10:30:36 PM by eigenbom » Logged

eigenbom
Level 10
*****


@eigenbom


View Profile WWW
« Reply #2 on: September 30, 2011, 09:33:23 PM »

another oldish screenshot
« Last Edit: January 12, 2015, 10:31:00 PM by eigenbom » Logged

eigenbom
Level 10
*****


@eigenbom


View Profile WWW
« Reply #3 on: September 30, 2011, 09:36:20 PM »

videos!

testing the collision system


experimenting with water

Logged

Ashkin
Guest
« Reply #4 on: September 30, 2011, 11:44:30 PM »

Well wow, this looks pretty cool! What are you developing it in?
Logged
eigenbom
Level 10
*****


@eigenbom


View Profile WWW
« Reply #5 on: September 30, 2011, 11:50:47 PM »

Well wow, this looks pretty cool! What are you developing it in?

Thanks! I'm developing it in c++, and using sfml for windowing/drawing/events/etc.
Logged

happymonster
Level 10
*****



View Profile WWW
« Reply #6 on: October 01, 2011, 07:42:04 AM »

I also like the art style.. Smiley
Logged
eigenbom
Level 10
*****


@eigenbom


View Profile WWW
« Reply #7 on: October 04, 2011, 05:35:44 PM »

an animation attempt..


Logged

eigenbom
Level 10
*****


@eigenbom


View Profile WWW
« Reply #8 on: October 05, 2011, 03:12:38 PM »

Added a simple logging system, using cpplog(which is nice and simple.)
Logged

Belimoth
Level 10
*****


high-heeled cyberbully


View Profile
« Reply #9 on: October 05, 2011, 03:41:22 PM »

I like this visual style a lot Grin

Also I am jealous of your water.
Logged

eigenbom
Level 10
*****


@eigenbom


View Profile WWW
« Reply #10 on: October 05, 2011, 03:47:18 PM »

I like this visual style a lot Grin

Also I am jealous of your water.

Thanks, comments like this keep me motivated!

The water model is tricky to tweak, and is more like blue sand at the moment. Needs quite a bit more development before I'll be happy with it. Smiley
Logged

eigenbom
Level 10
*****


@eigenbom


View Profile WWW
« Reply #11 on: October 06, 2011, 09:59:30 PM »

Ideally I'd like it to be very easy for someone to add a new animal, enemy, item, or effect to the game. To that end I've worked a bit today on the entity system, trying to design a nice entity-based system with lua scripting, networking, and simple storage. Once finished, a user should be able to add e.g., a chicken to the game by writing a little lua script:

Code:
local cluck_pid, chicken_eid
function onLoad()
  cluck_pid = register_property("chicken_clucker", clucker())
  chicken_eid = register_entity("chicken", chicken())
end

function chicken()
  local ch = create_entity("actor")
  ch.sprite = sprite_sheet("chicken.png", ...)
  ch.speed = .1
  ch.add_attribute_bool("clucking", false)
  ch.add_property(cluck_pid)
  return ch
end

function clucker()
  local p = create_property()
  p.on_receive_message = function(e,msg)
    if (msg.type == APPLY_DAMAGE)
      e.clucking = true
    end
  end
  return p
end

The design's a mashup of the ideas from some of the following articles, and I'll write some more about it as it is fleshed out some more.

A Data-Driven Game Object System - Scott Bilas

Entity Systems are the future of MMOG development - Adam Martin

The Nebula3 Application Layer

Evolve Your Hierachy - Mick West

Logged

kamac
Level 10
*****


Notoriously edits his posts


View Profile
« Reply #12 on: October 07, 2011, 04:04:52 AM »

Nice  Waaagh!
« Last Edit: December 24, 2013, 04:59:23 AM by kamac » Logged

eigenbom
Level 10
*****


@eigenbom


View Profile WWW
« Reply #13 on: October 08, 2011, 10:25:38 PM »

some moonman mockups, with weapons and in various guises

Logged

eigenbom
Level 10
*****


@eigenbom


View Profile WWW
« Reply #14 on: October 08, 2011, 11:08:42 PM »

@kamac cheers!

I'm not sure if anyone's interested in technical details, but I'll write a few more words on the design just in case. I mocked up some of this design in code the last couple of days.

Every character, item, weapon, effect, gui element, etc., in moonman is an Entity. An Entity is composed of Attributes and Properties. Attributes are key-value pairs which specify the shared data of an entity, and the sum of properties in an entity specify its capabilities. For instance, an npc in the game might be created as follows:

Code:
// script
npc = create_entity {x=0,y=0,vx=0,vy=0,onground=false,sprite="someguy.png"}
npc:add_property(physics)
npc:add_property(walker)
npc:add_property(renderable)
npc:add_property(ai_controller)

Each property has an update and onMessage function, and has access to the shared data in an entity. e.g.,

Code:
// c++
class PhysicsProperty {
public:
  virtual void update(Entity* e, double dt){
    e->attrib(x) += e->attrib(vx)*dt
    // ...
  }
}

The attributes are accessible by all the properties because there is commonality between them (e.g., the Renderable property needs the x and y coordinates to draw the npc in the right location.) This simplifies things, at the cost of being easier to shoot yourself in the foot (so as rule of thumb: each attribute should be modified by only one property).

An attribute in my engine is implemented as a boost::variant:
Code:
typedef boost::variant<bool,int32,float,std::string> Attribute;

Each attribute and property is assigned a unique integer id. This is for efficiency reasons (an integer lookup is quicker than a string lookup and an integer is smaller than a string). However, because users can add new attributes and properties, the assigning of ids is done dynamically. E.g., a user can add a new entity attribute of type float, with a default value of 1.5., by writing
Code:
// lua
id1 = register_attribute_float("foo",1.5)
The registry returns an attribute id that the script can store (for this instance) to refer to the attribute, e.g.,
Code:
// lua
some_entity.attrib(id1) = .5
... although I'm investigating Lua meta-tables to see if I can allow the much simpler...
Code:
some_entity.foo = .5

In regard to the multiplayer aspect the server and client may be running different scripts/mods (or have them loaded in different order), which means that the attribute id's may be different. Hence, the client needs to store an mapping between the servers ids and the clients ids. This can be done fairly efficiently just by recording which blocks of ids belong to which mods. Saving a game world to disk is also simplified using a global id system.

I've never built a game this way, I typically just hard hard-coded all the classes into some inheritance hierarchy, so I find it very interesting to build types dynamically. It seemed to work for Dungeon Siege, Neverwinter Nights, etc, but I'm just a lone coder .. so we'll see whether I'm consumed by the extra work required or not!
Logged

eigenbom
Level 10
*****


@eigenbom


View Profile WWW
« Reply #15 on: October 10, 2011, 01:48:41 AM »

another animation test: ____________
Logged

eigenbom
Level 10
*****


@eigenbom


View Profile WWW
« Reply #16 on: October 10, 2011, 05:17:17 PM »

Logged

cactus
Makeout King
Level 5
******



View Profile WWW
« Reply #17 on: October 10, 2011, 05:33:22 PM »

Love the style in this.
Logged
Ashkin
Guest
« Reply #18 on: October 10, 2011, 05:36:56 PM »

I just want you to know that the player's unending and almost maniacal grin, even (especially?) when he's holding a weapon of mass destruction, unnerves me to no end.
Logged
eigenbom
Level 10
*****


@eigenbom


View Profile WWW
« Reply #19 on: October 10, 2011, 05:44:34 PM »

@cactus cheers! and i loved psychosomnium btw

@ashkin haha, yeh i noticed/felt that too. i figure it will offer a nice mood to the game, initially you just think he is happy, but then the grin never falters even when he (you) are killing things, so you might end up really fearing this small clump of pixels..
Logged

Pages: [1] 2 3 ... 189
Print
Jump to:  

Theme orange-lt created by panic