check out this toon though
I like Newgrounds stuufff
Middle School Dropout
Joined on 10/2/15
Posted by ninjamuffin99 - July 23rd, 2020
DUNCAN & JONES
LIMITED QUANTITY, ONLY 20 AVAILABLE
15$ USD + SHIPPING
AVAILABLE ON BANDCAMP
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.
(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
Posted by ninjamuffin99 - June 4th, 2020
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.
Ritz DX coming June 11th probably
(also reposted because i meant to post this on FP news lmao)
Posted by ninjamuffin99 - April 2nd, 2020
here come dat boi!
Here's some stuff that I been doin and other various updates and whatnot.
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.
This is just the part where I flex the fact that I finally got a frontpage on a music track of mine lmaoooo
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.
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
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
Posted by ninjamuffin99 - March 31st, 2020
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)
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.
(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)
(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!
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.
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.
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.
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.
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
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.
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
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'
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", ); //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;
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!
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
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.
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!
Posted by ninjamuffin99 - March 25th, 2020
Newgrounds is currently hosting a HaxeFlixel game jam! Nearly every single game I have made on NG has been made with HF, so I’ve been around the block with this little framework. HaxeFlixel has been pretty pleasant to work with for me personally, HOWEVER there are definitely quirks and odd things I’ve noticed here and there. To help all the potential newcomers to HaxeFlixel, or even programming in general, I’ll be writing a few tips and tricks posts here on NG.
At the end of each post I'll leave a few potential future subjects, leave a comment on which ones you'd like me to write up next.
Most of these will assume that you’ve been through a barebones tutorial of HaxeFlixel, probably the one on the HaxeFlixel website, but certain ones will be applicable for general programming knowledge.
Since this is on the frontpage I'll also use this as a little index
Here’s something that not too many give thought into for novice programmers. The command line can be a bit daunting for people who just want to dip their toes into frameworks like HaxeFlixel. Here’s basically most of what you need for basic HaxeFlixel navigation, installation, and general use. It’s not as scary as you think.
First off, to open the command line on WINDOWS, type ‘cmd’ into either Windows search, or press Win + R, then type in ‘cmd’.
‘cd’ stands for ‘change directory’. At least that’s what it does. Allows you to change directories. Say you’re in your user folder on your computer
It might look something like that. Let’s hop into our Documents folder
c:\Users\ninjamuffin99>cd Documents c:\Users\ninjamuffin99\Documents>
Easy as that, you just moved into your Documents folder.
Maybe you want to create your HaxeFlixel projects in a specific folder within your documents, one called ‘HaxeFlixel-Projects’. Easy. type in ‘cd HaxeFlixel-Projects’ (NOTE: for the sake of tutorial, create this folder in Windows File Explorer as you would normally create a folder, and THEN follow this step)
c:\Users\ninjamuffin99\Documents>cd HaxeFlixel-Projects c:\Users\ninjamuffin99\Documents\HaxeFlixel-Projects>
Woah look at that you’re in… but how do you get out? Two periods, ‘..’, refers to the relative parent directory when it comes to all this fancy command line stuff. Right now we’re in ‘HaxeFlixel-Projects’, so ‘..’ refers to ‘Documents’. If you use ‘cd ..’ you will move to ‘Documents’
c:\Users\ninjamuffin99\Documents\HaxeFlixel-Projects>cd .. c:\Users\ninjamuffin99\Documents>
Wanna use it again?
c:\Users\ninjamuffin99\Documents>cd .. c:\Users\ninjamuffin99>
Just like that you’re in your main Windows user directory. While this example uses Windows, the ‘cd’ command is pretty much universal across Windows, Mac, and Linux. Let’s go back to our projects folder. However this time let’s try out a quick little feature of most command lines, tab auto-complete. A few letters into typing the ‘Documents’ part of ‘cd Documents’, press the TAB key on your keyboard. It should autocomplete! It saves a bit of time, and I guess prevents potential typos. Try it with ‘HaxeFlixel-Projects’ as well, since that’s a handful to type out so often.
c:\Users\ninjamuffin99>cd Documents c:\Users\ninjamuffin99\Documents>cd HaxeFlixel-Projects c:\Users\ninjamuffin99\Documents\HaxeFlixel-Projects>
There we go. That’s all nice and handy, but how do we even figure out what folders we can move into? How to we LOOK at what folders are in our current folder?
dir (Windows) ls (Mac and Linux)
These commands work in pretty much the exact same way. They show you the current directory.
C:\Users\ninjamuffin99\Documents\HaxeFlixel-Projects>dir Volume in drive C has no label. Volume Serial Number is 7CF9-09E9 Directory of C:\Users\ninjamuffin99\Documents\HaxeFlixel-Projects 03/25/2020 12:04 PM <DIR> . 03/25/2020 12:04 PM <DIR> .. 03/25/2020 12:04 PM <DIR> Cityhoppin2 03/25/2020 12:03 PM <DIR> CoolGameHaha 03/25/2020 12:04 PM <DIR> Vervian 0 File(s) 0 bytes 5 Dir(s) 168,012,500,992 bytes free C:\Users\ninjamuffin99\Documents\HaxeFlixel-Projects>
Typing in ‘dir’ will output something like this. This is what it looks like in Windows File Explorer
And that’s it! Simple command, but useful for knowing what is where. Assuming you went through the HaxeFlixel tutorial, let’s use ‘CoolGameHaha’ as our current project. (This should be a template file created by Flixel, don't know what I'm talking about? Go here)
c:\Users\ninjamuffin99\Documents\HaxeFlixel-Projects>cd CoolGameHaha c:\Users\ninjamuffin99\Documents\HaxeFlixel-Projects\CoolGameHaha>
If you have Visual Studio Code installed (which is the recommended code editor), you will also have ‘code’ available as a command. It opens up whatever input directory into a new window of Visual Studio Code. We are going to use it to open up our current project easily.
This command is using ‘.’, a single period, as a directory. The double period ‘..’ refers to the current relative PARENT directory. A single period ‘.’ refers to the CURRENT directory. So run this should pop open Visual Studio Code in the current directory!
Now you can get working!
Maybe you want to open up the Windows File Explorer. You might want to drag and drop some files, or maybe you just want a nicer visual of your directories or whatever. From the command line this is done VERY easily.
Similar to the ‘code’ command, we are using it in our current directory.
Opens up this!
Finally, I’ll show you how to do it in REVERSE. What do I mean by that? I mean using the FILE EXPLORER to open up the command line in the current directory.
In the address bar of the File Explorer, you can type shit in
Click on it, type in ‘cmd’ and press enter
This should open up a command line in your current directory (from File Explorer)
If you’re a bit uncomfortable doing a bunch of command line navigation, this might be a nice in-between.
That’s it for this quick little guide, it’s not HaxeFlixel specific, HOWEVER I believe it’s still very useful for people who are new to HaxeFlixel, as HaxeFlixel often requires you to hop into the command line for one reason or another.
I’ll try to write a guide everyday or so for the next week or so.
Drop a follow lmaooo and happy coding with the game jam!