ID:157351
 
Ive been working on a game for quite sometime now and I have been trying to create a system that is multi-purpose for the game. It will reach every aspect of the game in some way or another. The system should run on the servers uptime, so everything runs smoothly and the time line can be perserved without players having an issue as they join the game.

The system should work something like this.

In game time will be determined by real time using the servers up time. As long as the server is open, the ingame time will continue to pass. If it closes the server time will stop until the server is opened again and it will continue where it left off. This will work into the aging system.

By my calculations, if 1 minute in real life was equal to 1 day in game time then an avergae ingame life (A span of 80 years) would be 20.7 days. (Thats from 10-90 years old). I want these two systems to intertwine because I'd like everyone in the game to be on the same time. Running on the same amount of years. So when people come into the game for the first time, they start off as children instead of adults with the rest of the game. I also wanted this to work with the death system for this reason as well.

The death system would work like this, As a character gets older (Depending on there race) they will eventually end up growing old and dying. For humans it was the example above of the 10-90 years. Which would give a character about 20 days to make their character, and to develop them as a person before either they died or found a way around death. (This will work with another system of reincarnation that id like to work on as well, but that will come later) I want this tied into all of those other systems, because I know how some plyers dont play consistently, This being said, id like for the server time to solve that problem. If a player decided not to play for a few days or weeks even, there character will still age and will reach that age when they log back on, if they stay off too long then there character will die (again based on there characters race).

Of course, this would all tie in with an aging system. After the first 3 years you will leave your childhood behind and your old child icon, for a new teenage icon, then when you turn 20 you will gain an adult icon, and at 60 an elderly icon (again based on the race) this is for a more realistic touch. Instead of the people lasting forever, there is a set timeline and a continued story as that can be followed and observed by all who play.

All of this will come together of course to help with the unlocking of skills, the way I figured this would work, is that inorder to unlock the skills that you want, your character needs to be in the game for so many ingame days. This way players cant just log off for a few days and then expect to have there skills and abilities handed to them.

All of these elements would be working together to create an interesting and powerful game. With all of the other ingame systems and the mapping/iconning that went into the games creation, i think that it would make for a wonderful and decent and fascinating game.

I however am not experienced enough as a coder to make such a system. Unless there are libraries or demo's that I missed, Would anyone be willing to show me how to make such a system. Or better yet, work with me to create it, that way I can learn how to do it myself and gain a deeper understanding of how the system works? I dont know if i can offer some form of payment compensation, but if I can i will try. Other wise, if there is any other compensation you want for you time we can try to work something out. If not, id love the help greatly, and I am sure that the experince will help me to become a better programmer as well. =]

You can either respond here, or you can message me on my Instant Messengers

AIM = Moussiffer8
MSN = [email protected]
Yahoo/Yahoo!IM = [email protected]
Still looking for help got an interesting start, but still needs to finish this.
In response to Moussiffer
You are not likely to get much help because you are asking for far too much.
In response to Garthor
Well Im not asking for it to be done for me. I am asking however for someone to help me complete it. Or atleast work with me little by little to make it work out. Or to show me a basic outline of how to go about doing such a thing like showing me library and demos if there are any etc. Although if someone where willing to do it for me i wouldnt complain. ;P
In response to Moussiffer
Each player should have a loop which ticks every minute or so and adds some amount to their age. Like so:

mob
var/age
proc/ageloop()
while(src)
sleep(600)
age++

// Calling ageloop() on Login() as it is only relevant for players
Login()
spawn() ageloop()
..()


Then, just have it do the things you want it to do.
In response to Garthor
Well i was chatting with Loduwijk yesterday and he sugges
ted something more similiar to this

var/gameTime/gametime
world/New()
if(fexists("gametime.sav"))
var/savefile/S = new("gametime.sav")
S >> gametime
else
gametime = new
..()

world/Del()
if(gametime)
var/savefile/S = new("gametime.sav")
S << gametime

gameTime
var
initialTime = 0
tmp/lastRealtimeSync = 0
tmp/const/startYear = 2250

New()
lastRealtimeSync = world.realtime

Write()
update()
..()

proc/update()
initialTime = gameTime()
lastRealtimeSync = world.realtime

proc/gametime()
return initialTime + world.realtime - lastRealtimeSync

proc/asText(timestamp, format)
// if only 1 argument, it's format, and timestamp is gametime()
if(format == null)
format = timestamp
timestamp = gametime()
return time2text(realtimeStamp(), format)

proc/timeDifference(timestamp, format)
return text2num(time2text(realtimeStamp(), format)) - text2num(time2text(realtimeStamp(timestamp), format))

proc/realtimeStamp(timestamp)
if(timestamp == null)
timestamp = gametime()
return timestamp + (startYear-2000)*365*24*36000)


Which made some sense to me, but im a new programmer and so not all of it was reaching me clearly. Lol. He has worked with me on a few things in the past and has helped me out alot, sometimes im just slow on the intake. I tried using this code but ended up getting errors

Mygame.dme:105:error: end of file reached inside of comment
Server_Time.dm:1: beginning of comment

Mygame.dmb - 1 error, 0 warnings (double-click on an error to jump to it)

Not sure whats the issue. At first it was just an inconsistant indentation errors... I thought i fixed them but then i got these errors.
In response to Moussiffer
Oh right, yeah. That handles server time, I was showing you how to do aging or whatever.

The error you're getting would be a result of the first line of your file there being an opening comment /* without a matching closing comment. It should be hard to miss because it'd make all the text in the file gray.
In response to Garthor
Right, I fixed that. So with this piece that you were showing me. How exactly would it help me with the aging aspect of what I was looking to do. Agin, im not just looking to be given the answer, I am looking for help to solve the problem so that I can understand programming better, and also, be able to work on this piece with confidence that ill be able to make it work. I want this to work for my game regardless, but I want to be able to fix or add to my game on my own, and to do that I need to learn. I learn faster when someone is explaining to me what to do, and why i need to do it that way. =] I know its alot, and probably very time consuming to those helpign me, but alot of people are just looking for an easy answer, I want to learn how to do this for myself so one day I might be able to show people, and if nothing else, ill atleast be able to make a decent game. :P
In response to Moussiffer
If you want something to occur every X amount of time, you need to use a loop like I've shown. What that something is, exactly, is immaterial.