00:00
00:00
ninjamuffin99
I like Newgrounds stuufff

Cameron muffin99 @ninjamuffin99

Age 25

Money

Middle School Dropout

Toronto, Canada

Joined on 10/2/15

Level:
47
Exp Points:
24,361 / 24,520
Exp Rank:
626
Vote Power:
8.83 votes
Audio Scouts
10+
Art Scouts
10+
Rank:
Pvt. First Class
Global Rank:
2,919
Blams:
586
Saves:
2,472
B/P Bonus:
20%
Whistle:
Silver
Trophies:
101
Medals:
514
Supporter:
9y 3m 26d

ninjamuffin99's News

Posted by ninjamuffin99 - September 22nd, 2020


I WAS GON MAKE A GAME BUT GOT DISTRACTED WITH ANOTHER PROJECT SORRY KRINKLES


I know I got a few homies who aint even see Madness Combat, and I know you're reading this right now. Not watching the main MC series on Madness Day is like not watching Home Alone in December, get on that shit gang its a NEWGROUNDS HOLIDAY


SMALL UPDATE ON CURRENT SHENANIGANS, IM WORKING ON A COOL ASS CARTOON YOU GUYS ARE GONNA BE SO AMAZED WHEN I FINISH IT WITH MY BOY WANDABOY. I AM PUTTING PRETTY MUCH ALL OF MY CREATIVE ATTENTION INTO IT RIGHT NOW


go play the game i made last year with @cymbourine



21

Posted by ninjamuffin99 - September 2nd, 2020


just kidding


check out this toon though


16

Posted by ninjamuffin99 - August 15th, 2020


clock day


Tags:

23

Posted by ninjamuffin99 - August 2nd, 2020


because im going to sleep, ill be back tomorrow


watch this vid while im sleeping


43

Posted by ninjamuffin99 - July 23rd, 2020


DUNCAN & JONES

HYPERMIX DELUXE

ON CASSETTE


LIMITED QUANTITY, ONLY 20 AVAILABLE

15$ USD + SHIPPING


AVAILABLE ON BANDCAMP

https://ninjamuffin99.bandcamp.com/album/duncan-jones-ost-hypermix-deluxe


I been workin on gettin these cooked up for a while. It's been pretty much exactly 1 year since the release of the first episode of Duncan and Jones, and about 8 months since the release of episode 2. I really like working on these tapes, having a physical media of some sort I think is cool. You buy it through bandcamp, you get all the music digitally off bandcamp as well as getting a tape. Also if I forget any important info remind me to edit this when i wake up in the morning lol


Each cassette is on chrome high bias tape, recorded on both sides.


https://ninjamuffin99.bandcamp.com/album/duncan-jones-ost-hypermix-deluxe


(covid-19 shipping info: I'm based in Canada and I'm doing all the shipping myself through Canada Post. They do have certain restrictions to shipping to certain countries, but it's likely you're good. If you're in a country with restrictions, you can still order but it will be delayed, and I'll make sure to update you.)


APPRECIATE YOU, NAB A PIECE OF COOL NG MERCH BABY


iu_146883_5520715.jpgiu_146885_5520715.jpgiu_146884_5520715.jpg

iu_146886_5520715.jpg


Tags:

25

Posted by ninjamuffin99 - June 4th, 2020


DECRYPTION POST MORTEM PO

About a month ago I made a game for the HaxeFlixel gamejam here on NG. A few days ago I talked wit my boy @HenryEYES about the game.



We talk about the process, what the game is all about, how we came to the conclusions we did, all that shit. I'd recommend playing the game first before listening to the podcast, but follow your heart.


OTHER STUFF

Ritz DX coming June 11th probably

(also reposted because i meant to post this on FP news lmao)


13

Posted by ninjamuffin99 - May 9th, 2020


GOOD SHIT IN DA HOUSE


GO WATCH THIS PICO DAY COLLAB


AND ALSO LOVE TO THE PICOLLAGE


AND ALSO ALSO LOVE TO MY MAN SNACKERS FOR DOIN RITZ FANART WE OUT HERE


Tags:

21

Posted by ninjamuffin99 - April 2nd, 2020


here come dat boi!


Here's some stuff that I been doin and other various updates and whatnot.


THE EGIRL EXPERIENCE

Me and my bastard grandson @Wandaboy talked to attractive gamer girls. We also recorded it.

You ever wonder what brought them to the eGirl life? You ever wonder what would happen if 2 dumbass Newgrounds users interviewed and talked to attractive gamer girls? Then this podcast is for you. For now it's a little one-off, don't worry about feeling like you need to get committed to something. Although we're not opposed to doing a follow up of some sort.


I like how this turned out and I think it's very interesting podcast so go listen chump.


MUSIC FLEX

This is just the part where I flex the fact that I finally got a frontpage on a music track of mine lmaoooo

iu_106683_5520715.png

Go listen to P-Bot's Song


I been making music for about 4 years at this point. When I joined Newgrounds was when I first dabbled with FL Studio (which I still use). The audio portal was kinda my first experience with Newgrounds. This is actually the first frontpage I've gotten for a music piece I've made, so it's like I've gone full circle in a way.

Also it goes into my goal of getting a frontpage on each portal section. I nabbed the games section with, well most my dumbass shit lol. I nabbed the movie frontpage with Woah Sharks, and now I nabbed an audio frontpage with P-Bot's Song. Now I just need to get good at art to get a frontpage over there. Then I will be incredibly powerful and basically tom will give me the keys to the website.


HAXEFLIXEL TIPS AND TRICKS

In case you missed the big banner on the frontpage, Newgrounds is hosting a HaxeFlixel gamejam. Make a game with the HaxeFlixel game framework, win money. Easy as that. Get coding everyone. HaxeFlixel is pretty much the first and only framework/engine that I have pretty extensive experience with, so I've been writing a few guides and tips for it. Here's an index that I'll be updating https://ninjamuffin99.newgrounds.com/news/post/1090480


The next tutorial I'll be posting later today, if I don't get too distracted by CSGO (shoutouts wanda, @HenryEYES, and @AstralSevenNG for being CSGO addicts with me)


JOB TIME

I'm not sure if I've actually mentioned it in an NG newspost before, but I recently got an actual job in February. This is my first REAL job with a regular wage and hours and all that. Because of that, I was also able to finally move out of my moms house lmao. I was gettin sick of her it was time for me to bounce baby. I just work at the grocery store in my small town doing produce and all that. With all this Covid-19 stuff goin on, I did get some of my hours cut, BUT since grocery stores are an 'essential business' when I do go, I actually get a little bonus money. Today was payday and I was surprised to see a good chunk of extra money in my account. I got an extra 100$ or so, and the bonus is literally called a 'HERO' bonus lmaoooo. We out here risking our lives to hook u up with onions and apples and shit.


I also just mentioned I moved out finally. I'm just living in a cozy little basement suite type deal, and I got 2 other roommates. They're girls but I had 2 sisters and my mom growing up so it's not too jarring or anything like that, they homies. Just thought it's a wacky scenario that I'd share lolol.


With this job it's also the first time when I've had regular income of some sorts. When I was living with my foster parent I've had allowances, but that was basically chump change to get lunch and whatnot. I like being able to manage my money, and save up for certain things and whatnot. But I've been buying TOO much doritos. Sometimes I'll eat 2 bags and that shit would be my dinner. Woops. I try not to do that too often though, but damn they tasty...


THIS WAS A SHORTER NEWSPOST but whatever I'm lazy and I'm a CSGO addict I gotta get playing see yall lmaoooo


15

Posted by ninjamuffin99 - March 31st, 2020


THE HTML5 EXPORT GUIDE


Maybe it’s too early to write a guide for exporting to html5. The game jam ends at the end of April right? You wouldn't need to post until then! However I think it’s useful early on to get figured out so you can upload builds to Newgrounds for previews and play testing with others. So here’s a lil guide for a few good practices and whatnot that I've found working for me.


(Index of tips and tricks can be found here: https://ninjamuffin99.newgrounds.com/news/post/1090480)


SETTING VIEW TO SIZE OF WINDOW

In your Project.xml file, there should be a line (around line 20 or so) that says something like.

<window if="html5" resizable="false" />

Change “false” to “true”. What this does is allow the HTML5 version to be dynamically resized depending on the window. I’ve written about this almost a year ago, so I’ll quickly quote it from my previous write up.


Let's say your game was 300x250 in size. That's about the size of an average retro pixel art game I think. If you were to upload it to Newgrounds as a HTML5 file, you would have to set the viewport to 300x250 exactly, and it would be a tiny window on screen. Even if you tried to set it to a higher res, it would just be a tiny window within a window. It goes the other way too. Let's say you had a 1920x1080 res game, and you wanted to upload it to NG. Well, if you don't have proper scaling setup, the viewport only shows a small portion of the full image.

iu_106005_5520715.png

(Let's say the browser window is the Newgrounds viewport. Works basically the same way anyways. The browser window in this case is about 680x460. The game here is about 200px. As you can see it doesn't fit the full window nicely)

iu_106006_5520715.png

(And in this instance, the game is like 1000px, way too big!)


There are likely a few solutions to this. Luckily, OpenFL has a super simple one. It's essentially a switch you can flip. OpenFL has a little file you can edit, called Project.xml. It has all sorts of parameters, and modifacations you can make to make the program work differently. XML is similar to HTML in style, so I'll just post a code snippet and explain.

<window if="html5" resizable="false" />


the "window" part says that it wants to modify the window attributes. The "if" says this line will only work if the html5 code define is set (it gets set automatically depending on which target you are building for). Now you'll see what we're after. The "resizeable". This sets it so the program display scales nicely to whatever window size we want. All we have to do is change "false" to "true". And voila!


iu_106007_5520715.gif


This has benefits especially if you’re making a MOBILE game on Newgrounds using HaxeFlixel. When playing a webgame on mobile, it ignores your dimensions set in the backend of the project system, and just FULLSCREENS the game to the mobile browser window, which can vary depending on device, and browser. You can still have the INTERNAL resolution set independently from the browser window, by having either variables set in the Project.xml file (the window settings on line 17 or so), or having it set in your Main.hx file, when initializing the FlxGame.


SOUND EFFECTS AND MUSIC FORMAT


I’ve seen conflicting things about which format to use when targeting HTML5. I’ve seen a few .wav files, some put in .ogg, and I’ve been told that .mp3 doesn’t even work. I’ve made a bunch of games on NG, using all these various methods, and here’s what works best.


You probably don’t want to use .wav, since certain devices/browsers can’t properly decode it and when you run into a crash you’ll have to change it to a different format anyways.


You can use .ogg in most cases, however I’ve noticed that Safari on iOS (maybe iOS web browsers in general) does NOT decode .ogg properly, thus resulting in a broken game. I remember first encountering this when @TomFulp PM’d me that the Christmas ADVENTure collab of 2018 wasn’t working on his iPhone. Up until then I always thought that things worked fine. After a morning of debugging, sending different builds, getting different error logs from Tom, I finally figured out that it was the .ogg files that were causing the issue. It miiiiiight also be busted on Safari on Mac, but don’t quote me on that. Also there could have been some backend update to HaxeFlixel, OpenFL, Lime, Safari, or whatever else that fixes this since then (or if you’re reading this in the future). But I wouldn’t count on it, and I can’t test it myself.


That’s why I always use .mp3 for my sounds and music for HTML5. It works on all the web browsers. Simple as that. Though there may have been a point a few years ago when MP3 files just didn’t work though. Also don’t quote me on that though.


RANDOM PERFORMANCE ISSUES ON CERTAIN DEVICES


This part is more of a lookout rather than tips, since I haven’t found a completely solid fix for this. What it boils down to is that when using certain Intel based mobile CPUs, and when using Chrome, your games might just run like ass. It doesn’t matter if you have a brand new laptop with an i7 with a big graphics card, it just runs like shit. My theory is that there’s some fucky thing Chrome does, and it makes the CPU use the integrated graphics on the CPU instead, and intel integrated graphics are shit lmao. AGAIN I CANT CONFIRM THIS TOO MUCH OTHER THAN THE VERY FEW PEOPLE WHO HAVE RUN INTO THIS ISSUE AND BROUGHT IT UP WITH ME! But the one thing that was always common was that they were running an intel CPU. I only recently figured out that when they swapped to Firefox, it ran just fine. And it’s not just a performance issue with the game, since I’ve had games that ran better through a PHONE’S web browser than Chrome on a laptop. Just something to keep your eyes out for.


Tags:

10

Posted by ninjamuffin99 - March 26th, 2020


I'm writing various little tips and tricks guides for HaxeFlixel (since there's currently a gamejam on Newgrounds going on). This one is going to assume you've at least been through the basic tutorial on the HaxeFlixel website, so that you can display a sprite, and make it play an animation.


FLASH/ANIMATE SPRITESHEET GENERATION

Adobe Flash CS6 introduced a sprite sheet generator. Don't know what a sprite sheet is? Basically it's different frames of your animation all packed into a single file. While Flash/Animate is a VECTOR based program, it's all going to be exported as PNGs / RASTER essentially. You will NOT need to worry about smoothing vectors for better performance or anything like that.


Flash CS6 and above (Adobe Animate) have an inbuilt spritesheet generation tool. Actual flash project files (.fla) can be used as long as they're from a current or PREVIOUS version of flash. CS3 files work in Adobe Animate, Flash 8 files work in CS6, BUT CS6 files won't work in flash 8. You get the gist.


Don't have Adobe Animate or CS6? My suggestion is to 'acquire' either of them through similar means of how you 'acquired' that certain older version of Flash you have huh. Yeah I know you, nobody out here actually paying for Flash CS3 so come on hook yourself up with Adobe Animate while you're at it if you catch what I'm saying.


With that being said, I'm going to pop open a file in Adobe Animate. For this example I'll use assets from my game Boho In Baller Land, these specific art assets were made by my boy @Carmet so shoutouts lmaoo


iu_104377_5520715.jpg


WORKFLOW

  1. Make an animation of some sort (punching, walking, etc)
  2. Put the frames into a Movie Clip
  3. Export all the Movie Clips

Pretty simple workflow right? Let's walk through this with Boho the hobo. First, the animations are already made (thanks Carmet) so all we need to do is put them into a movie clip. Oh wait! Carmet did that too!

Artist who work in flash generally know their way around the software a bit, so I find in instances like this it's not too much to ask of your artist to organize different animations into separate Movie Clip files. Simplifies your life, and they were probably going to have a similar workflow anyways.

The animations are separated into different Movie Clip files now. In the LIBRARY window, you'll see a list of all of the movieclips.

iu_104378_5520715.png


Let's say we want to export 'HoboGun' and 'HoboIdle' into a spritesheet. Hold CTRL and click on the Movie Clips you want (if you didn't know that hold CTRL trick, it works pretty much universally with most programs!). Now that you have the animations selected, right click on one of them, and select "Generate Spritesheet" from the dropdown

iu_104379_5520715.png


This should open up a new window of some sort. What you want is Image Dimensions to be on 'Auto Size'. You want Image Format to be in 'PNG 32bit', Algorithm to be 'Basic', and Data format to be 'Sparrow v2'. You also want the Trim and Stack Frames boxes checked. At the bottom of the window is where the image is going to be saved. Click on 'Browse...' to select a new location, probably your 'assets/images' folder in your HaxeFlixel project.


When you're ready press 'Export'

iu_104380_5520715.png


That should give you 2 FILES. One is the actual image file, and the other is the DATA file, the one thats a .xml file. If you open it up in Visual Studio Code, you might be looking at all this weirdo XML data that you don't understand how to use, don't worry about it you don't have to directly deal with it. We're going to be using an inbuilt HaxeFlixel function to parse it.


The tutorial on the HaxeFlixel website taught you that you can do loadGraphic() to load all your sprites right? Well that isn't the only way to load in your sprites.


Let's say we want to update our player graphic, in Player.hx (which extends FlxSprite). And let's say the code currently looks like this

loadGraphic('assets/images/player.png', true, 32, 32);
animation.add('idle', [0, 1, 2, 3, 4, 5], 30, true);
animation.add('gun', [0, 1, 2, 3, 4, 5], 30, true);

This isn't too bad right? HOWEVER when working with hand drawn animations in Flash, there can be a LOT of frames. Let's look at some code from when I was bad at coding and made Breathing Simulator with @BrandyBuizel

loadGraphic(AssetPaths.breathIn__png, true, Std.int(48670 / 62), 1038);

animation.add("idle", [0]);

//This is hell brandy why 60 fps ooof
animation.add("Inhale", [0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 1, 1,
2, 2, 2, 2, 2, 2,
3, 3, 3,
4, 4, 4,
5, 5, 5,
6, 6, 6,
7, 7, 7,
8, 8, 8,
9, 9, 9, 9,
10, 10, 10,
11, 11,
12, 12,
13, 13,
14, 14, 14,
15, 15, 15,
16, 16,
17, 17,
18, 18,
19, 19,
20, 20, 20,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
22, 22, 22, 22, 22,
23, 23, 23, 23, 23,
24, 24, 24, 24, 24,
25, 25, 25, 25, 25, 25, 25, 25,
26, 26, 26, 26, 26,
27, 27, 27, 27, 27,
28, 28, 28, 28, 28,
29, 29, 29, 29, 29,
30, 30, 30, 30, 30,
31, 31, 31, 31, 31,
32, 32, 32, 32, 32], 45, false);

//pause and shake frame 54
animation.add("Exhale", [33, 33, 33,
34, 34, 34,34, 34, 34,
35, 35, 35,35, 35, 35,
36, 36, 36,
36, 36, 36,
37, 37, 37,
37, 37, 37,
38, 38, 38,
38, 38, 38,
39, 39, 39,
39, 39, 39,
40, 40, 40, 40,
41, 41, 41,
42, 42, 42,
43, 43, 43,
44, 44, 44,
45, 45, 45,
46, 46, 46,
47, 47, 47, 47,
48, 48, 48, 48,
49, 49, 49, 49,
50, 50, 50, 50,
51, 51, 51, 51,
52, 52, 52, 52,
53, 53, 53, 53,
54, 54, 54, 54, 54, 54, 54, 54, 54,
55, 55, 55,
56, 56, 56,
57, 57, 57,
58, 58, 58,
59, 59, 59,
60, 60, 60,
61, 61, 61], 50, false);

As you can see, that was pretty hell to type all out by hand. And what if Brandy wanted to adjust some timings on part of the animation? Well you'd essentially have to retype and reorganize all that. Yuck. However with this spritesheet workflow, we are going to be able to smoothly integrate it in, while still having the ability to adjust the animation however needed, without having to refactor anything.


Let's go back to Boho

loadGraphic('assets/images/player.png', true, 32, 32);
animation.add('idle', [0, 1, 2, 3, 4, 5], 30, true);
animation.add('gun', [0, 1, 2, 3, 4, 5], 30, true);

this is going to be switched to this

var tex = FlxAtlasFrames.fromSparrow('assets/imagse/HoboMoveSet.png', 'assets/images/HoboMoveSet.xml');
frames = tex;

animation.addByPrefix('idle', 'HoboIdle', 24, true);
animation.addByPrefix('gun', 'HoboGun', 24, true);

animation.play('gun');

So let's walk through this line by line.

var tex = FlxAtlasFrames.fromSparrow('assets/imagse/HoboMoveSet.png', 'assets/images/HoboMoveSet.xml');

This line creates 'tex' variable which we will use as our texture. It can be called anything you want, but I stick with tex. It uses a function from the 'FlxAtlasFrames' class, fromSparrow() . This essentially takes all your data from your XML file, and uses it to slice up and organize your spritesheet into data that's usable with HaxeFlixel. This data is now in the same format as 'frames' which is a variable that EVERY FlxSprite object has. So since it's the same format, we simple just have to do

frames = tex;

easy.

To actually add animations, that looks like this

animation.addByPrefix('idle', 'HoboIdle', 24, true);
animation.addByPrefix('gun', 'HoboGun', 24, true);

we're still using 'animation' (which is another variable that every FlxSprite object has), but instead of using add() we are instead using the function addByPrefix(). To explain this let's go into our spritesheet's XML file.

<SubTexture name="HoboGun0000" x="0" y="0" width="292" height="255" frameX="-6" frameY="0" frameWidth="370" frameHeight="255"/>
<SubTexture name="HoboGun0001" x="0" y="255" width="370" height="251" frameX="0" frameY="-3" frameWidth="370" frameHeight="255"/>

The 'name' is what you called the MovieClip within FLASH, followed by 4 numbers, which are the current frame. What you want is the actual name of the animation. We'll use 'HoboGun' as an example for now.

animation.addByPrefix('gun', 'HoboGun', 24, true);

Instead of putting each and every frame number into an array as you might do normally, instead we are using this function to tell HaxeFlixel to read it's own data (which it got from the XML), and add ANY animations that start with 'HoboGun', into an animation. And that's it! The animation is ready to be used just as you would a normal animation!

animation.play('gun');

iu_104382_5520715.gif


EPILOGUE: RESIZING

If you're sprite is bigger than you expected, you can resize it using the `setGraphicSize()` FlxSprite function. After you do this function though, you will also want to run 'updateHitbox()' and set 'antialiasing' to true.


setGraphicSize(0, 100);
updateHitbox();
antialiasing = true;

setGraphicSize() doesn't need both inputs to be used. If you put 0 in one of them, it scales the sprite uniformly across that axis. If the sprite graphic is 200x100, and we do

setGraphicSize(0, 10);

The new width will now be 20, and the height being 10. AND REMEMBER TO DO UPDATEHITBOX() OR ELSE UR SHIT GONNA BE SCREW-Y


To leave it off, here's an image that may or may not inspire you.

iu_104381_5520715.png

Here is my first experience with HaxeFlixel, almost 4 years ago. This was also pretty much my first experience with anything code related in general. It took me a solid day or so to figure out. At any point in that time I could have gotten so frustrated that I just gave up and moved onto a different framework. In the end I stuck through with HaxeFlixel, and now every game I make uses it, and it taught me a LOT about programming and game development. I would not have made the games I have, and then I probably would not have worked with the same people I have, if it wasn't for me following through with it and keep trying until I fixed my issue. Now get to coding, you still have a little over a month to make a game for the HaxeFlixel jam!


Tags:

26