Skip to content

Commit 413b08b

Browse files
committed
Ready for 1.2.0
===============
1 parent f6d099e commit 413b08b

File tree

8 files changed

+80
-42
lines changed

8 files changed

+80
-42
lines changed

.github/workflows/copy_license.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ jobs:
1616
- name: Check if LICENSE file needs to be updated
1717
id: check_license
1818
run: |
19-
if [ ! -f LICENSE ] || ! cmp -s res/tooltips/LICENSE.txt LICENSE; then
19+
if [ ! -f LICENSE ] || ! cmp -s res/text/LICENSE.txt LICENSE; then
2020
echo "needs_update=true" >> $GITHUB_ENV
2121
else
2222
echo "needs_update=false" >> $GITHUB_ENV
@@ -25,7 +25,7 @@ jobs:
2525
- name: Copy LICENSE file
2626
if: env.needs_update == 'true'
2727
run: |
28-
cp res/tooltips/LICENSE.txt LICENSE
28+
cp res/text/LICENSE.txt LICENSE
2929
3030
- name: Commit and push changes
3131
if: env.needs_update == 'true'

README.md

Lines changed: 64 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,94 @@
11
# ![Top Down Sprite Maker](https://raw.githubusercontent.com/jbunke/tdsm-art/refs/heads/master/_tdsm/logo/banner.gif)
22

3-
***Top Down Sprite Maker*** is a flexible and powerful **pixel art character creation tool**. It is a desktop GUI application with executable binaries distributed for Windows, macOS, and Linux distributions.
3+
***Top Down Sprite Maker*** (*TDSM*) is a flexible and powerful **pixel art character creation tool**. It is a desktop GUI application with executable binaries distributed for Windows, macOS, and Linux distributions.
44

55
[![Buy on itch.io](https://raw.githubusercontent.com/jbunke/tdsm-art/refs/heads/master/_tdsm/assets/itch-button.png)](https://flinkerflitzer.itch.io/tdsm)
6+
[![API](https://raw.githubusercontent.com/jbunke/tdsm-art/refs/heads/master/_tdsm/assets/api-button.png)](https://github.com/jbunke/tdsm-api)
67
[![Art repository](https://raw.githubusercontent.com/jbunke/tdsm-art/refs/heads/master/_tdsm/assets/art-repo-button.png)](https://github.com/jbunke/tdsm-art)
7-
[![Changelog](https://raw.githubusercontent.com/jbunke/tdsm-art/refs/heads/master/_tdsm/assets/changelog-button.png)](https://github.com/jbunke/tdsm/blob/master/res/tooltips/changelog.txt)
8-
[![Roadmap](https://raw.githubusercontent.com/jbunke/tdsm-art/refs/heads/master/_tdsm/assets/roadmap-button.png)](https://github.com/jbunke/tdsm/blob/master/res/tooltips/roadmap.txt)
8+
[![Changelog](https://raw.githubusercontent.com/jbunke/tdsm-art/refs/heads/master/_tdsm/assets/changelog-button.png)](https://github.com/jbunke/tdsm/blob/master/res/text/changelog.txt)
9+
[![Roadmap](https://raw.githubusercontent.com/jbunke/tdsm-art/refs/heads/master/_tdsm/assets/roadmap-button.png)](https://github.com/jbunke/tdsm/blob/master/res/text/roadmap.txt)
910

1011
---
1112

13+
## Sprite styles
14+
15+
While most similar programs are built around a specific sprite style (art style, directions, supported animations, etc.), *TDSM* is built to support **multiple** sprite styles. Furthermore, these sprite styles can be distributed as **ZIP files**, and can thus be **created, modified, and shared** by the community.
16+
1217
![Example](https://raw.githubusercontent.com/jbunke/tdsm-art/refs/heads/master/_tdsm/assets/runthrough.gif)
1318

14-
<div align="center">Making myself in the <em>Hokkaido</em> sprite style</div>
19+
<div align="center">Customizing a character in a sprite style based on the Generation IV Pokémon games</div>
20+
21+
### Flexibility
22+
23+
*TDSM* sprite styles define their own composition **layers**, supported **directions** (whether 4, 6, or 8), and **animations**.
24+
25+
### Getting and using sprite styles
26+
27+
The program launches with a basic "Default" 8-directional 32-bit sprite style that acts as a sort of tech demo.
28+
29+
You can download/buy additional sprite styles online. Sprite styles made or approved by me are added to [this Itch.io collection](https://itch.io/c/5834066/top-down-sprite-maker-approved-sprite-styles). Sprite styles inspired by established IPs, such as *Pokémon*, are always distributed for free.
30+
31+
### Making your own sprite styles
32+
33+
> As of the release of v1.2.0, the scripting API has not yet been properly documented, and the DeltaScript language specification is outdated and does not reflect the semantics of the language interpreter that runs in *TDSM*. These resources will be updated as soon as possible.
34+
35+
Making sprite styles for TDSM consists of two main components:
36+
37+
* Programming a `manifest.tds` script file that defines the sprite style's composition logic
38+
* Drawing the assets that are composed according to the rules defined in the script
39+
40+
Scripts are written in [*DeltaScript*](https://github.com/jbunke/deltascript) (a scripting language I designed for use with specific applications) and the [*TDSM* scripting API](https://github.com/jbunke/tdsm-api).
41+
42+
> A full tutorial and additional resources will be available shortly.
1543
16-
## Key Features
44+
---
45+
46+
## Features
47+
48+
### Customize
49+
50+
*TDSM* gives you complete freedom to customize every facet of your character, yet the sprite assembly rules still ensure that sprites always look good and production-ready.
1751

18-
* **Multiple sprite styles:** Unlike most pixel art character creators, which are built for a specific sprite art style, *TDSM* is designed and built with a modular, logic-first approach that allows for it to support multiple sprite styles with unique sets of animations, directions, and customization options.
19-
* **Complex customization logic:** Customization layers are connected with rules that cause them to affect each other
20-
* **Layer masks:** Equipping a hat or helmet will mask the hair pixels that should be confined by the headwear [**[ screenshot ]**](https://raw.githubusercontent.com/jbunke/tdsm-art/refs/heads/master/_tdsm/assets/mask.gif)
21-
* **Dynamic updates:** Changing your body type propagates changes to your clothing layers to reflect the updated sprite dimensions without altering the data of the clothing equipped [**[ screenshot ]**](https://raw.githubusercontent.com/jbunke/tdsm-art/refs/heads/master/_tdsm/assets/change-propagation.gif)
22-
* **Controlled randomization:** Each customization layer can be "locked"; locking a layer will ignore it when a random sprite is generated, giving the user granular control over which components may be randomized [**[ screenshot ]**](https://raw.githubusercontent.com/jbunke/tdsm-art/refs/heads/master/_tdsm/logo/itch/feat-lock-layers.gif)
23-
* **100% configurable sprite sheets**
24-
* **Custom sprite size:** Pad or crop each animation frame at any edge for sprites ranging from 1x1 pixel to 128x128 [**[ screenshot ]**](https://raw.githubusercontent.com/jbunke/tdsm-art/refs/heads/master/_tdsm/assets/padding.gif)
25-
* **Sequencing & Inclusion:** Determine the *order of directions and animations in the exported sprite sheet*, as well as which directions and animations to *include* [**[ screenshot ]**](https://raw.githubusercontent.com/jbunke/tdsm-art/refs/heads/master/_tdsm/assets/sequencing.gif)
26-
* **Layout:** Determine the axis along which directions and animations are exported in the sprite sheet, as well as how distinct animations follow one another [**[ screenshot ]**](https://raw.githubusercontent.com/jbunke/tdsm-art/refs/heads/master/_tdsm/assets/layout.gif)
27-
* **Export formats:** In addition to the standard PNG sprite sheet, *TDSM* optionally exports the sprite sheet's metadata in a JSON file, and the sprite sheet as a [*Stipple Effect*](https://github.com/stipple-effect/stipple-effect) project with the contents of each customization layer on its own layer in the file [**[ screenshot ]**](https://raw.githubusercontent.com/jbunke/tdsm-art/refs/heads/master/_tdsm/assets/export-formats.gif)
52+
* **Controlled randomization**: Generate random sprites with the click of a button. Randomization can be constrained by **locking** customization layers you wish to exclude. [**[ screenshot ]**](https://raw.githubusercontent.com/jbunke/tdsm-art/refs/heads/master/_tdsm/logo/itch/feat-lock-layers.gif)
53+
* **Smart layering rules**: Customization layers update dynamically based on changes to other layers they depend on. For example, changing your body type from "average" to "small" in the [*Pokémon* Gen. 4 Trainer](https://flinkerflitzer.itch.io/pokemon-gen-4-trainer) style will render your head a pixel lower and switch to the small body clothing assets, but the outfit choice will stay the same.
2854

29-
## Contributing
55+
### Configure
3056

31-
You can help me develop *TDSM* on both the programming and artistic fronts!
57+
Configure your sprite sheet to your exact needs. Have *TDSM* adapt to your existing projects rather than having to rework code or sprite sheet slicing configurations.
3258

33-
### Code
59+
* **Sizing**: Crop or pad individual sprites to your liking, ranging from 1x1 px to 128x128 px [**[ screenshot ]**](https://raw.githubusercontent.com/jbunke/tdsm-art/refs/heads/master/_tdsm/assets/padding.gif)
60+
* **Sequencing**: Determine which directions and animations to include in the export, and **in which order** [**[ screenshot ]**](https://raw.githubusercontent.com/jbunke/tdsm-art/refs/heads/master/_tdsm/assets/sequencing.gif)
61+
* **Layout**: Determine the axis along which directions and animations are exported in the sprite sheet, as well as how distinct animations follow one another [**[ screenshot ]**](https://raw.githubusercontent.com/jbunke/tdsm-art/refs/heads/master/_tdsm/assets/layout.gif)
3462

35-
* Follow [this link](https://github.com/jbunke/tdsm/issues) and press the **New issue** button to report a bug.
36-
* If you identify a bug that you think you can fix yourself, you are welcome to **fork the repository**, make your changes, and **submit a pull request** to the `dev` branch of this repository.
63+
### Export
3764

38-
### Art
65+
Export sprite sheets and associated data from TDSM in seconds.
3966

40-
* Check out the *TDSM* [art repo](https://github.com/jbunke/tdsm-art) for information on contributing art as a pixel artist.
67+
* Sprite sheet as a PNG image
68+
* Sprite sheet metadata as JSON *\[optional\]*
69+
* Sprite sheet with customization layers separated as [*Stipple Effect*](https://github.com/stipple-effect/stipple-effect) project (`.stip`) *\[optional\]*
70+
71+
### Save and load sprite data
72+
73+
Sprite customization data can be loaded into *TDSM* by uploading a JSON metadata file that matches a sprite style present in the current program session.
74+
75+
---
76+
77+
## Contribute
78+
79+
You can help me develop *TDSM* by [reporting bugs](https://github.com/jbunke/tdsm/issues/new?template=bug_report.md).
4180

4281
## License
4382

4483
*TDSM* is distributed under an [end-user license agreement](./LICENSE) (EULA).
4584

46-
### Dos and Don'ts
47-
48-
**You may...**
85+
### You may...
4986

5087
* Use *TDSM* for personal or commercial projects
5188
* Clone the *TDSM* source code and privately modify it to suit your needs
89+
* Distribute or sell *TDSM* sprite styles consisting of original work
5290

53-
**You may not...**
91+
### You may not...
5492

5593
* Distribute or sell copies of *TDSM* (whether modified or not)
5694
* Use *TDSM* for NFT or crypto-related projects
@@ -59,9 +97,3 @@ You can help me develop *TDSM* on both the programming and artistic fronts!
5997
> **Note:**
6098
>
6199
> Some sprite styles featured in TDSM are based on established IPs. The use of sprites in such styles in commercial projects (fan games, etc.) may infringe upon the copyright of the associated copyright holder.
62-
63-
## Dependencies
64-
65-
* **[_Delta Time_](https://github.com/jbunke/delta-time):** Handles GUI, execution loop, underlying menu logic, and sprite assembly
66-
* **[_STIP Parser_](https://github.com/stipple-effect/stip-parser):** Writes the layer-wise separated sprite sheet to a *Stipple Effect* project file (`.stip`)
67-
* **[_Color Processing_](https://github.com/jbunke/color-processing):** Color processing utilities like converting RGB to HSV

res/program

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
{name:Top Down Sprite Maker}
2-
{version:1.2.0.269}
3-
{devbuild:true}
2+
{version:1.2.0}
3+
{devbuild:false}

res/styles/default.zip

4.94 KB
Binary file not shown.

res/text/changelog.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
v1.2.0 - 2025-06-07 - Major update
1+
v1.2.0 - 2025-07-16 - Major update
22

33
[General]
44

res/text/tut_make_style.txt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ manifest.tds
2020
The "manifest.tds" file must be written in DeltaScript with the TDSM scripting
2121
API. DeltaScript is a scripting language designed by the same developer as
2222
TDSM, which serves as a base to design domain-specific languages. In this case,
23-
the DeltaScript + the TDSM scripting API gives you all the tools you need to
24-
define complex behaviours for "Top Down Sprite Maker" sprite styles.
23+
DeltaScript and the scripting API give you all the tools you need to define
24+
complex behaviours for "Top Down Sprite Maker" sprite styles.
2525

2626
The TDSM scripting API and the DeltaScript language reference are linked below.
2727

@@ -100,7 +100,7 @@ Tips
100100
You can download these sprite styles, extract the contents of the ZIP files,
101101
and...
102102
> read through the code in "manifest.tds"
103-
> see what other assets and resources are packaged as part of the sprite style
103+
> see what other assets and resources are packaged as part of ZIP file
104104

105105
It is especially recommended to look at the Pokemon Gen III and IV styles, as
106106
these demonstrate many of the important techniques and span a large chunk of
@@ -114,4 +114,5 @@ Tips
114114
and all the valid selection IDs as a CSV file. This way, sprite styles can be
115115
updated iteratively without having to make any code changes to "manifest.tds",
116116
which simply parses the CSV file and reads in the corresponding image assets.
117-
The Pokemon sprite styles cited in tip 1) utilize this technique.
117+
The Pokemon sprite styles cited in tip 1) utilize this technique, and the
118+
relevant "Stipple Effect" projects are included in the downloadable ZIP files.

res/version

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.2.0.269
1+
1.2.0

src/com/jordanbunke/tdsm/data/style/Styles.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,11 @@ public static void uploadStyleDialog() {
6666
).ifPresent(Styles::uploadFromFile);
6767
}
6868

69+
@SuppressWarnings("unused")
70+
public static void uploadFromScript(final Path path) {
71+
uploadFromFile(path.toFile());
72+
}
73+
6974
private static void uploadFromFile(final File archive) {
7075
try {
7176
uploadStyle(new FileInputStream(archive), true);

0 commit comments

Comments
 (0)