Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

Caliber Mengsk

48
Posts
8
Topics
8
Followers
A member registered Oct 06, 2015 · View creator page →

Creator of

Recent community posts

(1 edit)

That depends on you. I have the camera set to an orthographic view of 4, meaning a total of 8 units on the screen, so if you don't want to change anything then it would be 8 pixels per unit. (that would make an 8x8 tile grid of 8x8px tiles at 1 unit per tile.)

You can change the orthographic view to increase/decrease the pixels per unit if you'd like though.

Good luck and enjoy!

Yep. That's what mine does. It's just set up so that you can drag and drop it. It also is configured to where it scales to resize and keep aspect properly without stretching and such. But it is using that method at it's core.

To the experienced unity dev, this only saves like 10 minutes, but to someone that's newer or just hasn't done anything like this before but is still experienced, it could save several hours. 

Uploaded to google drive. This link should work, I'll update the main post, but here's the link to that. https://drive.google.com/uc?id=10VjKsy0pkSs8qCk2C5jwao_onGepJ2OU&export=download

It automatically will keep the 1:1 aspect ratio even if you select a 16:9 or 16:10 resolution or whatever. As long as the assets are available to everyone it's within the rules to use any asset (even if you have to pay for it), but I personally feel that you shouldn't have to waste 6 hours the first day trying to get everything set up just to get the resolution right. This all has been confirmed as ok by the jam admins.

(7 edits)

Info:

This is a package I've been working on a bit here and there before/during the low rez jam for 3 or 4 years now. It's an easy to use Unity package to get people up and going near instantaneously. You can just import the package, go into the CMAssets > Prefabs folder, and just drag in the 2d or 3d camera for the project you want. 

The package uses a render texture camera at 64x64 pixel resolution and scales to the screen based on height with a nearest neighbor scaling method. This means it's not blurry pixels and will be crisp and at any resolution.

The entire package is tiny at only 50kb, including the example textures, scenes, scripts, etc. If that's even too much for you, there are instructions on how to remove the extra stuff and only leaves you with JUST the cameras. 

Credits would be appreciated, but are not required. If you use it in your game, post a link to it here so I can see it!

Enjoy!

NOTE: This package was made in the newest version of unity (2021.1.12f1) at the time this post was created. Scenes, prefabs, etc may not work in older versions of unity, but the code itself should. You could try to rebuild it if you are using an older version if you'd like.

Download Link: http://ocularobscura.com/unity/packages/CMLowRezStarter.unitypackage

Backup Link: https://drive.google.com/uc?id=10VjKsy0pkSs8qCk2C5jwao_onGepJ2OU&export=download


Get started in as little as 10 seconds:


Example scenes for 2d and 3d scenes with message box support:




Other things I've found useful for jams:

https://www.tilesetter.org/ - This is a useful tool for quickly creating autotile tilesets. It even has an export option for multiple game engines, though the direct export to a specific engine is a pay for feature, it is only $12 if you decide you need it, but it can export to just a normal tileset image in the free version.

https://trello.com/ or https://monday.com/ - Keep your ideas in tact. A kanban or task manager can be super useful. Make a list for Major goals, Programming tasks, Art tasks, etc. Share the board with your team so people can update what they are working on and what they've finished.

https://www.screentogif.com/ - This program is super awesome for doing quick grabs to show off the cool new thing you've just done to your friends or in your dev log. If you make it short enough, less than 3 megabytes then you can upload it to a twitch post here, or (I think) 8 megabytes on discord. NOTE: The gifs in this post were made with this software. NOTE 2: You can save to webm in the newer versions of this, which can drastically reduce size while keeping quality. These also work in discord.

Pretty much have decided to stick with the spirit at this point.

Yeah. The swipe will most likely just be a placeholder. Enemies and the player are both using it right now. Multiple attacks are also intended if I have time. (I'm doing everything on my own except the music, so it's a bit slow)

Devlog 2 - Another day, another progress?.............. (August 2nd)

So today kinda sucked for me for the most part. Not cause of the gamedev stuff, but I woke up with a bad headache and it lasted most of the day. I didn't start work until around midnight. I did end up getting a decent amount added. Still a sucky day cause of the headache. Anyway, onto the development.

An enemy to be. (Art and Code)

At the end of the day yesterday, I had the player being able to do an attack. Nothing fancy, but still, I can kill TRASH CANS!!! THE MOST EVIL SCOURGE!!!!!!.... Ok, so not really all that evil, but they do have the enemy tag so they can be hit. BUT I need an actual enemy, so I started the day making a simple enemy that "fits" a city environment like the mockup I made.


Nothing advanced. just two walk frames and a take damage. Technically these guys will never not be walking, so no need for an extra idle frame. After the basic graphics I start wiring up the animations in unity. I can actually copy almost all of the code from my player script, and just replace the movement input to instead get the direction of the player (player position - the enemy's own position, normalized, then multiplied by speed). This is a pretty dumb ai at this point. Most games of this sort will have the enemies walk in a straight line only, vertical or horizontal, and normally won't allow multiples of them to attack at the same time. At the moment, I don't have time for the advanced stuff. I just need to get a full game loop happening. Anyway, enemies are added.


What about the player? (code and animator work)

Yeah? What about them? Oh.... you want them to take damage too? Ok, at this point, the player actually can take damage, he just doesn't show it. Also, he can punch over and over super fast. No delay what so ever. The enemies also have a random bug where they do the damage animation twice when they die. The player was simply adding a timer after swiping before he can attack again. Since it's already taking damage, it's simply adding some code to make the player stay in place and add the animation. 

The enemy bug took a few short minutes to figure out. Ended up being that in the animator, I had the flag for takingDamage and isDead both being set to true. So it was randomly selecting between the take damage animation and the die animation. All I needed to do in the transition from the any state to the take damage animation, was to add in the flag for if isDead is false. Fixed the problem.

Add in a health bar and you have a decent looking game now!


Get a hold of yourself! (quality upgrade)

It's coming along nicely now. There is a little tiny bug I have to figure out. One where it looks like the enemy is sliding when they first start moving. I think that should be a simple fix of swapping the walking animation frames around. Past that, when attacking, the little spirit feels a little off. Why? Well, I think it has to do with swiping at the enemies, but having no hands. So, I take the hands from the enemies and add them to the player. Do a little animating with them, and they look pretty great. :D

I haven't decided yet, but at the moment, the hands are actually doing subpixel movement and are smooth and such, though it looks all pixely like it should. It's cool cause it adds a bit of dynamic visuals to the player. Every time you move, the hands will animate slightly different depending on where they are in the subpixel. The problem with this is sometimes the animation will have an extremely short frame due to rounding being  like .499 one rendered frame, and .501 the next, then back to .499 again. This kind of bothers me, and if I go back and make the curves be a constant so that the hands instantly move, it will look more repetitive. Not really a major problem since everything else is already that way, but sometimes being dynamic is cool. Anyway, here they are with hands!

Final thoughts of the day.

I'm pretty much decided on keeping the little spirit as the main character at this point. As far as story, I'm possibly going to try to make basic cutscenes where the spirit is playing with something and the bad guys break it in some form or fashion unintentionally and the spirit just gets mad and starts taking them out. Don't know. There's also some quality of life that needs to be done as far as animations. At the moment, both the trash can and the enemy when dying are kinda just scaled down and faded out. I should probably have an actual death animation. I also need to work on chopping up the mockup and adding environmental pieces. Would also be nice to add specific animations for the different character's attacks, instead of a generic swipe for everything. I think my current minimum requirement goal is 2 enemy types, a boss, and getting the entire game loop finished. As in win/loss, exiting properly, respawn life, menus, etc. If I get a super polished first level and it be an actual level, I'd be super happy with that.

Anyway, that's it for today. Hopefully I don't get a bad headache over night again XD

Devlog 1 - And so it begins (first night, August 1st)

Hello everyone. This is the first of many devlog posts. I had the idea coming into this jam that I would be doing a beatemup, akin to Double Dragon or Streets of Rage. Story? No, none so far. :P For the most part, I try not to have any intentions in art, story, and honestly normally even the game genre. I tend to a bit more on low rez jams as normally I work on them on my own. This year, I have RyanAvx helping me with audio, so I shouldn't have to use random tracks from random asset packs from random humble bundles this year, so that will be nice. Anyway, ONTO THE LOG!

Quick Note:

So it's the first night. I made a unitypackage before the jam to just drag a camera in and have it just work. I did find a problem though. I made a script to keep everything on pixel units. This works ok in some cases, like things that don't move, but on things like cameras or players, you have to move at a specific speed or higher, so I had to remove that script from all the prefabs and such before I could really move on.


The Start (Art)

I started with a smidgen of art just as a mockup on a 64x64 pixel canvas.


This took all of about a half hour. I do art, I am not an artist, and as such I don't do this all that often, so I can be a bit slow with it sometimes, and others I can be fast. After making the mockup, I made a very simple character placeholder. While I intended them to just be a placeholder, I am starting to like them more and more. I also made a trash can for sizing and testing reasons. May get modified to be a bit more fancy, like popping out pieces of trash when hit/destroyed.



Start of a world (basic code and art in the scene)

At this point I threw in some code and had walking and a basic camera movement.



A problem with trash

As you can see, there is a problem with the trash can. It kind of wobbles instead of staying in place. This took a fair amount of time to track down what had happened. In preparation for animating it to take damage, I had changed the pivot point. What you are seeing is the fault of bad subpixel alignment. This trashcan is not save in a multiple of 8, which is my pixels per unit. Since it was 18 pixels tall, I had just dragged the pivot up a little. Problem is, as shown in the gif, this means that it's off by a percentage of a pixel. What I ended up doing was making the image 24 pixels tall and just having the extra transparent pixels be above it. After that, I could do math to figure out the pivot point. I have to do this math, because Unity doesn't set it's pivot points by pixels. it does it by percentages. So I have math. (24 pixels tall / 8 pixels per unit = 3 units total, 1 unit / 8 pixels means a pixel i .125 units tall. To get the percentage for the pivot I just need to divide 1/3 to get the scale of a single pixel tall, and multiply that by how many pixels I want to move it in unit sizes. So, .33333 * .125 = 0.0416)

 So now I have the number and it's simple to move the pivot to the right pixel. Just multiply 0.0416 by the number of pixels I want to move the pivot. Anyway, that fixes the trash can and I now have this.


Break Time

At this point, I took an hour or so break. I had to work today, and I program as my day job, so I'm a bit worn out at this point. (time invested, about 2-2.5 hours) After watching a few videos and getting some food, it was time to return. I decided to start with a swipe animation and make attacking the trashcan possible. So I made a few generic scripts. "DamageDealer.cs", "SimpleWorldObject.cs", and "SendCall.cs". Damage dealer, as you can imagine is a script that deals damage. I try to make scripts as generic as possible. 


Damage Dealer (script)

The DamageDealer is put on an object with either a trigger or a collider (normally trigger) and has the option of dealing damage to either a player or enemy or both, and on trigger enter or collision enter. With this, things like the player's punch/swipe/anything can simply have this script thrown on it and it activated when attacking. This can also be put on things that are still, like spikes. It also works with animations, so you can have something like an explosion happen, and in doing so, you can change how much damage it does from the start to the end of the animation. Things close to it get hit by full damage, things further away get hit by low damage. It's all up to the animation system or just what you leave it at default. I probably won't be using ANYTHING but this damage dealer.


Dealing damage with Simple World Object and Send Call (scripts and animations)

A simple world object is going to be anything that's in the environment that doesn't do anything complex. I started by adding this simple world object script to the trash can, adding an animator, and making a simple animation to take damage. At the end of the animation, an animation event trigger was added to call a function that allows the object to take damage again. The problem is, I moved the position of the trash can in the animation editor, and it wasn't a child of another object. This means the animation moved the trash can to wherever it was when I animated it instead of using local space whenever it took damage. Not a big deal, right? Make a child object, copy the animator and sprite renderer components to the new child, delete them from the parent. Animation plays correct! BUT the take damage function is on the parent now... You can't call the function of a parent with an animation trigger event like that. THUS SEND CALL! Send call is an EXTREMELY simple script. I calls the command SendMessageUpwards and takes in a string. When the event is triggered it calls the function on any script going up the line of parenthood. This means it can call the ResetTakeDamage function, and better yet, doing it on any script means if I make an AI script and it handles the health, as long as I keep the same function naming convention, it will still work! Generic scripts are great, aren't they?


Swipe Right! (putting it all together)

After completing the code to deal the damage, and accept the damage, I had to make a little placeholder swipe animation.


Now the player instantiates a game object of the swipe, it animates, the animator calls the destroy function on it using the send call script. Everything is now good to go! 


The Day's Summary

This is now the ending point of the night and I have a basic character that moves, animates, and punches, a basic environment to walk around in, and something to hit (the trash can) and kill. This segment also took 2-2.5 hours, so the total time at the moment is around 4.5-5 hours of effort and an hour-ish to write this blog. Anyway here it is in action!


Yeah, it's not a game, but it's a GREAT start for the first day in a jam. Especially since I did the art and the code on my own. Comments or suggestions are appreciated. (I do these write ups and never know who reads them) Should I keep the little spirit as the main character? Does the speed look good? Etc. Anyway, thanks for reading if you did!

Update 4! V4 Better examples and Minor bug fix.

There are now 2 scenes. A 3d and 2d. I added a simple player movement script to get the camera to move around a bit, and added a simple rotation script to the camera in the 3d scene with 3d spheres. There was also a bug with the message box where the letters in the message box were not getting rotated properly on creation when the camera was in 3d mode. This is now fixed. I've also removed the automatic pixel perfect script that I had made from most objects and is off by default, as it was causing problems with movement. It should be fine to use on static objects, but moving things should not have it.

Removing the pixel perfect script from moving objects also made me decide that there's no reason to keep the old player camera prefab and just made 2 prefabs with the render texture. The overhead of a 64x64 pixel render texture is pretty low, so I don't see there being any problem unless the system you run the game on would have had problems running to begin with. The two camera prefabs are set up with orthographic and perspective as they should be. Just drag them into the scene.

I also made the folders a little easier to tell what's extra stuff that you can remove, and what's required for the camera system to work on it's own.

Anyway, that's this update! Probably the last, so... Enjoy!

Indeed. Characters can be whatever size you want, game's world can be whatever size you want. The only rule is the rendered resolution (the camera if you will) is 64x64. 

Glad to be of help :D

Update 3! IMPORTANT WON'T BUILD BUG FIX (7m/29/2020)

If you've downloaded this package since the last update, you will likely need to download and import it again to fix a bug that won't let you build. It will work fine, until you try to build it. This was due to the automatic layer detection script. It uses some editor only scripting and I forgot to check that you are actually in the editor in the script itself. The update adds the #if UNITY_EDITOR around the stuff that is editor specific code and should let you build now. T_T Super sorry for my oversight in this part.

I believe I have solved the problem, Download and try again please!

Yep, they are a full linux distro, so for the most part you can do anything that a normal linux distro can. It is quite slow and crashes/reboots fairly regularly though... (I'm using a pi 3, most likely it's running out of memory over time)

That url is hosted on a raspberry pi server in my apartment, so it's possible it was doing updates or something at the time. I've uploaded it to another host also. If anyone has a problem downloading it in the future try this also: http://ocularobscura.com/unity/packages/CMLowRezStarter.unitypackage

(1 edit)

Update 2! (7m/24d/2020)

I added a new camera prefab that contains a render texture. I became aware that the base camera prefab I had included only supported the 64x64 resolution in 2d, but didn't support 3d projects. Hence the new prefab "Player Camera With Render Texture". This prefab adds the "Render Texture Camera Source" camera object that renders to a render texture. The main player cam object now only looks to render the "RenderTexture" layer. If you haven't added it to your project, then it will automatically add it when the camera prefabs are dragged into the scene.

I also lightly updated the message box as it seemed to have problems displaying while the camera was moving. This is now fixed.


Enjoy! And if you have any suggestions or find any bugs, let me know!

(2 edits)

The gameboy actually has a considerably higher resolution at 160×144 as opposed to the jam's 64x64 limitation. So just using GBStudio would not be low enough of a resolution. As long as you limit the engine to displaying only 64x64, it's just like any other engine and can be used though I'm sure. I would suggest having a windows or html5 build of it to submit to the jam. If you only give a gameboy rom image, I have a feeling it wouldn't be downloaded/played/rated as much.


EDIT: Note that I am not sure if it's possible to limit gbstudio to a different resolution.

Update! (7m/19d/2020)

I added a text file in the base folder after extracting the package telling you how to remove the extra assets. What files need to be deleted and such. As well as extremely small changes to code which are mostly just helper things (Like tool tips and comments, not that there are a lot of comments)

Not really a full font (not .font or .ttf), but I made a 5x5 bitmap font for last years jam and anyone is welcome to use it. The pixels are white so that you can choose any color in the editor of choice to change it to. 

http://mvmgame.cf/unity/images/CM-Bitmap-Font.gif

(4 edits)

Hi guys. Last year I made a package to try and help people having issues with getting unity set up for a pixel perfect game. Problem was, I put it together over halfway through the jam last time. This time though, I'm putting it up WAY ahead of time.

You shouldn't have to waste time getting things set up. Some people were spending hours trying to figure it out. So download the pack to get started. The package was packed in Unity 2019.4.3f1 (was the current version of unity) but should work on any version of 2019 without issues.

If you run into any problems, please post a reply to let me know so I can update the package so it works properly for everyone.


Installation:

Create a new Unity project.

After Unity is fully open, you can double click the .unitypackage provided, or select "Assets > Import Package > Custom Package..." and browse to the downloaded package.

Import everything.

Open the prefabs folder and drag the prefab "2D Player Camera With Render Texture" for a 2D orthographic camera or "3D Player Camera With Render Texture" for a 3D perspective camera.

That's it! You are done! The Player camera can have an object set to follow, or it will automatically follow the first object with the "Player" tag assigned to it. Good luck on the jam!


Download the package here:

Primary Download Link: http://mvmgame.cf/unity/packages/CMLowRezStarter.unitypackage

Alternative Download Link: http://ocularobscura.com/unity/packages/CMLowRezStarter.unitypackage

This is an unsolicited bump post as this is quite useful for people....... Sorry!

If you are looking for a team, or a team looking for people, I made a crowd forge page for the jam. It should make things easier and more organized than just a bunch of posts in here or in the discord (and if you aren't in the discord, you should be ;D)

Anyway, crowd forge is an easy to use system for finding/joining teams, whether for jams or sports events or what not. I made the page specifically for the jam, but I am in no way associated with the yogscast, so there's that also. Anyway, here's the link:

https://crowdforge.io/jams/yogscast-game-jam

I agree that there should be something in the game to state the objective. I messed around in the first level for a while before reading to find out about the green pixel thing. Was fun beside that. :D

Day 7, 8, 9, 10

I did some work last weekend and never really talked about it. I don't remember specifically where I left off, and it's kinda late (1:30-2am), so I will inevitably forget something I added.


Dungeon Tiles

I made some basic dungeon tiles. Not a ton to talk about here. Just some arts that I did. I decided purpleish seems pretty dark and evil feeling, so it's filled with purples and darker pinks. Don't know how much I'll have time to do the dungeons since after sleeping I'll be down to like 8 hours left.


Transitions, timing, and doors

I added in a basic door system. When you walk into the trigger for the door, it sets a value in the Game static object that doesn't ever get destroyed. What it sets is the target door's id. Each door has an ID and a spawn offset. When the level has been loaded it sets the player's position to the door's position plus the offset. I also display where the offset will spawn the player so it's not so much a guessing game. This allows any door to be at any angle/position.

I also made a basic fade transition. When adding this, I had to add in a way to pause the action of the game. The reason was when the player hit the door and it faded out, you could get hit by slimes. I decided to make it pause everything so that you can't be hit while it faded in and out. There is a problem with just changing the timescale though. Invoke (which I like to use for timing things, such as the fade out speed) is effected by time scale. So I had to write my own timing system using Time.unscaledDelta. Not a major problem, but a thing to note.


Coins

Not sure how much I'll be able to implement the coins. I'd like to build a shop for you to be able to buy max health, healing, max stamina, the ability to dodge, ability to shoot fireball (replacing with a basic punch or sword attack or something). Wasn't too hard to add, just a trigger with some animation. If I had time, I'd make them spawn over time so they didn't all animate at the same time, but meh.


Health and Stamina

I also added in Health and Stamina bars. These display a percentage of what it's displaying. If/when I add a shop for the stamina, it'll just be changing the max value of the stamina on the player. That simple. You can only dodge or attack if you have the stamina built up.


Menus, Title Screen, and Saving

There is now an in game menu that has a whopping 3 options. Resume, Save, and Exit. Resume just exits the menu, save.... saves, and exit takes you back to the main menu. The saving will be pretty simple, just saving a text string with the important information, last door the player went through, the map name you saved on, player health/max health, max stamina, and coins. At the moment that's all that's important. "Theoretically" even the slime being killed will be saved. Right now all slimes have an autosave when they are killed. I'll probably remove it from some so that you can leave the room and get a little extra money by killing things if you want.

Past that, my brain started to turn to mush due to the time of day it is. So instead of code, I made the start screen and started on the main menu. I did the art and placed the menu text on the screen. I would "like" to animate it, but as I'll only really have 8-10 hours depending on when I get up, I probably won't have time since I don't have a fluid set of levels or a boss atm.

To Do List

I made a to do list of bare minimum, and I did tick off a few tonight. Not sure how much this will really be a complete game, but I'd like to add in at least some hazards to the dungeon, a boss, and letting you walk through the different levels. (Dungeon, willow's crest itself, willow's crest lake, the path between willow's crest and the lake, and the boss room) Anyway, here's the list, and I'm taking off for the night. Hopefully I'm not too tired when I wake up.

Needs:
Boss
Make sure save/load is implemented
Main menu
continue (only visible/option if save data exists)
new
exit

Wants:
Story
sword attack instead of fireball
Shop art
buy stamina
buy health
buy dodge
buy fireball
dungeon hazards
extra enemy
Health pickups from enemies (5% chance?)
Animate start screen with an intro panning up and parallaxing

Update for Day 6

Did quite a bit today. Added in a lot of the basic sound effects, fixed a few bugs, made the slimes be random colors.


**Note: Smaller image due to file size restrictions on itch image posts.

Try the current build: http://randyphillips.cf/lrj-2019/

Sound Effects

There are now sound effects for the player attacking, taking damage, and dodging. The slimes also have a jump and take damage sound. No death sound yet. It's amazing how much just adding in sound effects and music can add to the feel of a game.

Bugs

There were a few small bugs I had to fix. First was being able to attack while dodging. Not a hard fix, Second was that when you attacked, the move direction you were going stopped taking input, but you kept moving the way you were attacking. Now you just freeze in place when you attack.

For slimes, taking damage was stopping the jump animation if you hit them mid flight. This gave a similar issue to the slimes as the player had when attacking. They'd stop animating the jump and just keep sliding. While stopping the animation is not normally a problem, the jump animation called an event through the animation itself, so stopping the animation early broke things. The fix was to do the damage "animation" (which is just changing the color back and forth) on a new layer in the animator controller. I think a LOT of people don't really understand the animator very well. It's a good thing to pick up, so watch some tutorials if you haven't messed with it much.

Random Colors

The problem is that the animator can do some weird things also though. For instance, I just autokeyed changing the frames of the animation like any normal person would. Problem is, since I didn't specify the sprite specifically, it seems unity takes an instance of the sprite renderer and applies the entire value of the sprite renderer. What's that mean? That means even though I was changing the color of the sprite renderer on start in code, it was over writing the new color. I got around this by applying the color in the late update every frame. Didn't seem to do anything performance wise really, but is hacky. This also broke the animation for taking damage that I just got working. Luckily in code I already have a flag checking to see if the slime is taking damage, so it's just adding an if statement.... still annoying though that I had to do the work around in the first place.

What's next?

After adding in all the animations, art and sound effects to what I have so far, I'm really starting to feel a world coming out of it. One with people walking around that you can talk to, quests to do, etc. Again, starting to feel much more like a game. I think I may add an npc soon, maybe even just taking a day to make a bunch of art for a bunch of npc's and try to come up with unique people. Anyway, that's it for today. Enjoy!

Update for Day 5

Didn't do much today, but I wanted to get "something" done, so I added in some bushes, grass, and water.


Every Little Bit Helps

So, I kinda slacked today, yeah. BUT I did do SOMETHING, which is important. Even if it's something small, it's important to get just a little done. Keeps you in the correct mind space while not stressing you too much.

Update for day's 3 and 4

On day 3 I added in the basic slime enemy and added a bit of dirt into the tileset. Works pretty decently. Day 4 though, I have added in dealing damage to both player and slimes. Slimes can die, player can not.


Slimes

The slimes are just be basic non-fancy slimes from almost any fantasy type setting. I like the motion I got with them. Rather than being constant, they jump. They have a random delay for how long they take to jump and they also have a random strength to how far that jump takes them. I like this more than the normal rolly/sliding slimes. They have a great feel and makes it hard to predict them. 

Damage Dealer

So when dealing with projectiles (weapons that don't instantly hit), I generally make a script like what I've done here. The same script that's on the fireball (deals damage to enemies, not the player) is the same script attached to the slimes (deals damage to the player, not other enemies). This script sends a custom class object that stores how much damage to send, and the position that damage is done. Sending the position is super useful for making the player get pushed away when taking damage. I'm just doing a broadcast message to whatever object the damage dealer collides with. 

Fireball

The art for this will probably change. At the moment I tried to do a grayscale image hoping it would look decent. I don't actually like the fireball in any color I've put it, so the art will probably change, or it could become daggers or arrows, or something else. Just wanted something to show damage being sent out.

Layer Indexing. Things go in front of and behind other things.

So the fireball, slimes, and player are all on the same layer, layer 1. Because they all move around, I have a very simple script that takes the y position divided by 10,000 and set that to the z position. Why? Well, the way unity does things in 2d is it puts things in order by it's order in layer. Anything lower than something else is rendered behind it, kinda like it's own z-axis, but it doesn't matter where in z that object is, it will ALWAYS use the order in layer first. THEN you can set the z position. Things with a positive value are rendered as "further away" or behind other objects in the same layer. This might sound odd, to have two z-index's for rendering, but it's actually VERY useful. Why? Well, I'll explain the way I have things set up. Right now everything that can be walked on is on order in layer 0, meaning behind everything. Then everything that moves around (player, slimes, fireball) are on layer 1, and everything that is always going to be on top is on layer 2. The tileset painter I use (my own tilemaster extension) paints into the order in layer that is it's layer number. This makes painting tilesets with multiple layers much easier.


In Closing and What's Next?

Anyway, my brain is kinda fuzzy and numb at the moment, since it's a bit past midnight. It's getting there, and in most weekend jams, this is probably about as far as I would have gotten with this being a solo project for me (well, except music). So, I may start trying to think of story. Since I have message boxes, it would make sense to have things to do and talk to/read in the world. You know.... the whole "game" thing. If I can't come up with story, it will probably be more art or enemies probably. No specific plans. :D It's nice to be at the stage of "minimum viable game" with almost 2 weeks left in the jam :D

(1 edit)

Update for day two!

Added in the roll/dodge mechanic with a bit of dust poofing while you do it. Also made a bitmap font system and a message box system (using the bitmap font system). I wouldn't doubt unity has one built in or something, but meh. :D This one types out and has a waiting arrow like the good old rpg's always have. Here's the game's state currently in gif format.


Now for more technical bits.


Text and message box

This is the first time I created/used a bitmap font like system. The script itself has what I called a Character map, which is just a string of all the valid characters. After that is an array of sprites. The index of the sprites corresponds to the character map. This means I can do a simple "indexOf" on the character map and that gives me the index of the image to be used from the array of sprites. Kinda simple right?

For the message box, I can have a maximum of 12 characters per line. If I type more than that on a line, it goes to stupid mode and just types characters, so will continue on the next line automatically. This "shouldn't" be done if I set up the scripting right. It also automatically fills extra spaces on the end if there is a new line. This is to keep the count accurate when generating the next line.

The message boxes are also typing out through a coroutine. I did this so that I could set the timescale to 0 when a message is being displayed, and set it back to 1 when it's done. This will allow conversations to happen while in battle or if you pick something up while in battle that shows text. I don't know that this will be required for the jam really, but it's in place now, so :P

Lastly, the message box can be called as a static function from any script. There are a few things you can change also. You can change the typing speed as well as the font and background colors. The idea is to allow for changing the color/speed for different people.


Dodging/Rolling

I added a simple 3 frame animation of the character rolling. I decided the up direction didn't need different art, so all rolling directions are the same animation. While it's playing the rolling animation, every .1 seconds, I create a dust cloud object that deletes itself after a second. Rolling also forces you to keep your direction and multiplies it by the speed you were going. There's a very short acceleration when you start to walk, and if you hit the roll button while in that acceleration, you will only multiply by the current speed. This means if you don't time your movement to already be walking at full speed in any direction, you won't get as far. I can change this, but I don't want to. I want to be able to get partial directions, instead of just the cardinal directions and diagonals. Feels more real this way. 

You also stop if you roll into something, but if you are already hitting something and roll, you'll keep rolling until the timer runs out for the roll or you hit something else. This is so you stop if you hit a wall, but keep moving if you are already against one. The idea behind this is to have obstacles like rocks, sticks/stumps, puddles, etc while fighting things. Making you be a bit more careful to not get stopped by what you hit.


Time

I only spent around an hour to do the dodging/rolling, and spent around 3 hours to do the bitmap font and message box system. So, that means the total time spent so far is about 6 hours so far. I probably spent way to much time on the message box system, but I wanted to be able to add story if I needed. I should also note that I am not counting time writing the dev log posts (which is taking a decent amount of time) or time to take gifs/screenshots.


What's next?

I'll probably work on a basic enemy (slime or something), basic player attacks, and both enemy/player health next time I work on it. (Tomorrow?) Let me know what you think of the game so far! Also, any suggestions for the name of the game?

(1 edit)

So, I was just made aware the low res jam was happening again. I've decided to use the whole time this time instead of just one weekend like I've done in the past XD, though I may have to devote a lot of time to a subcontract that I've agreed to do. That's a different thing though, so I'll start off with what I've done this first night. I guess I should say a few things about what I'm using and such first.

Art: Photoshop (any pixel editor would do, I just happen to use photoshop for work and such, so I already have it.)

Engine: Unity 2019.1.10f

Capture Software: Screen to Gif for gifs, Xsplit for video (have a license, so no watermarks, and it's so much more performant than OBS.)

Extra Assets: 2d pixel perfect camera from unity, Tilemaster tileset placer from the asset store (old tool of mine)


Tonight I did some arts and some extremely basic player code. After running around for a bit, I decided I want to make a dash and attack, boss only type thing. This should simplify what art is needed while limiting code for powerups and ai. Right now for placing the tiles in the tileset I made, I'm just using my good old Tilemaster script I wrote a few years ago. A few small updates for it were required, like adding a button for disabling the painter (before you could just close it and it would stop, but it keeps running in newer versions of unity), but there's also some limitations to it. For instance, you can't paint a prefab, meaning you can't paint things with animations or scripts or non-square colliders. I may update Tilemaster's code to help with that if I feel like it, but probably won't due to time limitations.


Anyway, Today's art was the basic "village" type of tileset and a basic walk in left/right/up animations. Past that, I made an animator and a basic player script to move around and get a feel for what I want. All of the art is 8x8 tiles. This means that the tile grid that you see on the screen will also be 8x8 tiles. I MIGHT change things later to where things are 16x16, but that'd really only be 4 tiles on the screen and may limit how large things can be but still fit on the screen. Anyway, for now it's just 8x8. Again, first night, only about 2 hours of effort, made art and code, so..... Not a ton to show, but I did make a gif for people to see progress. Oh, also made a little poof cloud. Will be for dashing, and maybe if things get thrown around and such.


Game is uploaded. Find it here: https://itch.io/jam/lowrezjam-2018/rate/293610


Boss battle.... works.... so does death...... so does beating the boss..... sleep now.... 5am.................. work............. tomorrow....................... zzzZZZzzzZZZzzz

Added in a doorway that opens when you collect all the coins. The doorway also tells the camera to switch to the boss room instead of following the player when they walk in the room.


I had a lot of problems getting the spawner and coins to work right. I'm using my own maker tool, and the spawner destroys all other spawners when it's loaded so that there's only one. Unfortunately my maker loads the object into memory so that it can clone it. Normally this is useful for things like the tiles, enemies, coins, etc, but in this case the invisible one was deleting all other spawners when I went into play mode instead of edit mode.


Next I intend to make Astrea (the witch girl) shoot out little fireballs for a few tiles, and the boss to move around. After that it's pretty much polish and extras. So almost to the minimum acceptable game.

Just a quick update that I have been super super worn out from work, so I haven't really done ANYTHING since the last update. T_T I don't have plans for the weekend, so I should be able to hopefully finish everything up.

I'm going to suggest speeding up the transitions from screen to screen quite a bit. Still have them, sure, but faster transition means less waiting which means the player isn't as bored playing the game that's all about clicking/tapping fast.

Changed some saturation levels to make the background less attention drawing and the ground a bit more. I also decided to take a video this time to get the music and sound effects out there for the world to see. 

Some of the way through the day Sunday now. I've added in a lot of smaller things that needed to be done. Largely getting pixel perfect movement working with everything properly, parallaxing, the art for the boss, fading in/out, creating a character spawner object to work with the level editor, etc. Some of it's been fixing small bits that my level editor needed fixing, and a bit of optimization in general also.

Here's where it currently stands with all the parallaxing in effect.


Dare I say it? It's starting to look like a game now. :D

I do need to make the player be able to attack the boss some how, haven't really figured out what I want to do with him. What boss you ask? The cutest rock golem you've ever seen. :D Well, that's it for the time being. I'll probably be back to working on it before the end of the night, but I'm gonna take a break for now.


(1 edit)

Ok, so I didn't get ANYTHING done yesterday. I was sooooo tired. BUT! Today IS a new day, and it's a weekend day. So, I set up a trello board to make sure I have the basics of what I need to have this game be a thing. I think as far as a basic game, I will be pretty much done by the end of the day. My goal is to finish the coin, add a title/end screen, at least 1 enemy and one boss. Then I would say phase one is complete. After that, add in an extra enemy, then start on a second level set (tileset, enemies, second boss, maybe powerup) and then add pretties and more enemies.

Edit: OH! Forgot the Trello board link. https://trello.com/b/guORrPwT

I was personally going to use a hidden hud like that as well. Not quite the same, but like if you are at full health, it would be off the screen and would only show health left, lives would only show up when you died or paused, etc. It's a good idea to save space. You can also potentially use sound to indicated low health, or change out some of the art like Mario does.


It's looking great though. Can't wait to see some enemies in place.


(I also want to say, your profile pic is pretty much my games character XD)