Topic: [MOD] OpenFNG (updated and maintained again)
Hi again.
As OpenFNG seems to be actually played, and as it has evolved quite a bit, since its first launch, now a more thorough explanation of the game, rationale behind what is different to original fng, and goals for the future.
-------------------SNIP-------------------
Stuff/links for the impatient
Problems/issues/discussion: https://github.com/fstd/teeworlds/issues
Latest source code: https://github.com/fstd/teeworlds/tree/openfng
Standard maps: https://github.com/fstd/teeworlds/tree/ … /data/maps
Entities: https://github.com/fstd/teeworlds/tree/ … tities.png
Win32 server binary: https://github.com/fstd/teeworlds/blob/ … p?raw=true
Win32 client binary (optional): https://github.com/fstd/teeworlds/blob/ … p?raw=true
Linux 32bit server binary: https://github.com/fstd/teeworlds/blob/ … z?raw=true
Linux 64bit server binary: https://github.com/fstd/teeworlds/blob/ … z?raw=true
Config: https://github.com/fstd/teeworlds/blob/ … penfng.cfg
It's recommended to compile from source instead of using precompiled binaries!
-------------------SNAP-------------------
Abstract
OpenFNG is (obviously) a TW modification, which started as a free clone of the fng mod which was pretty popular in the 0.5 days.
It has seen life due to apparently nobody bothering to port fng to 0.6.
The reason for not porting, but rewriting from scratch was mostly that fng appeard to be written in python, with some c++/python glue. Not very much what i like.
Due to being rewritten from scratch, you will notice it behaves not always exactly as original fng did, usually with good reason;)
Platform support
OpenFNG should always properly build on unixlike systems, and i will try to keep it compilable for windows too.
In particular, i can only guarantee it to build properly on FreeBSD, however this usually means it builds on linux (and probably osx) as well.
I will occasionally ask people to see whether the windows build is broken, and if so fix it + update win32 binaries.
Whenever i break the build on some particular platform, let me know on IRC or on https://github.com/fstd/teeworlds/issues. Thanks.
Gameplay
Gameplay is quite simple to explain.
OpenFNG is a red/blue teamgame, where the only weapons usually in use (and given on spawn) are hammer and laser. Other weapons *may* be also provided, but are not required for gameplay.
Neither of the weapons will deal any damage.
The laser rifle is special in that it will freeze an enemy who is hit by a laser beam, usually for 10 seconds. A frozen tee is unable to move/hook/shoot/hammer and usually has to wait out the 10 seconds, but this can be shortened with a teammate hammering a frozen tee. This will subtract some time from the timespan the teammate is frozen.
The hammer is special in that it is slightly more powerful as in vanilla, except for when hammering frozen teammates (to melt them), where it will inflict much less force in order to make it easier to melt teammates (as this usually requires 2-3 hammer hits).
Said this about weapons, the main objective of the game is to gain teamscore, and this is mainly done by sacrificing frozen enemies in shrines.
There are three kinds of shrines, one which allows sacrification of any frozen tee, and red/blue shrines where only the team of matching color is allowed to sacrifice enemies in.
Usually (though adjustable) the scoring will look like this:
Sacrificing an enemy: +3 player score / +10 team score
Freezing an enemy: +1 player score / +1 team score
Melting a teammate: +1 player score / +0 team score
(Note that you cannot suicide or switch teams/spectate while being frozen, and forcefully leaving the game while being frozen might lead to an automatic ban for 1 minute or so, to prevent people from exploiting this unfair way to circumvent being sacrificed)
Standard maps
I so far have turned three vanilla standard maps, ctf3-5 into similar openfng maps (openfng3-5), credits obviously go to whoever made those awesome ctf maps and graphics.
Due to some compatibility entities, the mod also directly supports original fng maps.
If someone has nice maps which will also do as standard maps, let me know please.
Entities
while you in theory could use fng entities, it is strongly to use the openfng entities for newly designed/transformed maps.
they can be found here: https://github.com/fstd/teeworlds/blob/ … tities.png
There are two new entities, which are merely markers. they indicate the positions of static teamscore displays, see openfng3.map for an example. there can only be max 3 teamscore displays per team on a map, however, putting only 1 per team is recommended.
Binaries
it is recommended to compile the mod from source.
However, for convenience, a win32 and a linux binary have been added to the git repo.
These do not necessarily always reflect the latest version. Wherever possible, build from source.
Client
OpenFNG can of course be played with the vanilla client.
However, if you want client-side freeze prediction (i.e. to get rid of prediction errors when being frozen), you can build the client target in order to get a correctly predicting client. In any other aspect, that client will always reflect the latest vanilla client. There is also a win32 client binary provided for moar convenience.
Thunderbird
I did not add the thunderbird as that feature was random and shitty (IMO).
I however see that some special feature would be nice, so people are invited to join a discussion on https://github.com/fstd/teeworlds/issues in order to talk about what that should be.
It should not be inherently random, as this violates a golden rule of teeworlds.
(I thought about maybe introducing something which gets triggered when an entire team is frozen)
Other differences to fng
Not implemented for being redundant: armor and 'clock' ticks indicating melting progress - the damage indicators already do
Implemented for being missing in fng: also individual score for sacrificing (as a consequence of the adjustability of the scoring system)
Not implemented for being shitty: full-automatic hammer will definitely not be a feature of OpenFNG
Generalized: broadcasts can also be triggered for melting or freezing, not only for sacrificing
Generalized: fully adjustable score/teamscore gains for freeze/melt/sacrifice
Added for being cute: greyfox's emotional tees as many know and love from ddrace
Added for looking cool and giving hints on scooring: plasma text displays when scoring, and also static score displays
Generalized: now in theory other weapons could be placed on maps, if sv_suppress_entities is set to zero. one would have unlimited ammo and no weapon would deal damage. probably not useful for good fng play, although some might wanna test it
Sanitized: the game is not longer written in python.
...actually i haven't played fng that much to know about every difference. probably quite some moar.
Future
Some features are planned. Always see https://github.com/fstd/teeworlds/issues for whats going on.
For instance, there will be a punishment for sacrificing in a shrine of the enemy team, because obviously the gods will not be pleased with it;)
Furthermore, some replacement for the thunderbird will probably be introduced
Server configuration
An example, reference configuration is provided on github: https://github.com/fstd/teeworlds/blob/ … penfng.cfg
Here, for completeness:
# OpenFNG - Reference configuration.
#
# Except for sv_name, sv_port and sv_rcon_password, this configuration
# reflects the one used on the OpenFNG Reference Server
#
# It should provide a good configuration to start with.
# --------- Part 1: Vanilla Settings ---------
# <OpenFNG> i do NOT want to be called 'Open FreezeNG'. My name is OpenFNG.
sv_name "Yet Another OpenFNG Server"
sv_port 8309
# make sure to not pass around this one
sv_rcon_password "mysecretpassword"
# full-action server
sv_register 1
sv_max_clients 16
sv_spectator_slots 0
# move inactive ppl to spec after 5 minutes
sv_inactivekick 0
sv_inactivekick_time 5
# round ends at teamscore 700 or when one hour passed, whichever comes first
sv_timelimit 60
sv_scorelimit 700
# map cycles through our standard maps starting with openfng5
sv_map "openfng5"
sv_maprotation "openfng4 openfng3 openfng5"
sv_rounds_per_map 1
# disallow kickvote as ppl tend to abuse it
sv_vote_kick 0
#add some votes
add_vote "map openfng3" "sv_map openfng3"
add_vote "map openfng4" "sv_map openfng4"
add_vote "map openfng5" "sv_map openfng5"
add_vote "1 round per map" "sv_rounds_per_map 1"
add_vote "2 round per map" "sv_rounds_per_map 2"
add_vote "3 round per map" "sv_rounds_per_map 3"
# --------- Part 2: (Complete set of) OpenFNG-introduced settings ---------
# ----- Basic Settings -----
# freeze for 10 seconds when hit by laz0r
tune laser_damage 10
# hammering a frozen teammate takes 3 seconds from his remaining freeze time
sv_hammer_melt 3
# freezing an enemy will give +1 player- and +1 teamscore
# sacrificing will give +3 to the sacrificing player and +10 to his team
# sacrificing in a shrine of your enemy's color will take -5 / -1 from p/t
# melting a frozen teammate by hammer will give +1, but no teamscore
sv_freeze_score 1
sv_freeze_teamscore 1
sv_sacr_score 3
sv_sacr_teamscore 5
sv_wrong_sacr_score -5
sv_wrong_sacr_teamscore -2
sv_right_sacr_score 5
sv_right_sacr_teamscore 10
sv_melt_score 1
sv_melt_teamscore 0
# display plasma texts indicating player score gains when freezing, melting
# by hammer and sacrificing
sv_sacr_loltext 1
sv_freeze_loltext 1
sv_melt_loltext 1
# display a broadcast only when sacrificing
sv_sacr_broadcast 1
sv_freeze_broadcast 0
sv_melt_broadcast 0
# play global ctf flag capture sound when someone is sacrificed.
# (0 would be no sound whereas 2 would be a local sound)
sv_sacr_sound 1
# make a tee 'bleed' when frozen
sv_bleed_on_freeze 1
# allow shooting through frozen tees and teammates
sv_laser_skip_frozen 1
sv_laser_skip_teammates 1
# display 'all your base' to indicate the game is coming to an end, as soon
# as there is only 30 score left to gain for a team in order to win
sv_all_your_base 30
sv_all_your_base_msg "ALL YOUR BASE ARE BELONG TO US"
# freeze for 6 seconds when sacrificing in wrong colored shrine
sv_punish_wrong_sacr 6
# ----- Advanced Settings -----
# Don't change these unless you know what you are doing.
# after having molten up yourself, be unfreezable for 20 ticks (around 0.4s)
# this gives the same as the auto-jump in original fng, but without
# enforcing a potentially counterproductive jump.
sv_melt_safeticks 20
# for enemies and unfrozen teammates, adjust hammer power to 320% in x-
# and 120% of vanillas power in y-direction so that we get something like
# a fnglike hammer.
sv_hammer_scale_x 320
sv_hammer_scale_y 120
# for frozen buddies, as we don't want to kick them away too far while
# melting them, we scale down the hammer power to 50% of vanilla strength
sv_melt_hammer_scale_x 50
sv_melt_hammer_scale_y 50
# allow one emoticon every 2 seconds (do not set to 0)
sv_emoticon_delay 2
# make hooking count as interaction only when hooking for longer than 15
# ticks. this avoids noobs scoring by spamming their hooks down a shrine
sv_hook_register_delay 15
# forcefully prevent any entities (like weapons, armor, flags) from spawning
# a good map should not need this setting to be enabled. still it can't hurt
sv_suppress_entities 1
# allow broadcasts to be sent (for instance for scoring)
# default broadcast lifespan is 3 seconds
sv_broadcasts 1
sv_broadcast_time 3
# these two control the size of loltexts, 14 seems to be a good value
sv_loltext_hspace 14
sv_loltext_vspace 14
# auto-mute on chat spam.
# chat penalty is 250 per message (-1 on each tick)
# if it exceeds 1000, we mute the spammer for 60 seconds
sv_chat_penalty 250
sv_chat_threshold 1000
sv_spam_mute_duration 60
# teh cute!
sv_emotional_tees 1
# ban for 30 seconds then someone leaves while being frozen
sv_punish_ragequit 30
# for now we leave the freeze hammer off:
sv_hammer_freeze 0
# start vote on map extending when there is only 60 seconds left to play, or
# 50 score left to gain, whichever comes first
sv_endvote_time 60
sv_endvote_score 50
# don't change these at all.
# no, really. don't.
# they are adjustable due to their origin as general purpose feature
# branches, however changing these variables would defeat fnglike gameplay.
# they are provided along along with their defaults just for completeness
sv_blood_interval 1 #don't touch me
sv_damage 0 # don't touch me
sv_unlimited_ammo 1 # don't touch me
sv_ninja 0 # don't touch me
sv_def_broadcast "" #don't touch me
# end of configuration
Reference Server
An official reference server is running on 5.231.62.161:8309 which will always reflect the latest version and use the reference configuration file (modulo map).
Have a lot of fun,
fstd
------------ original opening post ----------------
hi everyone,
i was asked whether i could port fng to 0.6, because the source was missing or closed or nobody could be fucked to port it, whatever, you certainly know (i actually don't play fng).
however as i had a lot of required stuff readily available in certain branches, i agreed and here is the result, which i call OpenFNG
(i did not port fng but wrote a clone from scratch)
https://github.com/fstd/teeworlds/tree/openfng
i have launched a demonstrational server, just search the serverlist for OpenFNG.
I am well aware of that certain things might be different than in original FNG, well, for any suggestions etc please open issues at https://github.com/fstd/teeworlds/issues
Settings:
laser_damage (tunable) - how many seconds to freeze when hit by laser (adjust by 'tune laser_damage X')
sv_hammer_melt - how many seconds to subtract from freezetime, when hammering frozen teammates
scoring:
sv_freeze_score - player score for freezing
sv_freeze_teamscore - team score for freezing
sv_sacr_score - player score for sacrificing
sv_sacr_teamscore - team score for sacrificing
sv_melt_score - player score for melting
sv_melt_teamscore - team score for melting
sv_suppress_entities - for non fng maps, disables spawning of pickups (default: 1 (on))
since the fng hammer behaves quite different, there are these two settings
which adjust its power. they default to something which is more or less fnglike:
sv_hammer_scale_x - linearly scale up hammer x power, percentage
sv_hammer_scale_y - linearly scale up hammer y power, percentage
well, thats it, i hope it is of some use
as said, suggestions on github or in #OpenFNG on irc.quakenet.org
fisted
Edit: forgot to mention, as a side effect of how the underlying freeze mechanism is implemented, you can connect with both vanilla and openfng-client (build client_release).
the openfng client does not really differ from the upstream (vanilla) client currently, except that it correctly predicts movement even when frozen.
so, if you don't like the prediction error on vanilla client, just build the openfng client, it will continuously be merged with upstream so that it always resembles the latest vanilla state + the correct prediction as mentioned
2015-01-14 Edit: updated links to account for my username change on github
2015-01-17 Edit: finally got around to fix the broken-in-2012 openfng branch. this means that now there's no reason to use openfng_fixed_0_6 anymore
2015-01-17 Edit: repo changes, binaries are in openfng-bin. openfng5_Beat.map has been added because it's pretty nice and widely used -- if whoever made it doesn't like that, contact me on IRC.