Login
User Name:

Password:



Register
Forgot your password?
Vote for Us!
6D update
Author: Vladaar
Submitted by: Vladaar
Area_Version
Author: Rafermand
Submitted by: Vladaar
4 Liberty
Author: Vladaar
Submitted by: Vladaar
SWR 1.2 FUSS with Account System
Author: Amras
Submitted by: Amras
G/S/C Bank (FUSS 1.9)
Author: Leia
Submitted by: Leia
Users Online
CommonCrawl, Google, Exalead, Bing, Yandex, MMailey, RManor

Members: 2
Guests: 53
Stats
Files
Topics
Posts
Members
Newest Member
451
3,638
19,005
38,583
HHakala
Today's Birthdays
There are no member birthdays today.
Related Links
Smaug Building Institute
» SmaugMuds.org » Codebases » SmaugFUSS » What makes Smaug, Smaug?
Forum Rules | Mark all | Recent Posts

What makes Smaug, Smaug?
< Newer Topic :: Older Topic >

Pages:<< prev 1 next >>
Post is unread #1 Nov 23, 2009, 1:05 pm
Go to the top of the page
Go to the bottom of the page

Quixadhal
Conjurer
GroupMembers
Posts377
JoinedMar 8, 2005

In a recent discussion, the idea of gradually moving SmaugFUSS towards using C++ features was brought up, and Samson rightly suggested that trying to do a full-out conversion would be the same order of work as building a new base that used Smaug's mechanics.

Of course, that got me to thinking..... exactly what IS it that would make a new codebase feel like Smaug?

We've come a long ways from 1992, and there are plenty of languages (ruby, python) which could power a MUD, and if you wanted to stay with C++, using the BOOST libraries would save a tremendous amount of time. So, how about it? What features, mechanics, etc., would need to be redone to make some nebulous new codebase (free of the Diku license) still feel like it were a Smaug MUD?
       
Post is unread #2 Nov 23, 2009, 1:13 pm
Go to the top of the page
Go to the bottom of the page

Kayle
Lurker
GroupAdministrators
Posts1,192
JoinedMar 21, 2006

A lot of things.

Although my views on Smaug (or any Dikurivative) have soured lately... Aside from the bad, I couldn't really put my finger much on what it is that makes Smaug what it is. I think I've really found myself more not caring about Smaug, and more interested in what I want Elysium to be.
       
Post is unread #3 Nov 23, 2009, 2:53 pm
Go to the top of the page
Go to the bottom of the page

David Haley
Sorcerer
GroupMembers
Posts903
JoinedJan 29, 2007

Everybody keeps talking about Boost, and there are some nice things there. What are the libraries that you consider absolutely essential and/or life changing? There's nifty stuff there, but I haven't seen something yet that I'd consider absolutely, completely amazingly helpful, although I'll be the first to admit that my experience is rather superficial so far.
       
Post is unread #4 Nov 23, 2009, 3:22 pm
Go to the top of the page
Go to the bottom of the page

Kayle
Lurker
GroupAdministrators
Posts1,192
JoinedMar 21, 2006

I don't get the fascination with boost either. I mean, sure, Boost.ASIO may be better written then the socket code that I wrote for Elysium. It may have more features. But I'd have to pour over documentation to understand those features. Meanwhile, I WROTE my Socket code. I already know what it does and how it works. I don't need to read any documentation because I /am/ the documentation. Sure, I might have reinvented the wheel a bit. But you know what. I'm far more familiar with Elysium's sockets code then I am with the Socket stuff for Smaug. And I like it that way. I like that level of understanding without having to browse through pages upon pages of documentation.
       
Post is unread #5 Nov 23, 2009, 3:51 pm
Go to the top of the page
Go to the bottom of the page

David Haley
Sorcerer
GroupMembers
Posts903
JoinedJan 29, 2007

What's driving me nuts about Boost so far is that (a) documentation is not very helpful, (b) things seem extremely complicated and don't let me do what I want to do. For example, there's a multi_array container that lets you store N-dimensional arrays. Great! But how do I generate iterators over individual elements?? There's a minmax algorithm that does single-pass min/max element finding for you. Great! But how do I get the data out of there without having to go through a bunch of template documentation to understand what the algorithm is actually returning? Ohhhh, you mean that it's not returning elements, but iterators... ok... so I have to individually dereference them... Wow, that's convenient. The result ends up being more code than my simple two-level for loop -- and the two-level for loop is trivial to understand, with two min/max statements in it, vs. this Boost stuff which after more than an hour is still magic (and unworking magic, at that).

I'm really getting turned off by this stuff, to be completely honest. Maybe I'm just grumpy because it's 1am, I'm tired, and not having success, but so far I'm not seeing the light.
       
Post is unread #6 Nov 23, 2009, 4:24 pm
Go to the top of the page
Go to the bottom of the page

Kayle
Lurker
GroupAdministrators
Posts1,192
JoinedMar 21, 2006

1 AM? Are you in France or something?
       
Post is unread #7 Nov 23, 2009, 4:25 pm   Last edited Dec 3, 2009, 1:05 pm by Samson
Go to the top of the page
Go to the bottom of the page

Samson
Black Hand
GroupAdministrators
Posts3,597
JoinedJan 1, 2002

I don't know a whole lot about Boost myself but what little I have seen of it seems overly complicated in nature. Oddly, a lot like much of the C++ code I've seen beyond MUDs :)

It really does beg the question - why is it that they seem to have crafted a language with the sole purpose of making everything you do with it so needlessly complex? Just looking at C++ code is often enough to scare people, yet these same people seem to have no trouble with Lua, Ruby, Python, etc. Even PHP is way easier to grasp. The only thing I've ever laid eyes on that's more worthlessly complex looking than C++ is Perl.

Kayle's apparently got the biggest obstacle to most new codebases done. Sockets. After that, it's just a matter of picking at what makes a Smaug a Smaug. That's pretty hard to quantify. Back when we first selected it for Alsherok, it was because Smaug had all the features we had on Crystal Shard, plus several we would have wanted to code anyway. OLC, mounts, non-hardcoded spells, that stuff. Things that most codebases these days consider trivial and aren't really unique.

I dunno, maybe forking a public version of Elysium would be the kickstart something like this needs?

And wait. 1am. Your post says 3 something pm.... :thinking:
       
Post is unread #8 Nov 23, 2009, 4:34 pm
Go to the top of the page
Go to the bottom of the page

Quixadhal
Conjurer
GroupMembers
Posts377
JoinedMar 8, 2005

Heh, ok, well, I'm not a big C++ fan anyways, but the appealing thing of boost's ASIO module isn't that it handles sockets, it's that it overloads them as stream objects. Thus, the same construct that streams data to the console, or to files, also can be used for sockets. Sure, you can do that yourself.. but why? Wheel.reinvent() has been called far too many times already.

Setting that aside, I'd probably pick either ruby or python if I were writing a new game from scratch. I guess it'd come down to which one was easier to embed (and sandbox) in itself, since it would be a plus to have your driver and scripting language be the same. Lua looks very nice for scripting, but it just feels a bit... weak? verbose? Not sure... it feels light for use in the whole driver for some reason. Maybe just my lack of experience with it.

So, can we come up with a list of Smaugisms?

Combat flow?
Spell-casting system?
weird random number functions with while loops? (just kidding)
       
Post is unread #9 Nov 23, 2009, 4:42 pm
Go to the top of the page
Go to the bottom of the page

David Haley
Sorcerer
GroupMembers
Posts903
JoinedJan 29, 2007

I've decided to basically ditch all but the basic multi_array of Boost -- I wasted two hours trying to use a library that is supposed to "simplify" things and make me more "productive". And while I eventually figured out, the resulting syntactical monstrosity really made me question why I should prefer that to my simple double-for-loop.

As I've said a few times on the MB forums, Lua isn't really appropriate for writing an entire application because its standard library is rather small, and while it allows you to create incredibly flexible and powerful OOP frameworks, well... you have to create those OOP frameworks before you can use any kind of objects in your programming.

I have to admit that after writing so much Lua and Python in recent times (Python mostly at work), I'm starting to have second thoughts about using C++ for my current project. A lot of my time so far has been spent fighting with C++ as a language (even though I am 'relatively' comfortable with C++). My main problem is that the graphics library I'm using is very biased toward C++ APIs. There's a Python API, but it requires a bunch of stuff that is hard to install.

I found a forum post that expresses my thoughts about a lot of Boost pretty well: great in theory, but often nasty in practice.

And yes, I'm in France at the moment. It's almost 2am for me now.
       
Post is unread #10 Nov 23, 2009, 4:43 pm
Go to the top of the page
Go to the bottom of the page

Kayle
Lurker
GroupAdministrators
Posts1,192
JoinedMar 21, 2006

Samson said:

Kayle's apparently got the biggest obstacle to most new codebases done. Sockets.

I wouldn't say they're done. THey work, but there's no form of validation or anything. Elysium as is is little more than an echo program. It takes your input and echoes it back. I've been distracted working on a project for the wife, and haven't had time to devote to Elysium in a while.

Samson said:

I dunno, maybe forking a public version of Elysium would be the kickstart something like this needs?

If it was more than it is, Maybe. But since it's nothing special, You could probably write something equivalent in Lua or Ruby in like an hour.
       
Post is unread #11 Nov 23, 2009, 8:21 pm
Go to the top of the page
Go to the bottom of the page

Hanaisse
Magician
GroupMembers
Posts196
JoinedNov 25, 2007

A little opinion from the newbie Admin.

I'm not a programmer by any means so I can't comment on the ins and outs of the code, or the 'mechanics' as you guys can. I also can't compare it to a lot of different code bases but I can comment on what I like (and don't like) about Smaug and what I haven't seen in other codes.

I went from a CircleMud to a Smaug mud and the very first thing I noticed, and what hooked me, was the colour. Seriously. My friend thinks it's 'too much' colour but the plus here is it's player programmable. Great feature.

(I should point out this is from an LoP perspective, as Remcon has done some wonderful additions to Smaug.)

I also like;
- the OLC (although I do prefer to build offline but can't anymore with FUSS/LOP.) It's simple enough to use and requires little training.
- easy online creation of virtually everything - commands, skill/spells, deities, races, classes, clans, councils
- full online admin control - such as multiplay limits, addition of and control of multiclassing, experience multiplier, important rooms, autosaving, channels
- hotboot
- pets
- the fact that it doesn't have 'rent' and you can quit anywhere and return in that spot
- aquest code
- player configurable options - autoloot, autosac (even just sacrificing itself I've never seen before) hints, compass, sparing, noinduct
- solo code
- code is easy for a newbie to learn/understand/modify - yep, even me.

Downsides;
- combat system is a little ... sluggish
- weather system is nice, but has no player impact
- there's another long thread here about effects needing a good overhaul

That's all I can think of for now.
       
Post is unread #12 Nov 23, 2009, 9:33 pm
Go to the top of the page
Go to the bottom of the page

Kayle
Lurker
GroupAdministrators
Posts1,192
JoinedMar 21, 2006

Hanaisse said:

- weather system is nice, but has no player impact


This is easily remedied if using my weather system. It takes minimal effort to add things so that weather effects things like a players ability to hit if it's raining too hard or whatever.
       
Post is unread #13 Nov 27, 2009, 11:45 pm
Go to the top of the page
Go to the bottom of the page

Tonitrus
Fledgling
GroupMembers
Posts47
JoinedJun 24, 2009

I think mostly what makes Smaug Smaug is the plethora of non-memorable commands that, once you get used to, makes everything else seem a bit alien.

If I had to list features:

OLC (as has been mentioned) (areas, skills, clans, deities, etc)
quaffspam (meh)
diku style combat
colors
SMAUGSPELLS

Basically, though, if you wanted to make a Smaug clone from scratch, I'd recommend copying the list of commands down and scrolling through them. A lot of stuff that's really easy to forget helps with the Smaug "feel".
       
Post is unread #14 Aug 9, 2010, 6:35 pm
Go to the top of the page
Go to the bottom of the page

sorressean
Fledgling
GroupMembers
Posts8
JoinedAug 2, 2010

I came across this post while I was scanning through the forums for interesting topics to read, and on the topic of Boost, I had to enlighten everyone with a quote.
"Using boost is like buying a jet just so you can sit outside and listen to the radio."
And that pretty much sums it all up. It does have some useful features, but when it comes down to it, it is almost easier in a lot of cases for a skilled coder to just write the features they want. Not only do your compile times stay relatively low, but your binary size doesn't suffer, either. I was using it for an engine I was working on a while back with some serialization, and with the variant class to support dynamic properties and serialization, my binary size was about 13MB with symbols, and a good 2.5 without, which I find rather odd.
It is nice, if you want to deal with the massive amount of templates, but it can be aa nightmare if you just want something quick.
       
Pages:<< prev 1 next >>

 
Contact Us