Giter Club home page Giter Club logo

oagamepack's People

Contributors

illwieckz avatar neonknightoa avatar sago007 avatar the-gig avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

illwieckz

oagamepack's Issues

Spawnflags not properly added to .def

Steps for reproduction:

  • Compile current .csv into .def and .ent

Expected result: Spawnflags appear in the relevant sections.
Actual result: Spawnflags DON'T appear in the relevant sections.

Keeping open for ideas on how to solve this issue. pull-requests are also welcome (and since this is my repo, you don't need to worry about PR delay).

Missing item_botroam

In current gamepack, item_botroam entity is absent from entities.ent and entities.def.
Note for mappers reading this: I guess it can be still be used, by creating a different entity and then manually changing its "classname" key (and setting a "weight" of course).

This is its description in the old gamepack:

/*QUAKED item_botroam (1 0.5 0) (-8 -8 -8) (8 8 8) SUSPENDED
Game Function: An invisible entity which attracts a bot to it. Use to move bots to parts of a map that might otherwise not be used (NEW ENTITY).
-------- KEYS --------
weight: non-zero floating point value, most often in the range 0 to 400. (Higher values are allowed but keep in mind that the bot should also be attracted to normal items.  Don't make the weight value too high.
notfree : when set to 1, entity will not spawn in "Free for all" and "Tournament" modes.
notteam : when set to 1, entity will not spawn in "Teamplay" and "CTF" modes.
notsingle : when set to 1, entity will not spawn in Single Player mode (bot play mode).
-------- SPAWNFLAGS --------
SUSPENDED : item will spawn where it was placed in map and won't drop to the floor.
-------- NOTES --------
The item_botroam entity can be used when a bot does not roam the whole level or prefers to go to only specific areas. This (invisible) item can be placed in a map just like regular items. Nobody can actually pick up the item it's only used to attract bots to certain places of the map. The value is the weight of the roam_item is relative to the weight assigned other items in the map (each bot has its own weights). The bot character specific item weights are stored with the bot characters AI files ("botname"_i.c for items and "botname"_w.c for weapons) in the botfiles/bots/ sub-folder in the .pk3 file.*/

And this is how I think it may be re-added:

/*QUAKED item_botroam (1 0.5 0) (-8 -8 -8) (8 8 8) SUSPENDED
This is an invisible entity that can be used to invite bots to go to areas they are usually not interested into. They will try to touch it like it was an item to pick up, although there is nothing to actually pick up. It has got no effect on human players.
--------- KEYS --------
"weight" : floating point number used to set how much bots will be attracted by the entity. Usually between 1 and 400. Values higher than that are allowed, but usually not advisable.
"notfree" : If set to 1, this entity won't spawn in free-for-all gamemodes.
"notsingle" : If set to 1, this entity won't spawn in single-player mode.
"notteam" : If set to 1, this entity won't spawn in team-based gamemodes.
-------- SPAWNFLAGS --------
SUSPENDED : Instead of spawning on the floor as usual, the item spawns exactly where it is placed. Bots go for suspended items only if they can be reached with a jumppad or are in water.
-------- NOTES --------
Actual weight of the item is relative to those of the other items in the map, and depends from the weights of each bot, as specified in its "botname"_i.c (items) and "botname"_w.c (weapons) under botfiles/bots folder.*/

By the way, a thing I have never understood about item_botroam is if it has got a "default" weight or not...

Note: I tried to compare the entities list (right mouse button in 2d view) in a Radiant with current gamepack and in a Radiant with previous gamepack (probably this one http://ingar.satgnu.net/gtkradiant/files/netradiant-20120705-win32.zip) and I haven't noticed other entities completely missing. There are however some entities which seem to lack some infos (examples: #4, #5).

Problem with spawnflags in trigger_hurt (and more?)

When some weeks ago I created the deadly pit of a space map, I noticed that the killing trigger was not working exactly as expected.
It turned out that the trigger_hurt spawnflags in the editor do not represent the correct values:
"silent" is 4 (not 2); "no_protection" is 8 (not 4); "slow" is 16 (not 8). "start_off" is correct (1).

An odd thing is that I thought such stuff was extracted from the game code, so I don't know how it's possible that is wrong. Is maybe there a bug in the script (either in the gamecode -> csv script, and/or in the csv->ent/def script), which does not correctly manage the case of "unused" bits inside a bitfield (trigger_hurt does never use value "2")?
If that's the case, then there might be more entities with their spawnflags messed up!

From current entities.def:
/*QUAKED trigger_hurt (.5 .5 .5) ? START_OFF x SILENT NO_PROTECTION SLOW
from "classic" entities.def:
/*QUAKED trigger_hurt (.5 .5 .5) ? START_OFF - SILENT NO_PROTECTION SLOW

From current entities.ent:
<flag key="NO_PROTECTION" name="Ignore powerup protection" bit="2">Player is hurt regardless of powerup protection.</flag>
<flag key="SILENT" name="Silent trigger" bit="1">Supresses playing the sizzling sound.</flag>
<flag key="SLOW" name="Damage per second" bit="3">Damage rate changes to once per second instead of server frame.</flag>
<flag key="START_OFF" name="Starts off" bit="0">Requires toggling for damage infliction.</flag>
from "classic" entities.ent:
<flag key="START_OFF" name="Start Disabled" bit="0">needs to be triggered (toggle) for damage</flag>
<flag key="SILENT" name="Silent" bit="2">supresses the sizzling sound while player is being hurt.</flag>
<flag key="NO_PROTECTION" name="No Powerup Protection" bit="3">player will be hurt regardless of protection (see Notes).</flag>
<flag key="SLOW" name="Damage Once Per Second" bit="4">changes the damage rate to once per second.</flag>

And from https://github.com/OpenArena/gamecode/blob/master/code/game/g_trigger.c :
/*QUAKED trigger_hurt (.5 .5 .5) ? START_OFF - SILENT NO_PROTECTION SLOW

From current entities.csv
trigger_hurt /*QUAKED trigger_hurt (.5 .5 .5) ? START_OFF x SILENT NO_PROTECTION SLOW

Maybe that "-" becoming "x" is the cause of the issue... but how could it happen? @sago007 any idea?

Giving a quick and manual look into entities.csv, I noticed some other "x" in "QUAKED" field for the following entities:

  • func_door
  • light
  • lightjunior
    I haven't checked whether they actually have issues.

Stuff missing in target_speaker

Hi! I just noticed that here
https://github.com/NeonKnightOA/oagamepack/blob/master/oa.game/baseoa/entities.ent
the spawnflags "looped_on" is missing in target_speaker definition. I don't know if other files need to be fixed for that, too.

Further looking into at target_speaker, I see that it currently also doesn't mention these keys:

  • noise
  • wait
  • random
  • targetname

Also, maybe "notes" mentioning that it's possible to use like "*falling1" to play character-specific sounds, that sounds have to be mono, that 32 bit pcm is not supported and that ogg work only if the extension is omitted would be useful.

Infos removed from notes?

I noticed that "notes" in current gamepack, while added some useful infos, seem to lack other useful infos which were in old gamepack.

As example, these are the notes for "ammo_lightning" in old gamepack:

The amount of time it takes for an item in the team to respawn is determined by the "wait" value of the item that was picked up previously. So if one of the items in the team has it's "wait" key set to -1 (never respawn), the random respawning cycle of the teamed items will stop after that item is picked up.

When the random key is set, its value is used to calculate a minimum and a maximum delay. The final time delay will be a random value anywhere between the minimum and maximum values: (min delay = wait - random) (max delay = wait + random).

And these are the notes for the same in current gamepack:

Values for the 'gametype' and '!gametype' keys need to be separated by spaces. The valid values are the following for each gametype:

  • ffa: Free For All
  • tournament: Tournament
  • single: Single Player
  • team: Team Deathmatch
  • ctf: Capture the Flag and CTF Elimination
  • oneflag: One Flag CTF
  • obelisk: Overload
  • harvester: Harvester
  • elimination: Elimination
  • lms: Last Man Standing
  • dd: Double Domination
  • dom: Single Domination
  • pos: Possession
    Unless a specific kind of gameplay requires it or you plan to team up items, DON'T set the 'wait' or 'count' keys. You don't want to mess with your players' timing of the items or what the players expect from the items they pick up. If you want to limit an entity to make it viable on your map, rethink the layout of your map so the entity doesn't end overpowered.
    Upon activation of the targets, all shaders/textures in the map with the shader/texture mentioned in targetShaderName will change to the shader/texture mentioned in targetShaderNewName. This is useful for on/off switches, for example.

What about changing to something like:

Values for the 'gametype' and '!gametype' keys need to be separated by spaces. The valid values are the following: ffa tournament single team ctf oneflag obelisk harvester elimination lms dd dom pos

In case of "teamed" items, the respawn time depends from the "wait" of the previously picked up item. In case a teamed item has got "wait -1" (no respawn), items of the team will stop spawing after that one has been picked up.

If "random" key is set, the respawn time can be anywhere between "wait - random" and "wait + random" seconds.

Unless you are planning a specific kind of gameplay, it's advisable to do not set "wait" or "count" keys, to do not mess with what players know about items timings and effects. If you want to limit an entity to make it viable on your map, you may rethink the layout of your map so the entity doesn't end overpowered.

Upon activation of the targets, all shaders/textures in the map with the shader/texture mentioned in targetShaderName will change to the shader/texture mentioned in targetShaderNewName. This is useful for on/off switches, for example.

(Merged the two descriptions, having care to reword those from older gamepack, which probably was not fully gpl - the main reason behind the whole gamepack rewrite)

Furthermore... is it just me, or do all the entities definitions lack the explanation of their SPAWNFLAGS?

restore git history: rewritten tree is ready (force-push required)

Hi, I restored history from a local copy of the old repository I found in my netradiant build directory.
I noticed I missed some readme editions so I created a commit for the missing change.
Then I imported the minor changes from your newer tree.
Then I entirely rewrote the history to only keep the files the newer repository has.

So there is absolutely no difference in files but all the commits having modified remaining files are there with date, author and correct commit title, except the one I had to redo by hand.

I uploaded the restored tree in a branch named history on my fork, this is the history tree: https://github.com/illwieckz/oagamepack/commits/history

I also made some extra work on another branch named pngbrute. This branch is the exact same tree but png files were optimized by several PNG optimizers then bruteforced with zopfli compression algorithm to reduce their file size. While saving 30% file space, the saved file space is not impressive since the files themselves are lightweight at first. This reduces the entity_icons directory weight from 42.362 KB to 29.976 KB (12.386 KB saved).

This is the pngbrute tree: https://github.com/illwieckz/oagamepack/commits/pngbrute

To replace the current master tree with one of those reworked trees, you can do this way:

With the history tree:

git clone -b history --single-branch [email protected]:illwieckz/oagamepack.git oagamepack-history
cd oagamepack-history
git remote add upstream [email protected]:NeonKnightOA/oagamepack.git
git branch -m master
git push --force --set-upstream upstream master

With the pngbrute tree:

git clone -b pngbrute --single-branch [email protected]:illwieckz/oagamepack.git oagamepack-pngbrute
cd oagamepack-pngbrute
git remote add upstream [email protected]:NeonKnightOA/oagamepack.git
git branch -m master
git push --force --set-upstream upstream master

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.