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

Login with username, password and session length

 
Advanced search

1057084 Posts in 42936 Topics- by 34883 Members - Latest Member: PTlGhOsT

October 24, 2014, 08:13:21 PM
TIGSource ForumsFeedbackDevLogsmoonman
Pages: [1] 2 3 ... 136
Print
Author Topic: moonman  (Read 705255 times)
eigenbom
Level 10
*****



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

MOONMAN

This is the development log for Moonman. Moonman will feature an immersive, procedurally-generated world with strange creatures, abundant minerals, and exotic weapons. It is heavily inspired by games such as Knytt Stories, Terraria, Nethack, Dwarf Fortress, and Minecraft.

Follow me at @eigenbom for regular updates. Sign up to the mailing list at http://moonman.io/ to get notified of the release. I also maintain a facebook page if that's your thing.

« Last Edit: October 10, 2014, 03:26:34 PM by eigenbom » Logged

eigenbom
Level 10
*****



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.



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...



zoomed more, and more
« Last Edit: October 09, 2011, 06:00:14 PM by eigenbom » Logged

eigenbom
Level 10
*****



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

another oldish screenshot

« Last Edit: October 08, 2011, 10:24:13 PM by eigenbom » Logged

eigenbom
Level 10
*****



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

videos!

testing the collision system http://www.youtube.com/watch?v=07nUfOkf1T0
experimenting with water http://www.youtube.com/watch?v=xIeAxAnV9YM
Logged

Ashkin
Level 10
*****


meow


View Profile
« 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
*****



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

SpaceHero Command ... In Development
http://forums.tigsource.com/index.php?topic=23173.0
eigenbom
Level 10
*****



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

an animation attempt..


Logged

eigenbom
Level 10
*****



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
*****



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
*****



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
*****


Notorious posts editor


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

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

Nothing to do here
eigenbom
Level 10
*****



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
*****



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
*****



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

another animation test: ____________
Logged

eigenbom
Level 10
*****



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
Level 10
*****


meow


View Profile
« 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
*****



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 ... 136
Print
Jump to:  

Theme orange-lt created by panic