-
Notifications
You must be signed in to change notification settings - Fork 47
/
Copy pathNOTICE.txt
249 lines (205 loc) · 16.4 KB
/
NOTICE.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
SquidLib
Copyright 2011-2020 Eben Howard
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
This product includes software developed at
SquidPony (http://squidpony.com)
Thanks to TSMI and notostraca (Tommy Ettinger) of #rgrd for help in developing SquidLib.
Portions of Bresenham methods are derived from Bob Pendleton's C algorithm, which is in turn derived from Paul
Heckbert's algorithm ("Digital Line Drawing" from "Graphics Gems", Academic Press, 1990.
Portions of FOV and LOS classes are derived from works by Steven Blacken originally distributed as part of the Blacken
Library for roguelike games under the Apache 2.0 license.
Portions of some classes are derived from works by Jice originally distributed in the libtcod library under the BSD
license with the statement provided below in this document.
Portions of some classes are derived from works in the rot.js library with the statement provided below in this document.
The @Beta annotation is from Google's Guava library under the Apache 2.0 license; the @GwtIncompatible annotation is
probably from Google's GWT library or its documentation, but may also be from Guava.
The JRotation class (no longer in SquidLib) was based on code by Savvas Dalkitsis on stackoverflow.com.
The many random number classes have several authors; notably, AbstractRNG is smelC's idea and largely his
implementation. From Uncommon Maths, the CombinationGenerator and PermutationGenerator classes; changes were made to
PermutationGenerator based on techniques from user Joren on StackOverflow, http://stackoverflow.com/a/1506337 . The
MersenneTwister class is no longer based on Uncommon Maths, instead using Nick Galbreath's implementation from
https://github.com/javabeanz/javarng/blob/master/com/modp/random/MersenneTwister64.java . Certain methods in RNG and
various RandomnessSource implementations are based on Daniel Lemire's integer-multiplication method for fast ranged
random number reduction, as from https://lemire.me/blog/2016/06/27/a-fast-alternative-to-the-modulo-reduction/ .
The LightRNG class is based on SplitMix64.c by Sebastiano Vigna, released into the public domain and made available on
http://xorshift.di.unimi.it/ . It uses the SplitMix64 algorithm as published by Guy L. Steele Jr, Doug Lea, and
Christine H. Flood.
The XorRNG class is based on the C implementation of xorshift128+ by Sebastiano Vigna, released into the public domain
and made available on http://xorshift.di.unimi.it/
LongPeriodRNG is based on xorshift1024*phi, XoRoRNG is based on xoroshiro128+ , and the other credit for these is the
same as XorRNG. Starfish32RNG, Lathe32RNG, Oriole32RNG, and GWTRNG are based on modifications to xoroshiro64, the 32-bit
version of the 64-bit xoroshiro128; they all use different scramblers from xoroshiro128+, but use the same fundamental
structure for how they change their state. XoshiroStarPhi32RNG is based on xoshiro128**, but uses a different scrambler.
The PermutedRNG and PintRNG classes are based on the paper http://www.pcg-random.org/paper.html , describing PCG-Random
and its methodology written by Melissa E. O'Neill.
The SobolQRNG class and the resource in the resources/qrng folder were ported from Apache Commons Math, where Stephen
Joe and Frances Kuo are credited for the implementation.
The VanDerCorputQRNG class implements the sequence discovered by J.G. van der Corput in 1935, as well as the closely
related Halton sequence; the class also includes an implementation of Martin Roberts' multi-dimensional quasi-random
point sequence from http://extremelearning.com.au/unreasonable-effectiveness-of-quasirandom-sequences/ .
The IsaacRNG class is based off a Java implementation given for the Isaac cipher/RNG (usable for either) from
http://www.burtleburtle.net/bob/rand/isaacafa.html (public domain); the version uses here is a mix of the C code in
isaac64.c and the Java implementation by Bob Jenkins for 32-bit generation, and it produces 64 bits at a time in Java.
The JavaRNG class was contributed by Ben McLean to help compare the default JDK Random class with SquidLib's RNGs.
Most RandomnessSource implementations in SquidLib, and all recommended ones, have been tested with PractRand by Chris
Doty-Humphrey, from http://pracrand.sourceforge.net/ . PractRand has been an invaluable tool in assessing the quality
of home-made RNGs. The earlier TestU01 framework by Pierre L'Ecuyer has also been used,
http://simul.iro.umontreal.ca/testu01/tu01.html , as has nda by Geronimo Jones, http://gjrand.sourceforge.net/ .
The squidpony.squidgrid.mapping.styled package and the JSON resources are derived from Sean T. Barrett's Herringbone
Wang Tiles library, part of the nothings set of libraries, which were released into the public domain.
The NeuralParticle and WeightedLetterNamegen classes are based on work by Ebyan Alvarez-Buylla .
BinaryHeap, ShortVLA, IntVLA, and SparseTextMap are based closely off primitive-backed collections from libGDX,
Apache-licensed.
IntDoubleOrderedMap, OrderedMap, and OrderedSet are based on similar code from Sebastiano Vigna's fastutil library,
https://github.com/vigna/fastutil . Arrangement, K2, K2V1, UnorderedMap, and UnorderedSet have been based on those.
The DijkstraMap class is original but owes substantial credit to Edsger Dijkstra
for creating the algorithm that shares his name, Brian Pender and Joshua Day for
pioneering Progressive Dijkstra Scan, and the IRC user known as kaw for a
Clojure-language implementation that would help shape this design, which is, it
turns out, subtly different from Dijkstra's Pathfinding Algorithm and is closer
to Breadth-First Search, though it still produces what is usually called a
Dijkstra Map by roguelike developers.
The Spill class derives much of its implementation from DijkstraMap but also from techniques Joshua Day described for
using randomized floodfill and a Lua implementation related to his postings on the subject.
The SoundMap class also derives much of its implementation from DijkstraMap but
is otherwise practically novel.
The squidpony.squidai.AOE interface and its implementing classes are essentially
made possible by the Progressive Dijkstra Scan technique, so more thanks must go
to Brian Pender and Joshua Day.
CrossHash.Water and CrossHash.Yolk are closely related to wyhash v1, available at
https://github.com/wangyi-fudan/wyhash/blob/master/wyhash_v1.h , though neither is
nor can be an exact port due to JVM differences.
The other hashing techniques used in CrossHash are not derived (at least not
intentionally) from any other hashing algorithms; earlier versions contained
code derived from FNV-1a and Daniel Lemire's StronglyUniversalStringHashing projects.
Some of the hashes in CrossHash have been tested with smhasher to verify their quality;
the forks of smhasher used are available at https://github.com/rurban/smhasher and
an updated version of https://github.com/demerphq/smhasher , with changes available at
https://github.com/tommyettinger/smhasher-with-junk .
The phonetic locality-sensitive hashing of word sounds in NaturalLanguageCipher
owes some credit to eudex, a Rust library for the same type of hashing which can
be found at https://github.com/ticki/eudex , because eudex showed there was
(more than one) way to encode a word sound approximately in 64 bits. No code is
shared between eudex and SquidLib, however.
Small but important bugfixes and additions were contributed by Ivan Polozhēntsev
( https://github.com/uzername/ , introduced the concept and some code for
SquidKeys.ignoreInput), David Becker (found and fixed several GDX-related bugs),
and Shane Chubb (found and fixed a bug in the libGDX TextCellFactory).
This is not a complete list of bugfix contributors.
MixedGenerator is an extension and port of Drunkard's Walk dungeon generation code
written by Michael Patraw; a more recent version of his code is available at
https://github.com/mpatraw/butterfly . The version SquidLib extended was older and
any newer code should probably derive from butterfly instead. Several other classes
make use of MixedGenerator, and the Drunkard's Walk technique is very versatile.
MimicFill and DetailedMimic are direct ports of https://github.com/mxgmn/ConvChain and
https://github.com/mxgmn/SynTex from C# to Java; the former is public domain while the
latter is MIT-licensed. MimicWFC is a direct port of https://github.com/mxgmn/WaveFunctionCollapse
by the same author, and also MIT-licensed.
ProjectionTools and parts of WorldMapGenerator.HyperellipticalMap are derived from
Justin Kunimune's work on Map-Projections, https://github.com/jkunimune15/Map-Projections ,
which is MIT licensed. Those in turn are derived from Waldo Tobler's work on the
hyperelliptical map projection that bears his name.
The squidpony.squidai.graph package is almost entirely drawn from the MIT-licensed simple-graphs
library by earlygrey, available at https://github.com/earlygrey/simple-graphs/tree/master . This
library replaces the slightly older squidpony.squidai.astar package, since simple-graphs tends to
be significantly faster, while also being simpler and more feature-packed.
A substantial amount of work on SquidLib has been done by smelC, https://github.com/smelc ,
especially in the areas of color handling, text layout, and shape analysis for dungeons.
His help has been very welcome in helping to manage the growing codebase and to keep
complex code clean and robust, as well.
All of the TrueType and bitmap fonts in the assets directory of the source tree were made by Tommy
Ettinger and released into the public domain, except:
* Inconsolata and the fonts based on it (all containing Inconsolata in their filename are derived from Raph
Levien's work as modified in https://github.com/MihailJP/Inconsolata-LGC , all with SIL OFL as their license
and any alterations made here do not change the original work's licensing). Portions of the fonts derived
from Inconsolata also incorporate glyphs from DejaVu Sans Mono, http://dejavu-fonts.org/wiki/Main_Page ,
which has a different license but our usage seems to be specifically allowed on their license page,
http://dejavu-fonts.org/wiki/License :
```
The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or
characters in the Fonts may be modified and additional glyphs or characters may be added to the Fonts,
only if the fonts are renamed to names not containing either the words "Bitstream" or the word "Vera".
```
* DejaVu Sans Mono is also present in DejaVuSansMono-distance.png; a license accompanies it in the same folder.
* Iosevka has several variants in the assets folder, including Iosevka and Iosevka Slab, all of which have the
same license (SIL OFL 1.1); this license accompanies the fonts wherever they are.
* The fonts containing CM-Custom in their names are modified from Computer Modern Unicode, also SIL OFL, and
the originals, plus some related fonts, can be found at https://fontlibrary.org/en/font/cmu-typewriter .
They were originally the work of Donald Knuth for the TeX typesetting system.
* Gentium is SIL OFL, originally by SIL, and has had minimal modification, if any. The original site is
http://software.sil.org/gentium/ .
* Noto Sans and Noto Serif are SIL OFL, originally by Google, Inc., and has had minimal modification. The original
files, as well as specialized versions, can be obtained from https://www.google.com/get/noto/ .
* Orbitron is SIL OFL 1.1, originally by The League of Movable Type, and can be obtained from
http://www.theleagueofmoveabletype.com/fonts/12-orbitron .
* The .png images containing the name Tentacle are public domain, originally by Henrique Lazarini (also known
as 7Soul1, http://7soul1.deviantart.com/ ); some have modifications applied to a vector trace of the
original pixel art.
* icons.png is derived from the many icons supplied by http://game-icons.net/ ; it has its own license and
people to credit in a file distributed with it, icons-license.txt .
* BoxedIn is Creative Commons Zero-licensed, originally by FontStruct user samw3. It does not require its license to
be redistributed, as per CC0.
* GoMono is BSD-licensed (3-clause) by Bigelow & Holmes Inc. for the Go project, and must be redistributed with
GoMono-License.txt in the same folder.
* Font Awesome Free, which is used in the files awesome-solid-msdf.fnt and awesome-solid-msdf.png, is OFL-licensed,
and its license must be distributed with those files (it is in Font-Awesome-license.txt).
* Source Code Pro and Source Han Code JP are OFL-licensed by Adobe Systems Incorporated, with the licenses for each in
SourceCodePro-License.txt and SourceHanCodeJP-license.txt , respectively.
* The font square by Wouter van Oortmerssen is licensed under a Creative Commons Attribution 3.0 Unported License,
and it must be redistributed with square-License.txt .
* The fonts 7-12-serif, bloccus, ComputerSaysNo, and Monty are all originally authored by Christian Munk (Monty was
modified somewhat by Tommy Ettinger), and are licensed under a Creative Commons Attribution Share Alike license
( http://creativecommons.org/licenses/by-sa/3.0/ ).
libtcod 1.5.2 license text:
Copyright (c) 2008,2009,2010,2012 Jice & Mingos
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* The name of Jice or Mingos may not be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY JICE AND MINGOS ``AS IS'' AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL JICE OR MINGOS BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
rot.js license text:
Copyright (c) 2012-now(), Ondrej Zara
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of Ondrej Zara nor the names of its contributors may be used
to endorse or promote products derived from this software without specific
prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.