Welcome Luke!

December 15th, 2021

We're growing the Spine team again, this time adding Luke who will help with support and runtimes development. Learn more about Luke in this brief interview.

Welcome to the team, Luke! Tell us a little bit about yourself and your background

Hello everyone! My name is Luke, and I’m originally from Arkansas. I grew up messing with electronic devices, computers, and playing video games, most notably Fallout 2, Doom 2, Lego Island 2, Star Wars Jedi Knight: Jedi Outcast 2, and Bionicle: The Game on repeat as I didn’t have access to many games and still had dial-up internet. Every time that I went to friends’ houses, I would always be seeking out the video game consoles or PCs that they had on tap to try and play all of the games that they owned; most notably, I spent many hours playing Super Mario 64, Super Smash Bros., Star Wars: Shadows of the Empire, and Donkey Kong 64 on both of my best friends’ Nintendo 64s.

When I got to the high school level, Benton High School started offering programming classes.It was the only “A” I would ever earn in high school, due to my interest in computers and the ability to program a game for the final assignment at the end of the course. I was instantly hooked on being able to see something that I programmed myself come to life immediately.

After I graduated high school, I tried to go to college but didn’t do that well. So I worked various odd jobs, and enlisted in the US Air Force as a Client Systems Technician.

What brought you to Spine?

I needed a job. In all seriousness, I had just moved to Puerto Rico to join the Air National Guard and was looking to try and move into a junior programmer role, as I’d just done a software development internship with the US Air Force during the last 6 months of my contract. I had been applying for many roles similar to what I did in the Air Force (which wasn’t programming, but more general computer support), but had wanted to become a software developer professionally to gain experience and try to switch to a different role under the umbrella of Information Technology.

I applied to Spine, and had an interview quickly after. I am very thankful to be here!

What's your role on the Spine team?

Currently, my role at Spine is to handle customer service related tasks, and I will eventually transition into a programming role for Spine. I thoroughly enjoy what I do, and hope to be as helpful as possible to as many people as possible. I also fill in any role that I can, and I’m hoping to continue to grow both as a programmer and in my knowledge of Spine’s inner workings.

Question from the audience: what is your all time favorite video game?

This is a really difficult question! Depending on the day, it can bounce between many different titles, such as the original Dark Souls, the Demon’s Souls remake, Devil Daggers, Star Wars Jedi Knight: Jedi Outcast 2, or Super Mario Sunshine; however, I would have to say that if I absolutely had to pick only one game, it would have to be Bloodborne. Bloodborne’s combat system is, in my estimation, still unrivaled for how well-designed and gripping it is. The world design, lore, music, exploration, and moment-to-moment gameplay are also the peak of FromSoftware’s Soulsborne series, and I am incredibly excited for Elden Ring to release.

Say "Hello" to Luke on the forum!

挤压和伸展 - 使用Spine创作动画 #5

December 10th, 2021

我们最新的“使用Spine创作动画”视频已经发布了!这一次我们探讨的是“挤压和伸展”原则,以及它为什么如此重要。使用提供的Spine项目来做视频中的练习,磨练你的动画技能!

Bilibili

论坛

祝大家快乐制作动画!

波浪原理 - 使用Spine制作动画 #4

September 8th, 2021

请观看我们的Spine动画教程系列的第四个视频!这次我们将讨论波浪原理,以及如何在动画中获得自然的波浪运动。可使用提供的Spine项目磨练你的动画技能!

Bilibili

论坛

祝大家快乐制作动画!

Spine goes NPM

September 1st, 2021

Good news, everyone! After our work on the massive Spine 4.0 release, we freed up time to tie up some loose ends. Today, we're happy to report that we've finished modularzing our spine-ts runtimes!

NPM registry

Historically, spine-ts was published as in form of .js/js.map/d.ts files as emitted by the TypeScript compiler. While the simple inclusion of, for example, spine-player.js via a script tag made starting out with spine-ts easy, it wasn't super nice to use with more complex build pipelines. Anyone using NPM or Yarn for dependency management had to use various workarounds to include our simple .js files.

No more! Starting today, spine-ts and all its backends for Canvas, WebGL, Three.js, and the Spine Web Player are now fully modularized and published to the NPM registry. If you are using NPM or Yarn for dependency management in your project, you're a simple install away from using one of the backends:

npm install @esotericsoftware/spine-player
npm install @esotericsoftware/spine-webgl
npm install @esotericsoftware/spine-canvas
npm install @esotericsoftware/spine-threejs

ECMAScript modules

We've made all components of spine-ts ECMAScript modules. These are understood by all the bundlers commonly in use, like webpack, Babel, Parcel, and esbuild. Once you've installed the spine-ts module you want to use via NPM or Yarn, you can access the exported constants, functions, and classes using the ECMAScript modules import syntax in your .js or .ts source files:

import spine from "@esotericsoftware/spine-player"

new spine.SpinePlayer("player", {
   skelUrl: "assets/spineboy-pro.skel",
   atlasUrl: "assets/spineboy-pma.atlas",
   animation: "run",
   premultipliedAlpha: true,
   backgroundColor: "#cccccc",
   viewport: {
      debugRender: true,
   },
   showControls: true,
});

Your bundler of choice will then find the dependency in your node_modules folder and bundle it together with the rest of your application code.

You can find all our published modules on the npm registry with the @esotericsoftware scope. The packages not only contain the module code, but also source maps and typings, which will be used automatically by your bundler and IDE of choice.

Vanilla JavaScript

What does this mean for users of the old vanilla JavaScript/script tag approach? Well, we have good news there too! We are keeping that in tact, with only one very minor breaking change (sorry, it couldn't be avoided).

The constants, functions, and classes of the spine-canvas, spine-webgl, and spine-threejs backends have up until now lived in the global spine.canvas, spine.webgl, and spine.threejs objects. Due to our new build pipeline, that is no longer the case. All exported constants, functions, and classes are now on the global spine object, together with the classes from spine-core. All you need to do is find references to spine.canvas, spine.webgl, and spine.threejs in your code, and change them to spine. That's it!

CDN hosting

We'll keep publishing the .js/js.map files. However, their location has now changed. Instead of hosting them on our own server, you can get them from a proper CDN called UNPKG. They put all packages on the NPM registry on Cloudflare and add some magic to resolve versions.

So if you've previously included say spine-player.js from our server at: http://esotericsoftware.com/files/spine-player/4.0/spine-player.js
Then you should now use the equivalent UNPKG URL which would be: https://unpkg.com/@esotericsoftware/spine-player@4.0.4/dist/iife/spine-player.js
UNPKG also hosts source maps, as well as a minified version of each module, for example: https://unpkg.com/@esotericsoftware/spine-player@4.0.4/dist/iife/spine-player.min.js

Development setup

We've also improved the development setup for working on spine-ts itself quite a bit. If you are working off of a fork of spine-ts, this might also benefit you! Find out more in the spine-ts README.md.