00:00
00:00
ninjamuffin99
I like Newgrounds stuufff

Cameron muffin99 @ninjamuffin99

Age 24

Money

Middle School Dropout

Toronto, Canada

Joined on 10/2/15

Level:
47
Exp Points:
24,061 / 24,520
Exp Rank:
596
Vote Power:
8.80 votes
Audio Scouts
10+
Art Scouts
10+
Rank:
Pvt. First Class
Global Rank:
2,903
Blams:
586
Saves:
2,471
B/P Bonus:
20%
Whistle:
Silver
Trophies:
87
Medals:
514
Supporter:
8y 8m 22d

ninjamuffin99's News

Posted by ninjamuffin99 - June 9th, 2018


(This was originally posted to my Tumblr, yall should check that out I'll prob be writing some more technical posts there)

 

What’s up yall. Since November, I’ve been making “Must Murder Mommy” with PhantomArcade. It’s the greatest game about killing your hot mom, which will be releasing for free on mobile and on the web (here on Newgrounds to be specific).

Phantom is a ballin’ animator, so the game is going to have a good amount of animation frames. However very few people actually discuss what goes into loading and handling all these animation frames. So I thought I’d share my experiences in trying to load a bunch of high quality animation to be used in the context of a video game.

5520715_152858564841_tumblr_inline_p9xsxyguhP1ujktb4_540.png

5520715_152858564721_tumblr_inline_p9xsyhCT9L1ujktb4_540.png

(The current spritesheets/texture atlas for our main characters, an explanation on why I use spritesheets will be below)

Backstory

I think I’ll start with the “backstory” of the many different techniques and workflows to me trying to load a lot of frames into the game.

I’m using HaxeFlixel to make this game with my guy Phantom. It’s an open source cross-platform 2D game engine powered by Haxe and OpenFL. None of that nerd shit matters too much other than to give you the info that I ain’t using some hotshot mainstream game engine, such as Unity or Gamemaker. While HaxeFlixel is VERY robust and super great, it’s a bit harder to Google something and find some easy answer, or some plugin that’ll solve all my problems. A lot of the tech I have to figure out on my own, and that includes efficient animation loading and shit.

So onto the game stuff. In the very first week of development, the first issue for me was getting the animation to load in-game. Phantom uses Flash CS4 to animate, so initially I thought that I could use a SWF(what Flash exports files as) to load the animation (in high ass quality too, since it’d be vector!) However this didn’t work out as planned. While OpenFL does have some kind of support for loading SWF’s for animation: 1. I did not actually figure it out lol. and 2. I couldn’t get it interacting with the HaxeFlixel game engine shit. Meaning that the Flixel logic operates completely separate from what would be the animations that play. So I wouldn’t be able to set interactions between game objects, and the mom/kid without reworking A LOT of logic (or maybe I’m just a dumbass IDK lol).

So loading SWFs didn’t work. I then thought of using Adobe Animate’s built in spritesheet exporter. If I couldn’t get SWFs going, spritesheets are the next best thing. However things aren’t exactly all fine and dandy. The way that Animate exports spritesheets are less than ideal. I think when I tried, the spritesheets were off grid (which the way I was trying to load them at the time, I needed them to be on a grid basically). So that was out of the question too (for now….).

After pulling my hair out until about 3AM in the morning, I finally somewhat found a solution, albeit a bit garbage and shitty. What I went with back then, was to export the animations as PNG sequences, so a PNG for every frame of animation. And then I’d stitch them together into a sequence in Aseprite (pixel art tool lol) so I could then export them into a USABLE spritesheet. Why this was garbage and shitty was for a few reasons. First of all I had to basically sort through ALL of the PNGs and manually input them into Aseprite, which was very hard and time consuming because it was repetitive, Aseprite doesn’t handle big images too well, and my PC is shit too lol that prob didnt help Aseprite. It was also hard to manage the files and edit them for the future, thus slowed down seeing and prototyping new animations in-game.

5520715_152858564661_tumblr_inline_pa2um2JyEn1ujktb4_540.png

The Github commits/updates (read bottom to top) of the game for that first night of trying to get animations loaded efficiently

The Aseprite/PNG sequence stuff was alright for a while. Mostly because I did it all in one session essentially so I didn’t deal with it too much. But when I did have to get new frames of animation in, I dreaded doing so. I knew I had to find another way. It was then when I remembered the tool Zoë, which is a tool to convert SWFs to spritesheets. This was SUPER helpful…. But only for so long.

Somewhat recent stuff I’ve tried

5520715_152858564423_X2TRj7X.png

The Zoe website

The way that Zoe works, is that you input a SWF, and you get a spritesheet and/or PNG sequence of the animation. However there were a few catches. I had to export them all as one SWF, through movieclips. So in the .fla Flash file me or Phantom would have to organize all the animations into a single movie clip. Otherwise it would export them all as separate spritesheet files (which I’ll need only 1). But I went along and did that for a while anyways. Until I found out about Spritesheet packer.

5520715_152858564322_tumblr_inline_pa2usoHh3M1ujktb4_540.png

Spritesheet packer is a ridiculously easy, lightweight, and free tool to convert a bunch of PNGs into a usable spritesheet. Actually I think the correct term is texture atlas? You may have noticed, but the images in the spritesheets at the top of this post aren’t aligned to some sort of grid, which I mentioned earlier that I needed them to be in. That’s because spritesheet packer also exports you a simple txt file, that would basically tell a parser where in the image file a certain frame is. So you don’t need the sprite sheet to be ordered chronologically, or in a grid, thus reducing the file size, and simplifying things in a few ways. And it turns out that good ol’ HaxeFlixel has a built in function for reading these Spritesheet packer txt files (called image maps btw). So my life got a lot easier from then on out. However I still had a few problems.

5520715_152858564213_tumblr_inline_pa2ux3ttik1ujktb4_540.png

The imagemap file for the kid, the corresponding spritesheet is the one from the top of the post

I got animation loading almost all sorted out, and the workflow was pretty great too. I would export the frames from Adobe Animate into PNG sequences ( I ditched Zoe because it would require more file prepwork, like making sure it’s all top left aligned or something) and then I literally just drag and drop them into spritesheet packer then it spits out a nifty little texture atlas, and I could get it all loaded into the game. Should be fine right? Well that part was just about perfect (for now), however then there’s the way the coding handles and loads animations. For simple animations, HaxeFlixel had a nice and easy way to load animations which basically looked like this: 

animation.add(”run”, [7, 8, 10, 11, 12], 12);

the first parameter (”run”) is the name of the animation that would be referenced in game. The second is an array of numbers (indicated by the square brackets) which is basically a list of where in the image map it will look for the frame of animation. The third parameter is simple the frames per second (12FPS because it’s essentially 24FPS on two’s, doesn’t work in all cases though). Now this works well in many many cases, but I think the single problem I had was that when I added new images to the spritesheet, it would offset the numbers in the imagemap, thus messing up which animations are which.

Current Workflow

This is where I use my final solution, which is referencing the imagemap files to get the correct frames, no matter what. So instead of referencing frames in a huge list that can change often:

animation.add(”run”, [7, 8, 10, 11, 12], 12);

animation.add(”poke”, [33, 35, 33, 34], 12);

Instead you break it down into smaller, sublists kinda:

animation.addByName(”run”, “kidRun_”, [0, 1, 2, 3, 4], “”, 12);

animation.addByName(”poke”, “kidPoke_”, [0, 2, 0, 1], “”, 12);

This function works very similar to the first one, except it has another parameter, which is the prefix (kidPoke_/kidRun_). So the game uses file names so that list position in the imagemap don’t affect the animations that are already implemented.

Things I may try in the future

This stuff is working all fine and dandy currently, but the workflow could be optimized. The dream would be to easily just work with SWF files, but like I mentioned earlier this would require a bit of heavy lifting on some of the backend tech. So the more realistic option is for me is to figure out how to parse Adobe Animate’s spritesheets and files properly. This would cut out the spritesheetpacker step, as well as cleanup the files more, since I would have no more use for PNG sequences. There’s probably gonna be some quirks and shit, but for now this seems like the next step if my current workflow is really bugging me.

So I think that’s it, hope all you goons may have learned something, and if you didn’t ah dangit OH WELL

(if there are things I could be more clear on please let me know and I’ll probably update this or something)


6

Posted by ninjamuffin99 - June 5th, 2018


hey Newgrounds, we did it guys, we hit 202 fans. I thought that shit was impossible, but yall showed me that dreams do come true.

For the special occasion I dropped a little podcast for Prom GOblin that I did with my boy FuShark. We talk about game design, and also a bunch of other bullshit in between: https://www.newgrounds.com/audio/listen/809093


Posted by ninjamuffin99 - May 31st, 2018


Yo what’s up New Grounds people. Thanks for 198 fans! Man it doesn’t feel too long ago when I was just bullshitting on Newgrounds with maybe 16 fans. I know with sites like Twitter, Youtube, etc. the follower numbers are much higher across the board (I myself have around 270 Twitter followers lol) but really those numbers don’t really mean as much as the Newgrounds numbers do. I know on Newgrounds, when someone follows me, I feel like they did so because they genuinely wanted to see what else I had. They cared about the things I made and did here.

 

Without Newgrounds I really don’t know where I’d be. I learned how to actually program (previoously I was using stuff like Stencyl, Renpy, or RPG Maker) from the Flixel tutorial game that's linked in the wiki. I did that during the summer animation jams of 2016. I’m not some aspiring animator or anything, but this site and the people on it give me a certain inspiration to create things like nothing else has. Before Newgrounds, I’d never even consider the thought of making music, since I had about zero experience or even interest previously. Before Newgrounds I wasn’t interested in art or creating it. The only Newgrounds relevant things that I did before I went on the site was making games, and animations (shitty SFM ones at that). So I think that’s why I still come to the “dead, inactive” Newgrounds, because of the community of people who share, collaborate, and interact on the site. Sure there are other reasons why but without the community of people that the site fosters so well, it’s very likely that I would have never stayed active on Newgrounds. And I’ll be making garbage games, all by myself, and complaining in some forum about why others are more successful than me or some shit like that. But instead, I’m making music and posting it to the audio portal, I practice art (or at least try heheh), I make games about once a month, and I often do those with other Newgrounds people. And I wouldn't have done any of this without the inspiration that this community gave me.

 

From late 2015 to mid 2017, I was living with a foster parent. In that time we had a bunch of disagreements and arguments, almost always because of the time I spent on the computer. Her main concerns were that I wasn’t interacting with people or doing anything with my life. But never once have I felt like that was true. Before Newgrounds, I’d just spend all my time playing games and whatnot. However after I came here, there was something for me to do, which all I wanted to do was make stuff and post it to Newgrounds. Because I didn't just want to sit by the sidelines and spectate while others do the creating, I wanted to be deep in the site and make ALL the shit. Maybe it’s an ego thing or something, but it got me to do shit. And to this day I plan on continuing to “do shit” around here for much longer. Either until I get banned or site dies lol.

 

When I thought of writing this post, I had SO much shit I wanted to say, like how the “Are we talking about Tom Fulp” copypasta is a scarily accurate representation of me. Or why the project system is the tightest shit. But I could probably write a whole novel on why I love and appreciate Newgrounds so much, and what it all means to me. Maybe I’d do so and post it do other sites like Medium.com and share it to other sites and be like a Newgrounds missionary lmao.

 

Anyways that’s enough weenie shit, yall probably already heard stuff similar to this in that Kaptainkristian vid from last year. I’m workin on a bunch of COOL SHIT, and the summer animation jams start TOMORROW, so that’s gonna be great. Also oops Robot Day July 10th too, maybe I’ll make a game for that. Also I’m doing a super small game, coming pretty soon. Also as usual I’m still working on that game with PhantomArcade, and it’s still good as hell (don’t wanna hype it up too much heheh). And it’s also very likely that I’ll be releasing a small EP of music sometime this month. THE POINT IS…. yall can probably catch me working on all of these live on Twitch so go drop a follow heheh https://www.twitch.tv/ninja_muffin99 HAHA GOTEEM (really tho it’d be sweet if Newgrounds had their own creative livestreaming platform, or at least some Twitch integration for when someone is live, take notes Tom)

 

THAT’S THE END OF THE NEWSPOST, THANKS FOR BEING COOL GUYS

Now if you don't mind....

5520715_152782201243_tomfulphentai.png


5

Posted by ninjamuffin99 - May 13th, 2018


Yall know what day it is, it's the day you gotta celebrate and appreciate all the mommy GFs in ur life ;)

So here's a few GIFs from me and @PhantomArcade's game "Must Murder Mommy", the greatest game based around murdering your hot mom.

5520715_152625979862_42.gifHere's a small preview of the outside, neighbourhood level. 

5520715_152625988083_31.gifHere's the level select map, with WIP art and stuff. This one is gonna look WAAYY spicier with final art and smoother animations.

5520715_152625999151_05.gif

Just a normal GIF of the game

 

Both me and Phantom have been pretty busy with some other projects over the past little while, but things are picking back up and hopefully we can share some more stuff pretty soon! I think I'll do a little tech writeup or something.

It's likely that I'll livestream a bunch of programming stuff (usually ~10AM-2PM PST), so feel free to drop a follow on Twitch : https://www.twitch.tv/ninja_muffin99

 

Looking forward to sharing some more stuff with all you Newgrounds SCHMOES, this game is pretty rad

 


6

Posted by ninjamuffin99 - May 12th, 2018


If you don't keep up with his let's play channel, @Oney , Ding Dong, and Julian from OneyPlays played my garbage ass game 'Blacks Only' which is actually just a recolored version of my other game 'Whites Only'

Here's the vid:

https://www.youtube.com/watch?v=4nkmYvQ3qWc

I suppose here is a good place for some context for the game. I originally wanted to make a game about 'killing black people' whatever that was supposed to mean. I ended up just using that as a clickbait rather than what the game actually is about, which is more about forcing opinions on people (at least my intended interpretation). However I got some feedback about the game from pals with advice on how I failed at what they thought I was trying to do, and how I could do it better. I'm glad everything happened the way it did and have NO REGRETS LMAO. Because moving forward I can use the misteps and mistakes from this game, take the advice and feedback I've been getting, and move forward and make better and more thoughtful games.

Anyways keep an eye out for a new post on Mother's Day regarding me and PhantomArcade's game "Must Murder Mommy", we'll be sharing what we've been up to since the last GIFs (LIKE JANUARY OOPS LOL) and other info

also Monster Mashing final update coming soon too


3

Posted by ninjamuffin99 - May 10th, 2018


Come bullshit in this Discord: https://discordapp.com/invite/v64TyT2

Why? Because we have the best bot around! 5520715_152599144543_discordBS.jpg

 

Yeah I've been bullshitting around with Discord Bot stuff. This one in particular is using the DSharpPlus library, so it uses C# which is pretty nifty. The libary handles all the nitty gritty stuff for the most part. You can also check out the source code to the bot on Github https://github.com/ninjamuffin99/FulpTron

 

I can also see Discord Bots like these interacting with the Newgrounds.io API. For example, maybe every midnight, it posts to a specific channel, reading off the Top 20 scores off of Monster Mashing, or certain users can have special roles depending on if they're a Newgrounds Supporter or not. Newgrounds.io still seems to be in beta so we'll ahve to see how that evolves over time as well, but I think Newgrounds/Discord stuff could have a lot of potential if done right.


2

Posted by ninjamuffin99 - May 5th, 2018


I'M MAKING A GAME BUT IT ISN'T DONE YET COMING TODAY HOPEFULLY AAAAHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH

 

scared reacts only pleas

 

EDIT: ok I finished the game on time: https://www.newgrounds.com/portal/view/710790


10

Posted by ninjamuffin99 - May 2nd, 2018


Yo what's up Newgrounds. I've been getting back into Blender and 3D shenanigans recently, and remembered Sheep It. Sheep It is basically like crowdsourced render farms. The way it works is that users upload a .blend file to the site, then other users render a frame or two using a special client. The more frames you render yourself, the higher priority your projects will be on the site, thus reducing the wait period before you get people on your project. As far as I know, you don't even need to have Blender installed, just the single .exe from Sheep It. 

On the site there are also achievements/awards that reward points. For example, one award is have a total of 10 hours of total render time, which awards 5,000 points. There's even an award for making a tutorial or review on Sheep It, either through an article or on Youtube, which awards a hefty 100,000 points.

Another cool thing is the team system. You can join teams and such, and then set it up so that your own team's projects are higher priority and get rendered first as long as you're a part of it. I went ahead and made a Newgrounds Team so feel free to sign up and join it if you wanna be a part of the cool kids 3D Blender club of Newgrounds.

Finally, it's possible to render under someone else's name if you don't want to sign up or if you want to get someone else some street cred heheheh. So if yall want, just download the client from this page, then input the users name, and a public key that gets generated (hey, mine is ninja_muffin99, and the key is E565mOj9nxNTsbORjQ58oGlSNa9Qu19VbX0VGSxj if you wanna do some rendering on my behalf heheheh)

also it's 100% free. No bullshit. However it would be appreciated if you could drop some money their way.

5520715_152530007642_sansundertale.png

Get rendering guys.


2

Posted by ninjamuffin99 - April 27th, 2018


I'm leaving Newgrounds

 

 

 

 

 

 

because I'm going on a road trip to Edmonton. I'll be back on Sunday or Monday

EDIT: ok im back guys5520715_152485672161_cory.jpg


4

Posted by ninjamuffin99 - April 25th, 2018


NG Vancouver meetup at McDonald's yall? 

EDIT: actually Edmonton Alberta lolol


2