Code Monkey home page Code Monkey logo

spads's People

Contributors

abma avatar beherith avatar commanderspice avatar gajop avatar silentwings avatar yaribz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

spads's Issues

InGameMute plugin should still allow players to vote

Currently, I believe it's this plugin that's preventing muted players from being able to vote, yet they are still included as part of the vote participation pool.

My suggestion would be to trim the optional message arg from any commands that have them and forward the bare command for muted players. e.g.

!stop haha u suck -> !stop

restoreDefaultPresetDelay

Hi ! How ya ?
Fonction restoreDefaultPresetDelay:30
[11:31:23] <*> [ACE]Sure * Battle empty for 30 seconds, restoring default settings

This cannot be executed in [ACE]Pirine due to the presence of a bot.
Is it possible to restore defaults settings, even with presence of specs (or bots...) ?
Or eventually the possibility to choose restoring with or without specs...

Thx !

SpringLobby autounspectate does not work cleanly with SPADS

When SL users check their auto-unspectate box, the next time a free slot appears in a SPADS hosted battle, they will all momentarily autounspectate (unless the battle is full, which is not necessarily the same thing as having reached the autohosts self-imposed max player count). Almost immediately after, all but one of the clients is returned to being a spectator. When this happens each SL client thinks it became a player, and unchecks its auto-unspectate box.

The result is that (I don't know about other lobbies) it appears as though SLs auto-unspectate function only tries to unspectate once on SPADS hosts.

I don't know if this is genuinely a SPADS issue or a limitation of the lobby protocol, but it seems it cannot be cleanly addressed in SL (springlobby/springlobby#365).

"Spring crashed"

since the lobby server update spads reports "Spring crashed" when starting a game:

[06:41:39] * [BA]Peewee * Launching game...
[06:41:45] * [BA]Peewee * Spring crashed ! (running time: 6 seconds)

an idea why this happens?

the dev server which uses the updated version is running at lobby.springrts.com:7000

SPADS death with infinite spam of uninitialised values to console

Probably triggered by lobby server upgrade. Other two SPADS instances were unaffected and this one starts normally without problems after killing it.

Use of uninitialized value $bot in hash element at ./spads.pl line 3826.
Use of uninitialized value $groupNb in array element at ./spads.pl line 3824.
Use of uninitialized value $groupNb in array element at ./spads.pl line 3825.
Use of uninitialized value $bot in hash element at ./spads.pl line 3825.
Use of uninitialized value in addition (+) at ./spads.pl line 3825.
Use of uninitialized value $bot in hash element at ./spads.pl line 3826.
Use of uninitialized value $groupNb in array element at ./spads.pl line 3826.
Use of uninitialized value $bot in hash element at ./spads.pl line 3826.
Use of uninitialized value $groupNb in array element at ./spads.pl line 3824.
Use of uninitialized value $groupNb in array element at ./spads.pl line 3825.
Use of uninitialized value $bot in hash element at ./spads.pl line 3825.
Use of uninitialized value in addition (+) at ./spads.pl line 3825.
Use of uninitialized value $bot in hash element at ./spads.pl line 3826.
Use of uninitialized value $groupNb in array element at ./spads.pl line 3826.
Use of uninitialized value $bot in hash element at ./spads.pl line 3826.
Use of uninitialized value $groupNb in array element at ./spads.pl line 3824.
Use of uninitialized value $groupNb in array element at ./spads.pl line 3825.
...

Spads Spring-Dedicated instances eating up an entire core each

http://springrts.com/phpbb/viewtopic.php?f=64&t=31984

Apparently a known issue :-(

[1:58:08 PM] Shock_Wave hi
[1:58:18 PM] about the cpu usage of spring-dedicated
[1:58:32 PM] there is a wrong argue passing somewhere
[1:58:47 PM] the scheduler yeld is called with 1 nanosecond, instead of 1 millisecond
[1:59:01 PM](i think should be 1 msec)
[1:59:22 PM] [Evo]Forboding_Angel How to fix?
[1:59:36 PM] Shock_Wave recompiling the engine
[1:59:50 PM] should not cause desync errors
[2:00:20 PM] but i don't know where is the bug, just launched a debugging session
[2:00:36 PM] *** The time is now 2:00:36 PM PDT
[2:01:30 PM] [Evo]Forboding_Angel :-/
[2:01:30 PM] Shock_Wave maybe at the end of this week we'll look into the engine, for a workaroud
[2:01:42 PM] [Evo]Forboding_Angel Are you bibim?
[2:01:45 PM] Shock_Wave no
[2:01:49 PM] we are waiting bibim
[2:01:55 PM] for spads eating all RAM
[2:02:03 PM] [Evo]Forboding_Angel Ok, so it's not jsut me then
[2:02:20 PM] Shock_Wave yep that is an huge problem for our machines
[2:02:26 PM] :(
[2:02:36 PM] [Evo]Forboding_Angel With all these players, It's pwning my server
[2:02:45 PM] Shock_Wave i had to kill 6 rooms
[2:02:53 PM] otherwise the OOM killer starts
[2:03:16 PM] with unpredictable and undesiderable effects :(
[2:03:29 PM] [Evo]Forboding_Angel Thanks for the info :-/
[2:03:39 PM] Much appreciated. I thought it was jsut me.
[2:03:42 PM] Shock_Wave you are not alone :(

Error while generating unitsync gcc 6.20

Hi

I have upgraded one of my servers to ubuntu 16.10 and comes with gcc g++ 6.20

this error is shown when generating unitsync

`1/3 - Please enter the absolute path of the unitsync library (libunitsync.so) [] ? /home/spring/.spring/engine/103.0.1-273-gb0974d8 develop/libunitsync.so
NOTICE   - [SpadsInstaller] Generating Perl Unitsync interface module
In file included from /usr/include/c++/6/cmath:42:0,
                 from /usr/include/c++/6/math.h:36,
                 from PerlUnitSync_wrap.c:732:
/usr/include/c++/6/bits/cpp_type_traits.h:145:12: error: redefinition of ‘struct std::__is_integer<char>’
     struct __is_integer<char>
            ^~~~~~~~~~~~~~~~~~
/usr/include/c++/6/bits/cpp_type_traits.h:138:12: error: previous definition of ‘struct std::__is_integer<char>’
     struct __is_integer<bool>
            ^~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/6/bits/move.h:57:0,
                 from /usr/include/c++/6/bits/stl_pair.h:59,
                 from /usr/include/c++/6/bits/stl_algobase.h:64,
                 from /usr/include/c++/6/bits/char_traits.h:39,
                 from /usr/include/c++/6/string:40,
                 from unitsync.h:6,
                 from PerlUnitSync_wrap.c:1548:
/usr/include/c++/6/type_traits:224:12: error: redefinition of ‘struct std::__is_integral_helper<char>’
     struct __is_integral_helper<char>
            ^~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/6/type_traits:220:12: error: previous definition of ‘struct std::__is_integral_helper<char>’
     struct __is_integral_helper<bool>
            ^~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/6/exception:170:0,
                 from /usr/include/c++/6/new:40,
                 from /usr/include/c++/6/ext/new_allocator.h:33,
                 from /usr/include/x86_64-linux-gnu/c++/6/bits/c++allocator.h:33,
                 from /usr/include/c++/6/bits/allocator.h:46,
                 from /usr/include/c++/6/string:41,
                 from unitsync.h:6,
                 from PerlUnitSync_wrap.c:1548:
/usr/include/c++/6/bits/exception_ptr.h: In member function ‘std::__exception_ptr::exception_ptr::operator char() const’:
/usr/include/c++/6/bits/exception_ptr.h:141:16: error: invalid conversion from ‘void*’ to ‘char’ [-fpermissive]
       { return _M_exception_object; }
                ^~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/6/exception:171:0,
                 from /usr/include/c++/6/new:40,
                 from /usr/include/c++/6/ext/new_allocator.h:33,
                 from /usr/include/x86_64-linux-gnu/c++/6/bits/c++allocator.h:33,
                 from /usr/include/c++/6/bits/allocator.h:46,
                 from /usr/include/c++/6/string:41,
                 from unitsync.h:6,
                 from PerlUnitSync_wrap.c:1548:
/usr/include/c++/6/bits/nested_exception.h: In member function ‘void std::nested_exception::rethrow_nested() const’:
/usr/include/c++/6/bits/nested_exception.h:73:11: error: invalid user-defined conversion from ‘const std::__exception_ptr::exception_ptr’ to ‘bool’ [-fpermissive]
       if (_M_ptr)
           ^~~~~~
In file included from /usr/include/c++/6/exception:170:0,
                 from /usr/include/c++/6/new:40,
                 from /usr/include/c++/6/ext/new_allocator.h:33,
                 from /usr/include/x86_64-linux-gnu/c++/6/bits/c++allocator.h:33,
                 from /usr/include/c++/6/bits/allocator.h:46,
                 from /usr/include/c++/6/string:41,
                 from unitsync.h:6,
                 from PerlUnitSync_wrap.c:1548:
/usr/include/c++/6/bits/exception_ptr.h:140:16: note: candidate is: std::__exception_ptr::exception_ptr::operator char() const <near match>
       explicit operator bool() const
                ^~~~~~~~
/usr/include/c++/6/bits/exception_ptr.h:140:16: note:   return type ‘char’ of explicit conversion function cannot be converted to ‘bool’ with a qualification conversion
In file included from /usr/include/c++/6/bits/basic_string.h:5628:0,
                 from /usr/include/c++/6/string:52,
                 from unitsync.h:6,
                 from PerlUnitSync_wrap.c:1548:
/usr/include/c++/6/bits/functional_hash.h: At global scope:
/usr/include/c++/6/bits/functional_hash.h:111:3: error: redefinition of ‘struct std::hash<char>’
   _Cxx_hashtable_define_trivial_hash(char)
   ^
/usr/include/c++/6/bits/functional_hash.h:108:3: error: previous definition of ‘struct std::hash<char>’
   _Cxx_hashtable_define_trivial_hash(bool)
   ^
CRITICAL - [SpadsInstaller] Error during Unitsync wrapper compilation
spring@sserver:~/spads-dev$

thx!

NewFeature : Keep several games «infolog.txt»

I wasn't here, and infolog.txt was overwritted with next game on server's side.
I did play replay and open the client's side infolog.txt, but It would be so better to have the infolog.txt on server's side.
Maybe it doesn't worth it because it's 97% the same that on client ?
In such a case https://springrts.com/phpbb/viewtopic.php?f=16&t=36547#p584103 , not sure maybe......

Can you 👍

  • On running gameS, why not write infolog.txt, infolog1.txt, infolog2.txt..............
    or
  • Keep same infolog.txt (wanna be big, but... ) like you do on any other spads log files.

Maybe it is more relevant to spring new feature ENGINE ?
If yes, close it plz and I will mantis or GIT Engine feature.

[SPADS] Unable to load PerlUnitSync module

I recompiled perl with thread support so that I could get the IRC Bridge.
Now spads won't start. Error below
I tried to recompile without threads in an attempt to revert but a test failed - far below. I'm not experienced with perl so I'm not sure which is best to fix

Version

This is perl 5, version 28, subversion 1 (v5.28.1) built for x86_64-linux-thread-multi
Spads Error

NOTICE   - [SPADS] Initializing SPADS 0.12.6
CRITICAL - [SPADS] Unable to load PerlUnitSync module (Can't load '/home/uberserver/builds/spads/PerlUnitSync.so' for module PerlUnitSync: /home/uberserver/builds/spads/PerlUnitSync.so: undefined symbol: PL_sv_immortals at /usr/local/lib/perl5/5.28.1/x86_64-linux-thread-multi/DynaLoader.pm line 193.
 at /home/uberserver/builds/spads/PerlUnitSync.pm line 11.
Compilation failed in require at (eval 28) line 1.
BEGIN failed--compilation aborted at (eval 28) line 1.
)

Failed Test

t/op/exec ...................................................... # Failed test 17 - at op/exec.t line 114
# $! eq 20, 'Not a directory'
FAILED at test 17

[SPADS] Unable to create temporary directory "/.InlinePython.tmp" for Inline::Python used by plugin SpadsPluginApi: Permission denied

I tried looking through the source, and it seems that the catdir func is not getting anything for instanceDir, so it is trying to create a temp directory in root (which naturally wont succeed :) ). InstanceDir is defined in my main spads.conf as:

my $inlinePythonTmpDir=catdir($::conf{instanceDir},'.InlinePython.tmp');

My spads.conf:

SPADS files

etcDir:etc
varDir:var
instanceDir:spads_host14
logDir:log

the spads_host14 folder exists and is rwxrwxrwx

Thank you for looking into this!

Updater is touching the lockfile several times per second

for ((;;)); do find-latest .; done
2017-04-19+22:33:29.1996291220 ./install/103.0/SpadsUpdater.lock
2017-04-19+22:33:29.1996291220 ./install/103.0/SpadsUpdater.lock
2017-04-19+22:33:30.1129624620 ./install/103.0/SpadsUpdater.lock
2017-04-19+22:33:30.1129624620 ./install/103.0/SpadsUpdater.lock
2017-04-19+22:33:31.0862958020 ./install/103.0/SpadsUpdater.lock
2017-04-19+22:33:31.1162958020 ./install/103.0/SpadsUpdater.lock
2017-04-19+22:33:31.1162958020 ./install/103.0/SpadsUpdater.lock
2017-04-19+22:33:32.2896291430 ./install/103.0/SpadsUpdater.lock
2017-04-19+22:33:32.2896291430 ./install/103.0/SpadsUpdater.lock
2017-04-19+22:33:32.2896291430 ./install/103.0/SpadsUpdater.lock
2017-04-19+22:33:33.3029624820 ./install/103.0/SpadsUpdater.lock
2017-04-19+22:33:33.3029624820 ./install/103.0/SpadsUpdater.lock
2017-04-19+22:33:34.3062958220 ./install/103.0/SpadsUpdater.lock
...

iotop is hinting at spads.pl as the top writer at ~78 KB/s

spads is using an abnormal amount of ram

Previously spads was using 10-30MB ram, constantly. Recently, the usage has risen to 150-200MB ram. i am unsure if it's a memory leak, or some abnormally large file being loaded in ram. I tried to delete chat log, which was the biggest file, but the usage remained the same. User database is only 2 MB large, so i'd tend to exclude it.

The "step" parameter (quantization) of mod/map options is ignored

SPADS doesn't use the quantization parameter of map/mod options, instead it relies on the minimum and maximum number format: if at least one of the minimum and maximum values contains a ".", then it will allow decimal values. Otherwise it will only allow integers.

This is not correct, instead it should read the "step" value and use it in conjunction with the default and min/max values to deduce the allowed values.

Manual balancing option

Would it be possible to add a balance "command" that completely bypasses the autobalancer?

e.g. !balance {player1, player2, player3} {player4, player5 + player6}

This would achieve: players 1,2,3 on ally team 1
player 4,5,6 on ally team 2, players 5 and 6 share team-id

Fresh Contrib install failure missing PerlUnitSync.pm

fails with error

CRITICAL - [SpadsInstaller] Unable to load Perl Unitsync interface module (Can't locate PerlUnitSync.pm in @inc (you may need to install the PerlUnitSync module) (@inc contains: /home//Desktop/t/spadsInstaller . /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.24.1 /usr/local/share/perl/5.24.1 /usr/lib/x86_64-linux-gnu/perl5/5.24 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.24 /usr/share/perl/5.24 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base) at (eval 44) line 2, line 3.
BEGIN failed--compilation aborted at (eval 44) line 2, line 3.
CRITICAL - [SpadsInstaller] Unable to load Perl Unitsync interface module (Can't locate PerlUnitSync.pm in @inc (you may need to install the PerlUnitSync module) (@inc contains: /home/
*/Desktop/t/spadsInstaller . /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.24.1 /usr/local/share/perl/5.24.1 /usr/lib/x86_64-linux-gnu/perl5/5.24 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.24 /usr/share/perl/5.24 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base) at (eval 44) line 2, line 3.
BEGIN failed--compilation aborted at (eval 44) line 2, line 3.

I do have PerlUnitSyncInternal.pm but not PerlUnitSync.pm

nbTeams:16-32 causes spads to crash

So I had a strange setting:

I had this setting on:

[ffa]
description:FFA Game Global Settings
battlePreset:ffa
autoBalance:advanced|off|on
nbTeams:16-32

And this caused the spads error below

NOTICE   - [SpringLobbyInterface] Connecting to server3.beyondallreason.info:8200
NOTICE   - [SpringLobbyInterface] TLS enabled (TLSv1_3,TLS_AES_256_GCM_SHA384)
ERROR    - [SPADS] PERL WARNING: Argument "16-32" isn't numeric in multiplication (*) at ../spads.pl line 2413.
ERROR    - [SPADS] PERL WARNING:         main::getTargetBattleInfo called at ../spads.pl line 2464
ERROR    - [SPADS] PERL WARNING:         main::updateBattleInfoIfNeeded called at ../spads.pl line 6195
ERROR    - [SPADS] PERL WARNING:         main::applySettingChange called at ../spads.pl line 6264
ERROR    - [SPADS] PERL WARNING:         main::applyAllSettings called at ../spads.pl line 6276
ERROR    - [SPADS] PERL WARNING:         main::applyPreset called at ../spads.pl line 10259
ERROR    - [SPADS] PERL WARNING:         main::hPreset called at ../spads.pl line 3082
ERROR    - [SPADS] PERL WARNING:         main::executeCommand called at ../spads.pl line 3009
ERROR    - [SPADS] PERL WARNING:         main::handleRequest called at ../spads.pl line 13806
ERROR    - [SPADS] PERL WARNING:         ...
WARNING  - [SPADS] Unable to update battle skill of player AKU for new game type, no cached skill available!

Changing this to

[ffa]
description:FFA Game Global Settings
battlePreset:ffa
autoBalance:advanced|off|on
nbTeams:16|16-32

Made things work, and also allowed me to set 17+ players in FFA mode.

Thank you for spads <3

TLS

SPADS clients all login to the lobbyserver without using TLS, it would be great if they could make a secure connection? (For host<->engine comms, I don't expect TLS will ever be implemented.)

NewFeature : Add «pr-downloader»

Hey !

What about adding «pr-downloader» "exe/bin" into var/spring/10x path in your automanagement ENGINE system for using it ?
I use (actually 103) pr-downloader with a cron job for automatic MOD update.

Yes I know I can get 104 ENG package 7zip on springrts.com, extracting it somewhere, and make a link. This is what a do actually with 103 ENG.

It's just a question ! ;)

installer not working in non interactive mode

The installer fails in non-interactive mode due to the last 3 questions:

$conf{lobbyLogin}=promptString("$currentStep/$nbSteps - Please enter the autohost lobby login (the lobby account must already exist)");
$currentStep++;
$conf{lobbyPassword}=promptString("$currentStep/$nbSteps - Please enter the autohost lobby password");
$currentStep++;
$conf{owner}=promptString("$currentStep/$nbSteps - Please enter the lobby login of the autohost owner");
$currentStep++;

These statements should be run only if the $conf entries are empty and the installer is running in interactive mode. So that we can pass them as arguments or edit the config file afterwards.

Error while generating unitsync interface

today i was trying to move my spads setup from debian to Arch so I started over instead of just copy and paste the files

but I hit this error

$ ./spadsInstaller.pl

This program will install SPADS in the current working directory, overwriting files if needed.
The installer will ask you 14 questions to customize your installation and pre-configure SPADS.
You can stop this installation at any time by hitting Ctrl-c.
Note: if SPADS is already installed on the system, you don't need to reinstall it to run multiple autohosts. Instead, you can share SPADS binaries and use multiple configuration files and/or configuration macros.

1/14 - Which SPADS release do you want to install (stable,testing,unstable,contrib) [testing] ?
NOTICE   - [SpadsInstaller] SPADS components are up to date, proceeding with installation...
2/14 - Please enter the absolute path of the unitsync library (libunitsync.so) [] ? /home/spring/.spring/engine/103.0/libunitsync.so
NOTICE   - [SpadsInstaller] Generating Perl Unitsync interface module
In file included from /usr/include/c++/6.1.1/cmath:42:0,
                 from /usr/include/c++/6.1.1/math.h:36,
                 from PerlUnitSync_wrap.c:734:
/usr/include/c++/6.1.1/bits/cpp_type_traits.h:145:12: error: redefinition of 'struct std::__is_integer<char>'
     struct __is_integer<char>
            ^~~~~~~~~~~~~~~~~~
/usr/include/c++/6.1.1/bits/cpp_type_traits.h:138:12: error: previous definition of 'struct std::__is_integer<char>'
     struct __is_integer<bool>
            ^~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/6.1.1/bits/move.h:57:0,
                 from /usr/include/c++/6.1.1/bits/stl_pair.h:59,
                 from /usr/include/c++/6.1.1/bits/stl_algobase.h:64,
                 from /usr/include/c++/6.1.1/bits/char_traits.h:39,
                 from /usr/include/c++/6.1.1/string:40,
                 from unitsync.h:6,
                 from PerlUnitSync_wrap.c:1550:
/usr/include/c++/6.1.1/type_traits:217:12: error: redefinition of 'struct std::__is_integral_helper<char>'
     struct __is_integral_helper<char>
            ^~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/6.1.1/type_traits:213:12: error: previous definition of 'struct std::__is_integral_helper<char>'
     struct __is_integral_helper<bool>
            ^~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/6.1.1/exception:170:0,
                 from /usr/include/c++/6.1.1/new:40,
                 from /usr/include/c++/6.1.1/ext/new_allocator.h:33,
                 from /usr/include/c++/6.1.1/x86_64-pc-linux-gnu/bits/c++allocator.h:33,
                 from /usr/include/c++/6.1.1/bits/allocator.h:46,
                 from /usr/include/c++/6.1.1/string:41,
                 from unitsync.h:6,
                 from PerlUnitSync_wrap.c:1550:
/usr/include/c++/6.1.1/bits/exception_ptr.h: In member function 'std::__exception_ptr::exception_ptr::operator char() const':
/usr/include/c++/6.1.1/bits/exception_ptr.h:141:16: error: invalid conversion from 'void*' to 'char' [-fpermissive]
       { return _M_exception_object; }
                ^~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/6.1.1/exception:171:0,
                 from /usr/include/c++/6.1.1/new:40,
                 from /usr/include/c++/6.1.1/ext/new_allocator.h:33,
                 from /usr/include/c++/6.1.1/x86_64-pc-linux-gnu/bits/c++allocator.h:33,
                 from /usr/include/c++/6.1.1/bits/allocator.h:46,
                 from /usr/include/c++/6.1.1/string:41,
                 from unitsync.h:6,
                 from PerlUnitSync_wrap.c:1550:
/usr/include/c++/6.1.1/bits/nested_exception.h: In member function 'void std::nested_exception::rethrow_nested() const':
/usr/include/c++/6.1.1/bits/nested_exception.h:73:11: error: invalid user-defined conversion from 'const std::__exception_ptr::exception_ptr' to 'bool' [-fpermissive]
       if (_M_ptr)
           ^~~~~~
In file included from /usr/include/c++/6.1.1/exception:170:0,
                 from /usr/include/c++/6.1.1/new:40,
                 from /usr/include/c++/6.1.1/ext/new_allocator.h:33,
                 from /usr/include/c++/6.1.1/x86_64-pc-linux-gnu/bits/c++allocator.h:33,
                 from /usr/include/c++/6.1.1/bits/allocator.h:46,
                 from /usr/include/c++/6.1.1/string:41,
                 from unitsync.h:6,
                 from PerlUnitSync_wrap.c:1550:
/usr/include/c++/6.1.1/bits/exception_ptr.h:140:16: note: candidate is: std::__exception_ptr::exception_ptr::operator char() const <near match>
       explicit operator bool() const
                ^~~~~~~~
/usr/include/c++/6.1.1/bits/exception_ptr.h:140:16: note:   return type 'char' of explicit conversion function cannot be converted to 'bool' with a qualification conversion
In file included from /usr/include/c++/6.1.1/bits/basic_string.h:5628:0,
                 from /usr/include/c++/6.1.1/string:52,
                 from unitsync.h:6,
                 from PerlUnitSync_wrap.c:1550:
/usr/include/c++/6.1.1/bits/functional_hash.h: At global scope:
/usr/include/c++/6.1.1/bits/functional_hash.h:111:3: error: redefinition of 'struct std::hash<char>'
   _Cxx_hashtable_define_trivial_hash(char)
   ^
/usr/include/c++/6.1.1/bits/functional_hash.h:108:3: error: previous definition of 'struct std::hash<char>'
   _Cxx_hashtable_define_trivial_hash(bool)
   ^
CRITICAL - [SpadsInstaller] Error during Unitsync wrapper compilation

spads sends binary/non-utf8 data it seems

this is not supported by lobbyserver/lobbyprotocol, this is what it sends for example:

user EvoRTSDedicated3 in this case.

SAYPRIVATE SpringLobbyMonitor � ���� SZ€³����startTs SZ†›����endTs�Team����type undecided����result����������bots�96����engine�����������������allyTeam�����loseTime90.209.151.42����ip�254340��� accountId�€����winDemoner450����name�����team�������3����team�greenys6����name�908068��� accountId�‚����win�1����allyTeam�����loseTime105.236.96.55����ip�������€����win�260762��� accountId�_Fire����name�����team�����ip�����loseTime�����allyTeam�������907154��� accountId�‚����win�2����team yellowguy����name�����loseTime41.135.106.12����ip�1����allyTeam�����������loseTime 2.234.141.78����ip�0����allyTeam�TheCazziator33����name�0����team�261133��� accountId�‚����win����players ��������duration 18815a53534ebbc90ddf560d1cdf4421����gameId�1v2��� structure

Inconsistent vote permissions behavior in boss mode.

BAR uses two sets of command files, both start with importing the entire {commands.conf}

https://github.com/beyond-all-reason/spads_config_bar/blob/main/etc/commands_default.conf
commands_default.conf is used by the global default preset [team], thus I assume it is also picked up for the presets [ffa], [coop], [duel] and [tourney] as well. This uses the usual regular command permissions.

[kick]
battle,pv,game:player:|100:0
::|100:

https://github.com/beyond-all-reason/spads_config_bar/blob/main/etc/commands_custom.conf
commands_custom.conf is used only in the global preset [custom], and is intended to make sure that non-bossed players cannot vote out the boss, and cant vote for kick or other commands, so their votelevel is set to 0.

[kick]
battle,pv,game:player:|100:10
::|100:

Expected behavior:

[custom]
!kick commands from the boss should not trigger a vote.

[all others]
!kick commands from the boss should not trigger a vote.

Observed behavior

[team]
Boss saying !kick triggers a vote

[ffa]
Boss saying !kick triggers a vote

[coop]
Boss saying !kick triggers a vote

[duel]
Boss saying !kick triggers a vote

[tourney]
Boss saying !kick triggers a vote

[custom]
Boss saying !kick does not trigger a vote

Unitsync library is no longer compatible with SPADS

Hi

My autohost worked fine with my maps <---- ( not true anymore) (based on map-blueprint and mapconvng)
but having some other maps like "TMA-0 v1_1" break the bot

starting the bot:

NOTICE   - [SPADS] Initializing SPADS 0.11.39
/usr/bin/perl: symbol lookup error: /home/spring/spads-develop/PerlUnitSync.so: undefined symbol: GetMapWidth

thx!

Stuck on loading unitsync library / interface module

Gets stuck doing this:

jools@spring1:~/berries$ perl spads.pl etc/semprini.conf
NOTICE - [SPADS] Initializing SPADS 0.12.2a
NOTICE - [SPADS] Loading Spring archives using unitsync library version 98 ..

Also when reinstalling it gets stuck on loading this:

ble,testing,unstable,...) [104.0] ? 103.0
NOTICE - [SpadsInstaller] Spring 103.0 is already installed
NOTICE - [SpadsInstaller] SPADS components are up to date, proceeding with installation...
NOTICE - [SpadsInstaller] Perl Unitsync interface module already exists, skipping generation (use "-g" flag to force generation)
7/15 - Please enter the absolute path of the Spring data directory containing the games and maps hosted by the autohost, or enter "new" to use a new directory instead [/home/jools/.spring] ? /ho^[OD^[OD^[OD^H^H^H^H^H^H
7/15 - Please enter the absolute path of the Spring data directory containing the games and maps hosted by the autohost, or enter "new" to use a new directory instead [/home/jools/.spring] ? /home/jools/data
NOTICE - [SpadsInstaller] Checking Perl Unitsync interface module...

I have 4 autohosts using the same etc and var conf, but different instances.

64bit spads on windows

https://springrts.com/phpbb/viewtopic.php?f=88&t=42658

Spads 64bit
Post by Forboding Angel » Fri Jan 01, 2021 2:19 pm
Awesome. Lost my entire post. Thanks tab suspender that isn't smart enough not to close tabs on pages with forms.

So long story short. Moving to 64bit. Uninstall strawberry perl 32bit, install strawberry perl 64bit. Look in documentation for if I need to do anything for spads 64bit. Can't find anything. Run spads with no issues. Spads auto managed stuff is set to 105.0. Downloads 32bit. Ruh roh. So I go looking again for threads on 64bit spads and come up mostly empty.

Switch to non-automanaged spring version pointing to 105.0 64bit dedicated. Server starts with zero issues.

Am I missing something here?

/-//-//-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/

Re: Spads 64bit
Post by abma » Fri Jan 01, 2021 9:45 pm
assuming you are using spads on windows: a quick look into the source code of spads leads to this:

https://github.com/Yaribz/SPADS/blob/1a ... ter.pm#L40

it seems spads has a hardcoded 32 bit windows: i guess because when this code was written, the win64 bit executable didn't exist:

either hope that bibim sees this thread or create an issue please at https://github.com/Yaribz/SPADS/issues

autolockclients matters even when autolock is off

It looks to me as though https://github.com/Yaribz/SPADS/blob/master/src/spads.pl#L2045 will trigger and autolock the battle whenever nbClients > conf{autoLockClients}, even if conf{autoLock} itself is set to off. By default, according to http://planetspads.free.fr/spads/doc/spadsDoc.html this will bite as soon as there are 32 or more clients connected.

I'm not sure if this effect was intended, but if I'm right then I think it has confused the current BA hosters.

Failing to build unitsync inside docker

ubutnu 16.04 + docker-ce

here is the DockerFile

FROM alpine
MAINTAINER  TurBoss

RUN apk add --update  perl perl-dev swig g++

RUN mkdir -p /opt/spads

RUN wget https://github.com/Yaribz/SPADS/raw/master/src/spadsInstaller.pl -P /opt/spads/
RUN wget https://github.com/Yaribz/SPADS/raw/master/src/SpadsUpdater.pm -P /opt/spads/
RUN wget https://github.com/Yaribz/SPADS/raw/master/src/PerlUnitSync.pm -P /opt/spads/
RUN wget https://github.com/Yaribz/SimpleLog/raw/master/SimpleLog.pm -P /opt/spads/
RUN wget https://github.com/Yaribz/SimpleEvent/raw/master/SimpleEvent.pm -P /opt/spads/
RUN wget https://github.com/Yaribz/SpringLobbyInterface/raw/master/SpringLobbyInterface.pm -P /opt/spads/
RUN wget https://github.com/Yaribz/SpringAutoHostInterface/raw/master/SpringAutoHostInterface.pm -P /opt/spads/

RUN perl /opt/spads/spadsInstaller.pl

CMD perl /opt/spads/spads.pl /opt/spads/etc/spads.conf
~                                                                

and the resulting error

Step 12/13 : RUN perl /opt/spads/spadsInstaller.pl
 ---> Running in 9c6f8ee07765

This program will install SPADS in the current working directory, overwriting files if needed.
The installer will ask you 15 questions maximum to customize your installation and pre-configure SPADS.
You can stop this installation at any time by hitting Ctrl-c.
Note: if SPADS is already installed on the system, you don't need to reinstall it to run multiple autohosts. Instead, you can share SPADS binaries and use multiple configuration files and/or configuration macros.

1/15 - Which SPADS release do you want to install (stable,testing,unstable,contrib) [testing] ? 
20171229022946 - INFO     - [SpadsUpdater] Updating package "getDefaultModOptions.pl" to "getDefaultModOptions_0.6.pl"
20171229022946 - INFO     - [SpadsUpdater] Updating package "help.dat" to "help_0.13.1.dat"
20171229022946 - INFO     - [SpadsUpdater] Updating package "helpSettings.dat" to "helpSettings_0.6.0.dat"
20171229022946 - INFO     - [SpadsUpdater] Updating package "SpringAutoHostInterface.pm" to "SpringAutoHostInterface_0.11.pm"
20171229022946 - INFO     - [SpadsUpdater] Updating package "SpringLobbyInterface.pm" to "SpringLobbyInterface_0.23.pm"
20171229022946 - INFO     - [SpadsUpdater] Updating package "SimpleEvent.pm" to "SimpleEvent_0.1c.pm"
20171229022947 - INFO     - [SpadsUpdater] Updating package "SimpleLog.pm" to "SimpleLog_0.7.pm"
20171229022947 - INFO     - [SpadsUpdater] Updating package "spads.pl" to "spads_0.12.2a.pl"
20171229022947 - INFO     - [SpadsUpdater] Updating package "SpadsConf.pm" to "SpadsConf_0.12.0a.pm"
20171229022947 - INFO     - [SpadsUpdater] Updating package "spadsInstaller.pl" to "spadsInstaller_0.21.pl"
20171229022947 - INFO     - [SpadsUpdater] Updating package "SpadsUpdater.pm" to "SpadsUpdater_0.13a.pm"
20171229022948 - INFO     - [SpadsUpdater] Updating package "SpadsPluginApi.pm" to "SpadsPluginApi_0.22a.pm"
20171229022948 - INFO     - [SpadsUpdater] Updating package "update.pl" to "update_0.11.pl"
20171229022948 - INFO     - [SpadsUpdater] Updating package "argparse.py" to "argparse-1.2.1.py"
20171229022948 - INFO     - [SpadsUpdater] Updating package "replay_upload.py" to "replay_upload_0.6.py"
20171229022948 - INFO     - [SpadsUpdater] Updating package "7za" to "7za-16.2"
20171229022949 - NOTICE   - [SpadsUpdater] 16 package(s) updated
20171229022949 - NOTICE   - [SpadsInstaller] Restarting installer after update...
20171229022951 - NOTICE   - [SpadsInstaller] SPADS components are up to date, proceeding with installation...
2/15 - Please choose the directory where SPADS configuration files will be stored [etc] ? 
20171229022951 - NOTICE   - [SpadsInstaller] Directory "/opt/spads/etc" created
20171229022951 - NOTICE   - [SpadsInstaller] Directory "/opt/spads/etc/templates" created
3/15 - Please choose the directory where SPADS dynamic data will be stored [var] ? 
20171229022951 - NOTICE   - [SpadsInstaller] Directory "/opt/spads/var" created
20171229022951 - NOTICE   - [SpadsInstaller] Directory "/opt/spads/var/plugins" created
20171229022951 - NOTICE   - [SpadsInstaller] Directory "/opt/spads/var/spring" created
4/15 - Please choose the directory where SPADS will write the logs [log] ? 
20171229022951 - NOTICE   - [SpadsInstaller] Directory "/opt/spads/var/log" created
20171229022951 - NOTICE   - [SpadsInstaller] Directory "/opt/spads/var/log/chat" created
5/15 - Do you want to use official Spring binary files (auto-managed by SPADS), or a custom Spring installation already existing on the system? (official,custom) [official] ? 
20171229022951 - NOTICE   - [SpadsInstaller] Checking available Spring versions...

Available Spring versions:
  104.0.1
  104.0.1-448-g243c5dd [UNSTABLE] (latest develop version)
  104.0.1-446-gcb2e6d5
  104.0.1-445-g6d402aa
  104.0.1-443-ga67d7cc
  104.0.1-442-gd5228b6
  [...]
  104.0 [STABLE] (recommended release) + [TESTING] (next release candidate)
  103.0
  102.0
  101.0
  100.0
  [...]

Please choose the Spring version which will be used by the autohost.
If you choose "stable", "testing" or "unstable", SPADS will stay up to date with the corresponding official Spring release by automatically downloading and using new Spring binary files when needed.
If you choose a specific Spring version number ("104.0", "104.0.1-448-g243c5dd", ...), SPADS will stick to this version until you manualy change it in the configuration file.

6/15 - Which Spring version do you want to use (104.0,104.0.1-448-g243c5dd,stable,testing,unstable,...) [104.0] ? 
20171229022952 - INFO     - [SpadsUpdater] Created new directory "/opt/spads/var/spring/104.0-linux64" for Spring installation
20171229022952 - NOTICE   - [SpadsUpdater] Installing Spring 104.0 into "/opt/spads/var/spring/104.0-linux64"...
20171229022954 - NOTICE   - [SpadsUpdater] Spring 104.0 installation complete.
20171229022955 - NOTICE   - [SpadsInstaller] SPADS components are up to date, proceeding with installation...
20171229022955 - NOTICE   - [SpadsInstaller] Generating Perl Unitsync interface module...
7/15 - Please enter the absolute path of the Spring data directory containing the games and maps hosted by the autohost, or press enter to use a new directory instead [new] ? 
20171229022957 - NOTICE   - [SpadsInstaller] Retrieving the list of games available for download...
20171229022959 - WARNING  - [SpadsInstaller] Unable to retrieve archives list for game Zero-K
20171229022959 - NOTICE   - [SpadsInstaller] Directory "/opt/spads/var/spring/data/games" created

Directory "/opt/spads/var/spring/data/games" has been created to store the games used by the autohost.
You can download one of the following games in this directory automatically by entering the corresponding game abreviation, or you can choose to manually place some games archives there then enter "none" when finished:
  ba : Balanced Annihilation V9.46
  bac : BA Chicken Defense V3.23
  evo : Evolution RTS v10.97
  jauria : Jauria RTS 0.6.7
  metalfactions : Metal Factions v0.991
  nota : NOTA 1.92
  phoenix : Phoenix Annihilation V1.01
  s44 : Spring: 1944 3.00
  swiw : Imperial Winter b63
  tard : Robot Defense v3.05.7
  tc : The Cursed 1.437
  techa : Tech Annihilation v3.05.0
  xta : XTA 9.752

8/15 - Which game do you want to download to initialize the autohost "games" directory (ba,bac,evo,jauria,metalfactions,nota,phoenix,s44,swiw,tard,tc,techa,xta,none) [ba] ? 
20171229022959 - NOTICE   - [SpadsInstaller] Downloading Balanced Annihilation V9.46...
20171229023002 - NOTICE   - [SpadsInstaller] File ba-V9.46.sdz downloaded.
20171229023002 - NOTICE   - [SpadsInstaller] Directory "/opt/spads/var/spring/data/maps" created

Directory "/opt/spads/var/spring/data/maps" has been created to store the maps used by the autohost.
You can download a minimal set of 3 maps ("Red Comet", "Comet Catcher Redux" and "Delta Siege Dry") in this directory automatically, or you can choose to manually place some maps archives there then enter "no" when finished.

9/15 - Do you want to download a minimal set of 3 maps to initialize the autohost "maps" directory (yes,no) [yes] ? 
20171229023002 - NOTICE   - [SpadsInstaller] Downloading maps...
20171229023005 - NOTICE   - [SpadsInstaller] Checking Perl Unitsync interface module...
20171229023005 - CRITICAL - [SpadsInstaller] Unable to load Perl Unitsync interface module (Can't locate Win32.pm in @INC (you may need to install the Win32 module) (@INC contains: /opt/spads /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.24.1 /usr/local/share/perl/5.24.1 /usr/lib/x86_64-linux-gnu/perl5/5.24 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.24 /usr/share/perl/5.24 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base) at /opt/spads/PerlUnitSync.pm line 26.
BEGIN failed--compilation aborted at /opt/spads/PerlUnitSync.pm line 26.
Compilation failed in require at (eval 22) line 2.
BEGIN failed--compilation aborted at (eval 22) line 2.
)
The command '/bin/sh -c perl /opt/spads/spadsInstaller.pl' returned a non-zero code: 1

Thanks

Restrict !promote command when game is full

When numbers of players are reached from nbTeams / Teamsize exactly.
With this, it avoids %p (nil) value taking a blank space in the message, like on BlackHoleHost2 for instance below :

[16:53:55] * BlackHoleHost2 * player(s) needed for battle "The BlackHoleHost - Revenge" [Balanced Annihilation V9.43, DeltaSiegeDry] ([AFUS]Ares)
[16:54:32] * [FAST]AutoHost1 * 60 player(s) needed for battle "** Tech Annihilation **" [Tech Annihilation v2.41.0, techno lands 3v3 v2] ([DIE]Vatermoerder)

You can, for instance, reject !promote command with a message like :
Promote command is not needed, game is already full.

Reported ("talked" exactly) here > https://springrts.com/phpbb/viewtopic.php?f=92&t=36420&p=583721#p583721

Server shuts down too soon

Originally posted in https://springrts.com/mantis/view.php?id=4362, relayed over here:

The issue is that the autohost (it seems) sometimes shuts down the server too soon, it doesn't give enough time for explosions to calm down even after the game has declared game over.

Like in this picture:
screen00629

Is this controllable from spads with some setting?

Resource bonus

Would it be possible to add a command to adjust resource bonuses? I haven't found a way to do so yet (without adding code).

Negative bonuses as well if possible.

Code to fix : Undefined value as ARRAY

In console, I discover that Spads gave me back the prompt :

NOTICE - [SPADS] Spring archives have been modified 1 minute and 26 seconds ago, auto-reloading archives...
Can't use an undefined value as an ARRAY reference at ./spads.pl line 1234.

Last line in spads.log :

20170930160204 - NOTICE - [SPADS] Spring archives have been modified 1 minute and 26 seconds ago, auto-reloading archives...

And the line on spads.pl 0.12.2 (or 0.12.2a) is
return 0 unless @{$r_availableMods};

error "Can't locate SimpleEvent.pm in @INC" at launch on Archlinux

hello:

Today I upgraded my Arch server
seems that new perl is used and is not able to locate local modules like SimpleEvent and SimpleLog when launching spads

This is perl 5, version 26, subversion 0 (v5.26.0) built for x86_64-linux-thread-multi

spads shows

Can't locate SimpleEvent.pm in @INC (you may need to install the SimpleEvent module) (@INC contains: /usr/lib/perl5/site_perl /usr/share/perl5/site_perl /usr/lib/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib/perl5/core_perl /usr/share/perl5/core_perl) at ./spads.pl line 38.
BEGIN failed--compilation aborted at ./spads.pl line 38.

Thanks

Code to fix : PERL WARNING: Use of uninitialized value $data{"access"} in string eq

In console, I discover some Perl' Spads warnings in the console :

ERROR    - [SPADS] PERL WARNING: Use of uninitialized value $data{"access"} in string eq at .../SpadsServeur/SpadsConf.pm line 537.
ERROR    - [SPADS] PERL WARNING: Use of uninitialized value $data{"country"} in string eq at .../SpadsServeur/SpadsConf.pm line 537.
ERROR    - [SPADS] PERL WARNING: Use of uninitialized value $data{"cpu"} in string eq at .../SpadsServeur/SpadsConf.pm line 537.
ERROR    - [SPADS] PERL WARNING: Use of uninitialized value $data{"bot"} in string eq at .../SpadsServeur/SpadsConf.pm line 537.
WARNING  - [SPADS] Disconnecting from lobby server (broken connection detected)
NOTICE   - [SPADS] Lobby server default engine is Spring 104, UnitSync is using Spring 103
NOTICE   - [SPADS] TrueSkill service available
WARNING  - [SPADS] Disconnected from lobby server (timeout)
NOTICE   - [SPADS] Lobby server default engine is Spring 104, UnitSync is using Spring 103
NOTICE   - [SPADS] TrueSkill service available
NOTICE   - [SPADS] Spring archives have been modified 1 minute and 19 seconds ago, auto-reloading archives...

Last lines in spads.log :

20171004033722 - ERROR    - [SPADS] PERL WARNING: Use of uninitialized value $data{"access"} in string eq at .../SpadsServeur/SpadsConf.pm line 537.
20171004033722 - ERROR    - [SPADS] PERL WARNING: Use of uninitialized value $data{"country"} in string eq at .../SpadsServeur/SpadsConf.pm line 537.
20171004033722 - ERROR    - [SPADS] PERL WARNING: Use of uninitialized value $data{"cpu"} in string eq at .../SpadsServeur/SpadsConf.pm line 537.
20171004033722 - ERROR    - [SPADS] PERL WARNING: Use of uninitialized value $data{"bot"} in string eq at .../SpadsServeur/SpadsConf.pm line 537.
20171004033722 - INFO     - [SPADS] Request to join battle denied for user wen001
20171004033723 - WARNING  - [SPADS] Disconnecting from lobby server (broken connection detected)
20171004033723 - NOTICE   - [SpringLobbyInterface] Disconnecting from lobby.springrts.com:8200
20171004033724 - NOTICE   - [SpringLobbyInterface] Connecting to lobby.springrts.com:8200
20171004033724 - NOTICE   - [SPADS] Lobby server default engine is Spring 104, UnitSync is using Spring 103

And the line on spads.conf is
next if($data{$field} eq '');

Seems that happened because the connexion to lobby were falling down or it's for another reason maybe ?
I reported it here because I saw this log on only 1 of the 16 hosts.
Some of the others showed broken connexion detected messages, some others with extra message
ERROR - [SPADS] Unable to open battle (To few arguments: 4)

Perl Warn : Use of uninit value in SpadsConf.pm

Yop !

Today, I restarted autohost [ACE]Ticots (remind : ustable), and I received an error in the console at the end :

NOTICE   - [SPADS] Initializing SPADS 0.12.2a
NOTICE   - [SPADS] Loading Spring archives using unitsync library version 104 ...
WARNING  - [SPADS] Spring archives loading process took 2 minutes and 32 seconds
NOTICE   - [SPADS] Spring server mode: dedicated
NOTICE   - [SimpleEvent] Event loop initialized using internal model
NOTICE   - [SPADS] <AutoSpec> Plugin loaded (version 0.1)
NOTICE   - [SPADS] <CustomAliases> Plugin loaded (version 0.1): 77 aliases configured
NOTICE   - [SPADS] <DownloadArchives> Plugin loaded (version 0.1)
NOTICE   - [SPADS] <Resign> Plugin loaded (version 0.2)
NOTICE   - [SPADS] <InGameMute> Plugin loaded (version 0.4)
NOTICE   - [SPADS] <Poke> Plugin loaded (version 0.2)
NOTICE   - [SPADS] <PreventVoteExploit> Plugin loaded (version 0.4)
NOTICE   - [SimpleEvent] Starting event loop...
NOTICE   - [SPADS] TrueSkill service available
ERROR    - [SPADS] PERL WARNING: Use of uninitialized value in string eq at /home/.../SpadsConf.pm line 2235.

If you want me publishing extra logs, plz remind me how to enable, I will post it back as soon as I can.

Provide a plugin to mitigate vote system exploits

In Spring context where anyone can create any number of accounts easily, it's hard to ensure vote uniqueness: players can exploit the vote system easily by creating multiple accounts and then using them to vote in SPADS autohosts.

It should be quite easy to make a small plugin to prevent multiple votes from same IP address for newbie ranked accounts (i.e. if any account with a given IP address has already voted, all other newbie ranked accounts from same IP address are removed from the list of remaining voters).

This would NOT prevent vote system exploits, it would just make them a bit harder, forcing exploiters to use several VPNs at the same time for example.

Unintelligible SPADS messages

Could something be done about these messages? I doubt any newbie would know that in some context
"you are not allowed to call command "start" in current context."
means "you are not allowed to call command "start" while being a spectator"

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.