your links seem to have a extra http thing going on lol.
just thought id tell you
EDIT: my god ... its actually rather amazing, even if i don't get to use a interface lol, i may have killed a unit without even knowing it till recently :)
also the fps seems to be .... too high or too low.... and i cant get my guy to go stay a z level lower becuse of it lol... but must say so far great work ... if i can help just tell me,
might want to get me to add you on discord or something tho... im not on here very often
How do I get an account to try this thing? Do I just ask you like below?Oh just try logging in. If that account does not exist, it just creates a new one.
Hey Warmist, will you make an account for me to see what this is and check it out?
Good but laggy. Maybe someday we will get something like this but with a pocket world. Even mid-grade computers will slow down to a crawl with that though, probably.Actually i lowered fps so you could see what is happening. The other thing why it might look laggy is that the way i control creatures does not always work...
talk about fast progress lol :)Yeah it crashed. Not sure why though. Will need to investigate
keep up the good work and godspeed
shame you dont use discord tho >.<
EDIT : i just played for about 2 min or so ... then it seems it froze or my unit stopped responding to my mouse clicks :/
I'm able to move a single tile using mouse clicks, then it's unresponsive. Help.Just crashed :) but now it should be back up and hopefully fixed that bug.
I keep spawning as an aardvark.Sorry. Fixed :)
I keep spawning as an aardvark.Sorry. Fixed :)
Heh. Done.I keep spawning as an aardvark.Sorry. Fixed :)
Maybe add an aardvark race just to commemorate this bug.
Hmm. I can't attack dwarves as a night creature for some reason.Ah... the conflict level was set to brawl. So that explains the fight strangeness.
What I meant is how did he accomplish that? For the better part of a decade people have been posting suggestions to make the game multiplayer, only to be rebutted with replies on the lines of 'it's impossible', 'games have to be built from the ground up for this to work', 'it would require years of work and rewriting', and so on. So to say I'm surprised that someone just shows up and drops a couple scripts that make it possible is an understatement. Actually I'm even more astonished by the lack of surprise from the community, as if it were as mundane an accomplishment as editing the init files. Given how long the topic has been discussed, you'd expect dozens of people to show up and crash the server in amazement and the thread itself to be flooded, but current response is being rather lukewarm.Hehehehe....
Of course I understand it took you a long time, it's just the casual way the whole thing sounded like me::D
Warmist: "Oh by the way, I just made this thing that lets you do something that's been asked for 11 years, thought you could use it"
Community: "Meh"
As for reception: yeah i expected more of fights and disbelief. My guesses are that:
- not a lot of people come to this part of forum (or forums in general)
- Those who try are discouraged by lack of features and/or bugs
- Currently not a lot people are playing DF as it's in "NEAR RELEASE" state
- other....
Weren't people mostly asking for a way to play fortress mode with multiple players (along with another set of folk asking for better ways to share fortresses)? This seems to be neither (but realistically it's probably the best way to enjoy dwarf fortress multiplayer).Well this was the easiest way to do it. If somebody comes along and reimplements all the screens then you could control fort just like in normal DF
With a better computer, Warmist could do this in an actual pocket world and not in the arena. That would be cool with more players.Actually my computer is almost top of the line :P
Could always just have the given unit be customizable (name, job) and have their labors or maybe even squads set for fort mode.Yeah my old version had: name, labors (i.e. what jobs you could do) and assign and remove from burrows. This allowed was more for the way people play where they name their dwarf in community fort.
What about running a fort mode fort then allowing pleyers to take control of a dorf, do jobs, fight, etc? Just make sure they don't go on a killing spree and cause a loyalty cascade.That is in the plans. I was thinking of two choices (for server): either let dwarf "start" jobs on their own (more work for me though). That way you could go to a workshop (or construct your own) and make yourself a battleaxe. Or just allow working on available jobs. Maybe suspended too (less work for me). This way would better integrate with vanilla job management.
What about running a fort mode fort then allowing pleyers to take control of a dorf, do jobs, fight, etc? Just make sure they don't go on a killing spree and cause a loyalty cascade.That is in the plans. I was thinking of two choices (for server): either let dwarf "start" jobs on their own (more work for me though). That way you could go to a workshop (or construct your own) and make yourself a battleaxe. Or just allow working on available jobs. Maybe suspended too (less work for me). This way would better integrate with vanilla job management.
I think i'll post approximate roadmap in the first post.
Could you please make it so that you KNOW what you pick up? Currently, you just hope it's a weapon, not a bolt or something.
Hey! You have infringed the rightful intellectual property of "Toady One" (Tarn Adams), by repeating a phrase "Toady" owns without any credit!Could you please make it so that you KNOW what you pick up? Currently, you just hope it's a weapon, not a bolt or something.
Or kobolt :D (which your unit equips as a weapon btw).
Sure. Soon (tm)...
So, I have an idea for fort mode. The players can control any dwarf, otherwise they're controlled by df-ai (google it up), or someone with the admin permission (Warmist and I, maybe?), You can dig as a dwarf, do jobs, and arena-style fight. Trading is done by any dorf. Add a minimap of the fort so we don't get lost.
What do you think?
Also used by Valve and HalfLife3 :PHey! You have infringed the rightful intellectual property of "Toady One" (Tarn Adams), by repeating a phrase "Toady" owns without any credit!Could you please make it so that you KNOW what you pick up? Currently, you just hope it's a weapon, not a bolt or something.
Or kobolt :D (which your unit equips as a weapon btw).
Sure. Soon (tm)...
Valves copyright has ran out. They didn't bother to renew it, so Toady snapped it up.Also used by Valve and HalfLife3 :PHey! You have infringed the rightful intellectual property of "Toady One" (Tarn Adams), by repeating a phrase "Toady" owns without any credit!Could you please make it so that you KNOW what you pick up? Currently, you just hope it's a weapon, not a bolt or something.
Or kobolt :D (which your unit equips as a weapon btw).
Sure. Soon (tm)...
With next version, I expect there's more interest in multiple concurrent forts in the same world as well.I think it would have to wait until alternate dimensions are implemented. We can't have multiple areas loaded simultaneously yet.
Exhaustion seems to be the number one cause of death. The second you regain consciousness, you fall right back under again trying to avoid the enemy's attack. Worse when you're surrounded by multiple respawning kobolds. (Werebeast handles them easily, however, due to no exhaustion.)I was thinking of making DOTA with two teams and a dragon as the "castle". However to be fun it needs more players to actually play.
Maybe you could add spawn points for unique single enemies in a few locations? It's really difficult once all the kobolds end up clustered.
Is it currently always offline??
What I meant is how did he accomplish that? For the better part of a decade people have been posting suggestions to make the game multiplayer, only to be rebutted with replies on the lines of 'it's impossible', 'games have to be built from the ground up for this to work', 'it would require years of work and rewriting', and so on. So to say I'm surprised that someone just shows up and drops a couple scripts that make it possible is an understatement.
What I meant is how did he accomplish that? For the better part of a decade people have been posting suggestions to make the game multiplayer, only to be rebutted with replies on the lines of 'it's impossible', 'games have to be built from the ground up for this to work', 'it would require years of work and rewriting', and so on. So to say I'm surprised that someone just shows up and drops a couple scripts that make it possible is an understatement.
They were talking about something completely different. What people were saying was "impossible" was each person running their own actual copy of Dwarf Fortress fortress mode, running an entire fortress yourself, but all the fortresses being part of the same "world" somehow, e.g. able to send armies to other player's fortresses, or being able to switch into adventure mode and go visit someone else's running fortress. This is what they were refering to, and it is what is still impossible for all practical purposes.
What I meant is how did he accomplish that? For the better part of a decade people have been posting suggestions to make the game multiplayer, only to be rebutted with replies on the lines of 'it's impossible', 'games have to be built from the ground up for this to work', 'it would require years of work and rewriting', and so on. So to say I'm surprised that someone just shows up and drops a couple scripts that make it possible is an understatement.
They were talking about something completely different. What people were saying was "impossible" was each person running their own actual copy of Dwarf Fortress fortress mode, running an entire fortress yourself, but all the fortresses being part of the same "world" somehow, e.g. able to send armies to other player's fortresses, or being able to switch into adventure mode and go visit someone else's running fortress. This is what they were refering to, and it is what is still impossible for all practical purposes.
The adventure mode thing basically is, but sending armies around doesn't sound untenable to me as long as it's done abstractly enough.
What I meant is how did he accomplish that? For the better part of a decade people have been posting suggestions to make the game multiplayer, only to be rebutted with replies on the lines of 'it's impossible', 'games have to be built from the ground up for this to work', 'it would require years of work and rewriting', and so on. So to say I'm surprised that someone just shows up and drops a couple scripts that make it possible is an understatement.
They were talking about something completely different. What people were saying was "impossible" was each person running their own actual copy of Dwarf Fortress fortress mode, running an entire fortress yourself, but all the fortresses being part of the same "world" somehow, e.g. able to send armies to other player's fortresses, or being able to switch into adventure mode and go visit someone else's running fortress. This is what they were refering to, and it is what is still impossible for all practical purposes.
The adventure mode thing basically is, but sending armies around doesn't sound untenable to me as long as it's done abstractly enough.
Well it could be possible if you lift units completely out of one game and basically e-mail them to another game. But it wouldn't be tracked in-game. e.g. the worlds themselves would be divergent since they're running on different machines. Also things like FPS wouldn't be consistent, since one player pauses the game while designating. If a whole season whizzes past in one player's game, and an army is sent out, then when should it arrive on the other machine. What if I sent an army in Spring, yet I had paused the game and you didn't, so you're already in Fall? The army "should" arrive in Winter, yet you've already had your winter yet no enemy army turned up.
Basically, the idea of syncing diverse copies of DF isn't viable.
That forking idea is interesting partial solution to the pausing problem. Obvious sticking point is stuff like world divergences outside of sites, be it through wars or by visitors who would visit any player fortress in year x (thus causing a conflict if they die in one fort and live in other). Might be only possible in DF2012, given that.
Generating/sending armies via unit deletion/creation scripts seem like they should be possible, however.
Regarding fog of war, a naive probably-impossible idea you probs already thought of is to maintain all the viewcones in memory at once. I recall that Toady dreams of whole world being loaded to the depth of fortress/adventurer direct interaction, but such is not possible at current time. A "low scale" upgrade to arena mode might be perhaps to use hacking to create 3x3 world and then embark anywhere over the whole world (stick a vampire in a off-map cage or something to avoid fort death.), but I don't know if the npcs and army formation would behave correctly (and the fps would probably be in single digits on embark, whats with the 9x 16x16 embark area.)
I'm told it to my comrads from russian forums... Wahahaa)
is it possible to say do a bar performer mode where players try to rack in approval points from the crowd by performing?Close to impossible. I.e. would need a LOT of work.
Would it be possible to improve the combat system? Currently it just uses the default AI, but maybe in the future you could hack their targeting to make them use certain attacks?
Would it be possible to improve the combat system? Currently it just uses the default AI, but maybe in the future you could hack their targeting to make them use certain attacks?
Yes, absolutely
hmm wonder if it possible to code to set sparring to increase tiredness on hit than from sparring someone.
-- A few events for modding.
--[[
The eventTypes table describes what event types there are. Activation is done like so:
enableEvent(eventTypes.ON_RELATIONSHIP_UPDATE,1)
]]
onUnitAction=onUnitAction or dfhack.event.new()
local actions_already_checked=actions_already_checked or {}
things_to_do_every_action=things_to_do_every_action or {}
actions_to_be_ignored_forever=actions_to_be_ignored_forever or {}
local function checkForActions()
for _,something_to_do_to_every_action in pairs(things_to_do_every_action) do
something_to_do_to_every_action[5]=something_to_do_to_every_action[5]+1 or 0
end
for k,unit in ipairs(df.global.world.units.active) do
local unit_id=unit.id
actions_already_checked[unit_id]=actions_already_checked[unit_id] or {}
local unit_action_checked=actions_already_checked[unit_id]
for _,action in ipairs(unit.actions) do
local action_id=action.id
if action.type~=-1 then
for kk,something_to_do_to_every_action in pairs(things_to_do_every_action) do
if something_to_do_to_every_action[1] then
if something_to_do_to_every_action[5]>1 or (unit_id==something_to_do_to_every_action[3] and action_id==something_to_do_to_every_action[4]) then
things_to_do_every_action[kk]=nil
else
something_to_do_to_every_action[1](unit_id,action,table.unpack(something_to_do_to_every_action[2]))
end
end
end
if not unit_action_checked[action_id] then
onUnitAction(unit_id,action)
unit_action_checked[action_id]=true
end
end
end
end
end
function doSomethingToEveryActionNextTick(unit_id,action_id,func,func_args) --func is thing to do, unit_id and action_id represent the action that gave the "order"
actions_to_be_ignored_forever[unit_id]=actions_to_be_ignored_forever[unit_id] or {}
if not actions_to_be_ignored_forever[unit_id][action_id] then
table.insert(things_to_do_every_action,{func,func_args,unit_id,action_id,0})
end
actions_to_be_ignored_forever[unit_id][action_id]=true
end
onRelationshipUpdate=onRelationshipUpdate or dfhack.event.new()
current_relations_checked=current_relations_checked or {}
local function checkRelationshipUpdates()
for k,v in ipairs(df.global.world.units.active) do
local histfig=df.historical_figure.find(v.hist_figure_id)
if not histfig or not histfig.info or not histfig.info.relationships then return end
current_relations_checked[v.hist_figure_id]=current_relations_checked[v.hist_figure_id] or {}
for kk,relationship in ipairs(histfig.info.relationships.list) do
current_relations_checked[v.hist_figure_id][relationship.histfig_id]=current_relations_checked[v.hist_figure_id][relationship.histfig_id] or {}
local thisHistFigRelations=current_relations_checked[v.hist_figure_id][relationship.histfig_id]
for relation_type_index,relation_type in ipairs(relationship.anon_3) do
thisHistFigRelations[relation_type]=thisHistFigRelations[relation_type] or relationship.anon_4[relation_type_index]
if thisHistFigRelations[relation_type]~=relationship.anon_4[relation_type_index] then
onRelationshipUpdate(v.hist_figure_id,relationship.histfig_id,relation_type,thisHistFigRelations[relation_type],relationship.anon_4[relation_type_index])
--onRelationshipUpdate.example=function(histfig1_id,histfig2_id,relationship_type,old_value,new_value)
thisHistFigRelations[relation_type]=relationship.anon_4[relation_type_index]
end
end
end
end
end
local df_date={}
df_date.__eq=function(date1,date2)
return date1.year==date2.year and date1.year_tick==date2.year_tick
end
df_date.__lt=function(date1,date2)
if date1.year<date2.year then return true end
if date1.year>date2.year then return false end
if date1.year==date2.year then
return date1.year_tick<date2.year_tick
end
end
df_date.__le=function(date1,date2)
if date1.year<date2.year then return true end
if date1.year>date2.year then return false end
if date1.year==date2.year then
return date1.year_tick<=date2.year_tick
end
end
onEmotion=onEmotion or dfhack.event.new()
last_check_time=last_check_time or {year=df.global.cur_year,year_tick=df.global.cur_year_tick}
setmetatable(last_check_time,df_date)
local function checkEmotions()
for k,unit in ipairs(df.global.world.units.active) do
if unit.status.current_soul then
for _,emotion in ipairs(unit.status.current_soul.personality.emotions) do
local emotion_date={year=emotion.year,year_tick=emotion.year_tick}
setmetatable(emotion_date,df_date)
if emotion_date>=last_check_time then
onEmotion(unit,emotion)
end
end
end
end
last_check_time.year=df.global.cur_year
last_check_time.year_tick=df.global.cur_year_tick
end
eventTypes={
ON_RELATIONSHIP_UPDATE={name='relationCheck',func=checkRelationshipUpdates},
ON_ACTION={name='onAction',func=checkForActions},
ON_EMOTION={name='onEmotion',func=checkEmotions}
}
function enableEvent(event,ticks)
ticks=ticks or 1
require('repeat-util').scheduleUnlessAlreadyScheduled(event.name,ticks,'ticks',event.func)
end
function disableEvent(event)
require('repeat-util').cancel(event.name)
end
I don't know if posting here counts as necro-ing a thread but wanted to see if this is still a thing and perhaps how I could set this up and host it for some friends and I to play.
https://github.com/warmist/df_multiplayI don't know if posting here counts as necro-ing a thread but wanted to see if this is still a thing and perhaps how I could set this up and host it for some friends and I to play.
Only Warmist has the code. Fortmode is being developed. Or so I sincerely hope.
https://github.com/warmist/df_multiplayI don't know if posting here counts as necro-ing a thread but wanted to see if this is still a thing and perhaps how I could set this up and host it for some friends and I to play.
Only Warmist has the code. Fortmode is being developed. Or so I sincerely hope.
Just to update people on what is happening: i've accidentally remembered that i've done the rendermax so i've been experimenting with running light calculations on opencl for the last week, but i'm thinking of this too.Also people that understand some dfhack-ines everything you need (without compilation) on windows is in first post.
you can add "many just /dl the LNP and play without ever reading a thing on the forums" to the list.What I meant is how did he accomplish that? For the better part of a decade people have been posting suggestions to make the game multiplayer, only to be rebutted with replies on the lines of 'it's impossible', 'games have to be built from the ground up for this to work', 'it would require years of work and rewriting', and so on. So to say I'm surprised that someone just shows up and drops a couple scripts that make it possible is an understatement. Actually I'm even more astonished by the lack of surprise from the community, as if it were as mundane an accomplishment as editing the init files. Given how long the topic has been discussed, you'd expect dozens of people to show up and crash the server in amazement and the thread itself to be flooded, but current response is being rather lukewarm.Hehehehe....
It's not that i've "just shows up and drops a couple scripts". This took me a LOOONG time. Mostly hacking and kicking code around. Biggest change was mifki's code which uses render_map function. I've just made it so you could use it from lua. The rest of stuff is cobbled together http server (which is actually not very sane thing to do...)
As for reception: yeah i expected more of fights and disbelief. My guesses are that:
- not a lot of people come to this part of forum (or forums in general)
- Those who try are discouraged by lack of features and/or bugs
- Currently not a lot people are playing DF as it's in "NEAR RELEASE" state
- other....
Ah... sad: current dfhack has some bugs, one of them makes it so i can't track kills thus no money -.-What specifically is the issue? Is it something that hasn't been fixed on the develop branch?
https://github.com/DFHack/df-structures/issues/234Ah... sad: current dfhack has some bugs, one of them makes it so i can't track kills thus no money -.-What specifically is the issue? Is it something that hasn't been fixed on the develop branch?
alright so i don't have even a tiny idea of what im doing.... but how would i go about hosting this or using this?
if you don't want me hosting or using it then just let me know lol, as i said i don't know what im doing atm when it comes to all this code etc.... and ill delete the fork if you want lol. kinda made it on accident since i don't use github at all yet >.<
thanks man, i appreciate it a lot :)Okay done. First post updated with instructions.
hmmm, how hard would it be to save a players gold inbetween hostings, so for instance if i host and then shut the game down, when i host again the player's account and money seems to delete itself or something?
i have a feeling it maybe is a simple fix? and if needed i might be able to do it myself?
i can confirm that shutting down the server with the "http/server2 -s" command indeed saves the needed stuff :) thanks againYeah probably some auto-save is needed to be done periodically so we dont crash too much and many random small stuff for easier mods for hosters.