Code Monkey home page Code Monkey logo

universal-lpc-spritesheet-character-generator's Introduction

LPC Spritesheet Character Generator

Originally based on LPC Character generator. This generator attempts to include all LPC created art up to now.

Try it here.

The Liberated Pixel Effort is a collaborative effort from a number of different great artists who helped produce sprites for the project. If you wish to use LPC sprites in your project, you will need to credit everyone who helped contribute to the LPC sprites you are using. See below for how to do this.

Licensing and Attribution (Credits)

All art distributed with this project (all images in the spritesheets subdirectory) is licensed under the GNU GPL 3.0 (text) and/or Creative Commons Attribution-ShareAlike 3.0 (text) license(s). Some art may be available under other licenses too.

The file CREDITS.csv lists the authors, license(s), and links to the original URL(s), for each image in spritesheets. If you generate a sprite using this tool, you must credit all the authors. You can do this one of two ways:

  • Distribute the entire CREDITS.csv file along with your project.
  • Based on the layers you use the generator outputs the used spritesheets and their credits to a textfield. You are also enabled here to download this text as csv or txt straight to your machiness.

Either way, make sure this credits file is accessible from within your game or app and can be reasonably discovered by users (for instance, show the information on the "Credits" screen directly, or provide a visible link). If you don't want to show the entire credits file directly, should include a statement like this on your credits screen:

Sprites by: Johannes Sjölund (wulax), Michael Whitlock (bigbeargames), Matthew Krohn (makrohn), Nila122, David Conway Jr. (JaidynReiman), Carlo Enrico Victoria (Nemisys), Thane Brimhall (pennomi), bluecarrot16, Luke Mehl, Benjamin K. Smith (BenCreating), ElizaWy, MuffinElZangano, Durrani, kheftel, Stephen Challener (Redshrike), TheraHedwig, Evert, Pierre Vigier (pvigier), Eliza Wyatt (ElizaWy), Johannes Sj?lund (wulax), Sander Frenken (castelonia), dalonedrau, Lanea Zimmerman (Sharm), laetissima, kirts, Mark Weyer, Joe White, Mandi Paugh, William.Thompsonj, Manuel Riecke (MrBeast), Barbara Riviera, thecilekli, Yamilian, Fabzy, Skorpio, Radomir Dopieralski, Emilio J. Sanchez-Sierra, kcilds/Rocetti/Eredah, Cobra Hubbard (BlueVortexGames), DCSS authors, Marcel van de Steeg (MadMarcel), DarkwallLKE, Charles Sanchez (CharlesGabriel), Shaun Williams, Tuomo Untinen (reemax), Stafford McIntyre, PlatForge project, Tracy, Daniel Eddeland (daneeklu), William.Thomsponj, Joshua Taylor, Zi Ye, AntumDeluge, [email protected], Lori Angela Nagel (jastiv), gr3yh47, pswerlang, XOR, tskaufma, Inboxninja, Dr. Jamgo, LordNeo Sprites contributed as part of the Liberated Pixel Cup project from OpenGameArt.org: http://opengameart.org/content/lpc-collection License: Creative Commons Attribution-ShareAlike 3.0 (CC-BY-SA 3.0) http://creativecommons.org/licenses/by-sa/3.0/ Detailed credits: [LINK TO CREDITS.CSV FILE]

Contributing

Important: all art submitted to this project must be available under the Creative Commons Attribution-ShareAlike 3.0 and/or the GNU GPL 3.0 licenses.

  • By contributing original work to this project, you agree to license any orginal contributions made by you under both of these licenses.
  • If you are submitting art that was made by (or derived from work made by) someone else, please be sure that you have the rights to distribute that art under one of the two licenses.

When adding files to the project, please add a row to CREDITS.csv for each file you add. Note the entire list of authors for that image, a URL for each piece of art from which this image is derived, and a list of licenses under which the art is available.

To add sheets to an existing category, add the sheets to the correct folder(s) in spritesheets/. In addition, locate the correct sheet_definition in sheet_definitions/, and add the name of your added sheet to the variants array.

To add a new category, add the sheets to the correct folder(s) in spritesheets/. In addition, create a json file in sheet_definitions/, and define the required properties. For example, you have created at this point:

body_robot.json

A category can exist of n-layers. For each layer, define the z-position the sheet needs to be drawn at. For an example of a multi-layered definition, refer here here.

Finally, in source_index.html, add your new category at the desired position by adding a div_sheet_ like this:

div_sheet_body_robot

Make sure the name starts with div_sheet_, and match the postfix with the name of your json, in this case body_robot.

At this point, you will need to run a script that will generate the final index.html. In order to do that, run node scripts/generate_html.js from the root folder. This will generate the index.html from the source_index.html.

In case you want to push your changes, be sure to run this script and never change the index.html manually. The CI will reject any PR's that contain manual changes made on the index.html.

Run

To run this project, just clone the repo and open index.html in your browser of choice.

z-positions

TBD

Examples

alt text alt text alt text

universal-lpc-spritesheet-character-generator's People

Contributors

bluecarrot16 avatar drjamgo avatar gaidamakua avatar gaurav0 avatar gregoranders avatar jrconway3 avatar ledamacena avatar plutobox avatar reneeibeji avatar sanderfrenken avatar

Stargazers

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

Watchers

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

universal-lpc-spritesheet-character-generator's Issues

body sprite sheet and longsword sprite sheet frame numbers not matching up??

HI there, love this generator, I really appreciate you making this available. In my game, I want to load the sprite sheets using the same frame numbers for the weapons/armor/body. Using the same walking animation frame numbers for the body sheet and the longsword sheet, the long sword frames do not match. (Example: Walk left for the Body would be Frame numbers 117 to 125 based off 64x64. But those frame numbers do not work for the longsword, and more than likely the other weapons. Also, looks like the shields are a little off too. The Plate armor works good though!) Any thought on how I could get around this? Thanks!
Screen Shot 2022-07-11 at 3 59 38 PM

Loading time

I've noticed the loading time has crept up; it takes 4--6 seconds to load the generator on my machine. This isn't terrible in the grand scheme of things, but wondering if there are things we could do about this, since I suspect it will only get worse as more assets are added.

Most of the time is spent in the generateListHTML function. A few ideas to investigate:

  • The template-general.html file is requested by XmlHTTPRequest for each entry. Obviously this hits the cache, but I don't remember if there is an overhead to XHR even for retrieving cached files. We could try loading this template once to a global constant rather than each time
  • There are lots of network requests to load the JSON files. I suspect it would be more performant if they were combined together into a single file. Obviously this would be worse for development, but could maybe be addressed with a build step
  • replaceDivs calls $.replaceWith on the <div> elements used to indicate assets in the tree. Could this be refactored to use $.html() instead, which is generally faster?

Fix shading on male long sleeve and short sleeve shirts

Z order of facial items too low

The facial items (glasses, eyepatch, etc) are not rendering over heads. The z depth on all is set to 25 while the heads are set to 100 so they won't ever render. Probably should be around 125 in the JSON files.

This really is a great tool. Thanks for all the hard work.

UI update with a mobile responsive approach

Improve the UI of the website


The Synopsis

UI and UX of a website act as a great part of a project that helps users understand the platform and makes it easy to interact with the features and functionalities. A decent-looking website also creates more user attention. Modern and responsive UI is a must-have feature for pretty much any kind of project these days.

The Problem

The website only has a very basic set of stylings just for essential functions to work with. Not being responsive is a huge problem that can prevent people who use mobile devices to access this site.
character-generator-iphone-responsive-view

The Solution

I love to contribute to this project by helping to change the whole website's layout to be more responsive and user-friendly. Also, I have a modern design idea to make this website more modern looking with a minimal design as possible while keeping every main functionality of the website the same as before.

What to change
Layout

Layout should be more responsive for mobile screens as well as desktop, and laptop screens. So it needs an update for it's layout.

Buttons

Buttons can have a more stylish approach instead of default HTML buttons. The users should be able to identify the differences between different types of buttons that are doing different kinds of work.

Checkboxes and radio inputs

We can use custom inputs Instead of using the default HTML input elements( you can interact with these elements in the prototype ).

Color palette

I have a very minimal but modern-looking color palette for the design.


You can see the design by clicking here
Also see the prototype of the design by clicking here

Some staves use same hand as shield

Some staves are in the opposite hand as other weapons, e.g. halberd, scythe, or spears. This means they can't be used with shields.

https://sanderfrenken.github.io/Universal-LPC-Spritesheet-Character-Generator/#?body=Body_color_light&head=Human_male_light&weapon=Loop_staff_loop&weapon_magic_crystal=Crystal_blue&shield=Shield_spartan

  • Loop staff
  • Diamond staff
  • Gnarled staff
  • "Simple" staff

There is also some Z-fighting with shields, probably needs to be resolved by making shields 2-layer objects. Will make separate issue for that.

Make sure all shoes/feet can be used with all bases

I think all foot/shoe/boot sprites have been adapted to both male and female bases, so the male version should be usable with muscular and the female version with pregnant and teen. Need to review the JSON files to allow this in all cases.

Clothing items with dashes in names don't work

I can't select items (mostly pirate hat styles) that have a dash in the variant name; e.g. Tricorne lieutenant, which has variants named "black-bronze", "black-gold", "black-silver", etc. Instead, when I click on the item once, nothing happens. I would expect the URL to become https://sanderfrenken.github.io/Universal-LPC-Spritesheet-Character-Generator/#?body=Humanlike_white&hat=Tricorne_lieutenant_black-bronze

Weirdly, if I click on the item multiple times, it eventually works, but the URL gets gradually more messed up, and the selected object disappears if I refresh the page.

Do you know why this is happening? Are dashes prohibited? I noticed after I had added all the pirate stuff that other objects have underscores rather than dashes in their names, so we can maybe fix this by changing all the dashes to underscores in the files, variant names, etc...

License filter?

I was wondering if a filter by license can be helpful to only show assets for the intended use.
e.g. exluding GPL v3.0 licenses (I know not much will be left but still ;-) )

That way files without proper credits entry could also be hidden by default, one would have to enable "UNKNOWN LICENSE" or something

Question: how did you overlay the weapons sprites with the character's?

Hi,
first of all, fantastic work, it's really cool what you're doing!
second, I'm trying to overlay the weapons images on top of the character's (after I created the entire body with the head) and the images don't match, the bodies' are 64x64 and the weapons are 128x128, and in the generator it's seems you aligned it perfectly. Can you share how you did that? Thank you very much, your time answering this question is much appreciated!

No more staffs?

Where can I find the staffs? I thought they used to be on there. Thanks.

Weapons issues

The weapons section could use some love. I'm trying to add some new weapons and updating old ones, and I've collected a list of issues I encountered along the way. We can create separate issues for these if that would be preferable:

  • The organization of spritesheets/weapon/ is not very consistent, which makes it hard to figure out where to put things. Not sure the best approach here, but some thoughts:
    • It's confusing to need to sort weapons by animation ("thrust", "slash", "bow", etc.) when some weapons have multiple animations (halberd, simple staff); I am also drawing additional animations for sword, dagger, etc. so they will not fit neatly into one category.
    • Most weapons use oversized frames, so they'll need a separate "universal" sheet
    • Since the v3 character bases use the same hand positions, there shouldn't be a need for separate male/female versions... probably...
    • I think we should try to separate weapons into distinct objects when there are recolors; e.g. it's confusing to me that Thrust > Spear 2, Thrust > Spear black, and Thrust > simple staff are all in the same category.
    • I guess what I would propose is to make categories: "swords," "polearms," "bows", "bludgeons," "throwing weapons" etc., then have each distinct weapon type as an entry under one of those categories. Recolors should be grouped into the same entry as variants.
  • Bows do not have walk animations; walk animations were drawn by pvigier here: https://opengameart.org/content/lpc-walk-animations-for-bows
  • Several bow variants are numbered; these should probably be broken up by type ("great bow," "recurve bow", etc.), then different recolors named (or better yet, generated programmatically)
  • Shovels: there are 3 shovels: I think 1 and 2 should be removed in favor of 3.
    1. (1) Weapons > Thrust > Shovel 2
    2. (2) Weapons > Thrust > Spade
    3. (3) Tools > Thrust > Shovel
  • Spears: Thrust > Spear 2 fixes the broken walk animations of Thrust > spear; I propose replacing Thrust > spear with Thrust > spear 2
    • There are several spear recolors; these should be grouped into a separate weapon type
  • Axes: there are three axes. I propose deleting 2--3 in favor of 1.
    1. (1) Tools > Smash > Axe
    2. (2) Weapons > Slash > Axe
    3. (3) Weapons > Slash > Axe 2
  • Tools > Smash > {Axe, pickaxe, (war)hammer} don't have walk animations: example. pvigier drew nice ones here that could be added.
  • Weapons > Slash oversize > {Flail, Waraxe} should be split into layers and merged into Weapons > Slash oversize layered. Layered versions will work better with different heads and body types than masked versions. I obtained source images from BenCreating and am working on this.
  • Weapons > Thrust oversize (attack only) is a weird hodge-podge of lots of different stuff; there are lots of variants which are totally different types of weapons---some staffs, some spears, some tridents, etc.; they're all numbered instead of named too. None of them have walk animations, which would be neat to add at some point.
  • Add pvigier's swords: https://opengameart.org/content/lpc-dcss-swords

Missing information for red cape sprite

Just tried the generator for the first time and noticed the credits for the cape seem to be missing or broken:

cape/solid/male/red.png,,,,,,,,,BAD
cape/solid_behind/red.png,,,,,,,,,BAD

Can we have credits support the path if there's no direct image path?

The credits file right now is a bit cumbersome to support all palettes. I can understand that maybe some palettes were added by other people and need extra credentials, but I think we can clean this up a bit in this kind of way:

Maybe we can check by the exact path first, otherwise, we see if any path is within the range? For example:

hair/extensions/braidl/,,David Conway Jr. (JaidynReiman),"OGA-BY 3.0+, CC-BY 3.0+, CC-BY-SA 3.0, GPL 3.0",https://opengameart.org/content/lpc-1-hairstyle-2-hair-extensions-3-previously-unofficially-released-hairstyles,,,,,,,,,,,,,,,OK

If my braid is in the path, then this will be the fallback if the individual images don't exist. That will make it much easier to bulk add recolors or alternate formats.

Let's say, for example, I make some fixes to missing frames like in these bow sprites::
weapon/ranged/bow/great,"modified by daneeklu, from ""normal"" bow by wulax; walk animations by pvigier; split into layers and tweaked for v3 character bases by bluecarrot16","Daniel Eddeland (daneeklu), gr3yh47, Johannes Sjölund (wulax), Pierre Vigier (pvigier)",CC-BY-SA 3.0,https://opengameart.org/content/lpc-weapons-two-bows-a-spear-and-a-trident,https://opengameart.org/content/lpc-walk-animations-for-bows,,,,,,,,,,,,,,

After I make these modifications, I add my name:
weapon/ranged/bow/great/walk,,"David Conway Jr. (JaidynReiman), Daniel Eddeland (daneeklu), gr3yh47, Johannes Sjölund (wulax), Pierre Vigier (pvigier)",CC-BY-SA 3.0,https://opengameart.org/content/lpc-weapons-two-bows-a-spear-and-a-trident,https://opengameart.org/content/lpc-walk-animations-for-bows,,,,,,,,,,,,,,

On all walk animations it will include my name in the list and any sub-directories, but if that path is missing, it falls back to the higher up one.

Is that something which is reasonable to do? I think this could work and make it much easier to update these credits.

Need support for Godot plugin

@sanderfrenken
I would like to make usage of LPC sprites easier for Godot users.
The Idea is to export the generated sheet, keeping the layers seperated, to allow runtime modification (enabling layers, adding items/gear/etc).

The exported credits CSV has almost all needed information to do that (except zpos).
Adding the zpos to the credits feels out of place and bad design.

Also CSV is not the best format for Godot either as it is interpreted as language translation file by default.. JSON would be a better choice.

What do you think?

Long Hairstyle Replaced by Longknot

Just figured I should make an official issue for this (just in case someone else notices), but I already have a hotfix PR open:
#110

In the last update that got merged, I cleaned up my old hairstyles a tad bit, but apparently I accidentally pasted the longknot updates into long instead...

issue-long-replaced-with-longknot

Beards Behind Head

It looks like beards/mustaches are drawn behind the head in the latest version.

Additional animations

Hello,

Aren't you planning to add additional animations to a spritesheet?
For instance, jumping animation, damage taking animation, etc.

Universal LPC Spritesheet Generator - Missing license information for bows

While reviewing the credits file csv generated from the Universal LPC Spritesheet Generator website, it said that two files were missing licensing information and I would need to update them manually and report an issue on github. These files were weapon/ranged/bow/normal/walk/foreground/normal.png and weapon/ranged/bow/normal/normal.png.

Eye Wound Broken

Older versions showed the Eye Wound.

There appear to have been changes to how heads are set up.

Now Eye Wounds are not visible, regardless of selections tatus.

Hats -> Tricorne thatch: All color options are the same colored sprite

Hi sanderfrenken. Thank you so much for putting this together and having it available to us hobbyists/indie developers. One issue: under the LPC Sprite Sheet Generator (https://sanderfrenken.github.io/Universal-LPC-Spritesheet-Character-Generator/), the Tricorne thatch section under hats, the sprite does not change when selecting different color options. It just stays as the brown colored tricorne thatch sprite. Thought I would point that out. Thanks!

Jeff

Slit skirt doesn't render with Male body type

https://sanderfrenken.github.io/Universal-LPC-Spritesheet-Character-Generator/#?body=Body_color_olive&head=Human_male_olive&sex=male&hat=Cloth_hood_brown&clothes=Longsleeve_brown&jacket=none&cape=none&sash=Narrow_sash_charcoal&legs=Slit_skirt_brown&shoes=none&gloves=none
Expected behavior: Slit Skirt is added to the sprite, since it is a selected option (or the option isn't given to choose a slit skirt with this body type)
Actual behavior: My character has no pants 🥲

Lacking License info on multiple part of sprite

weapons/oversize/oversizeNone.png,!MISSING LICENSE INFORMATION! PLEASE CORRECT MANUALY AND REPORT BACK VIA A GITHUB ISSUE,,,,,,,,NOK
body/male/human/light.png,!MISSING LICENSE INFORMATION! PLEASE CORRECT MANUALY AND REPORT BACK VIA A GITHUB ISSUE,,,,,,,,NOK
body/wounds/eye_blood.png,!MISSING LICENSE INFORMATION! PLEASE CORRECT MANUALY AND REPORT BACK VIA A GITHUB ISSUE,,,,,,,,NOK
eyes/male/blue.png,!MISSING LICENSE INFORMATION! PLEASE CORRECT MANUALY AND REPORT BACK VIA A GITHUB ISSUE,,,,,,,,NOK
beards/male/beard/brown.png,!MISSING LICENSE INFORMATION! PLEASE CORRECT MANUALY AND REPORT BACK VIA A GITHUB ISSUE,,,,,,,,NOK
facial/glasses.png,!MISSING LICENSE INFORMATION! PLEASE CORRECT MANUALY AND REPORT BACK VIA A GITHUB ISSUE,,,,,,,,NOK
feet/shoes/male/brown.png,!MISSING LICENSE INFORMATION! PLEASE CORRECT MANUALY AND REPORT BACK VIA A GITHUB ISSUE,,,,,,,,NOK
legs/armour/male/11.png,!MISSING LICENSE INFORMATION! PLEASE CORRECT MANUALY AND REPORT BACK VIA A GITHUB ISSUE,,,,,,,,NOK

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.