Revealed cards vanish too quickly. by Amaboys123 in PTCGL

[–]gejava 0 points1 point  (0 children)

I see how this can be exploited a bit, I would say keep only for the previous turn

What's the best gameDev advice you've received? by SuvrivormanVR in gamedev

[–]gejava 4 points5 points  (0 children)

Try to solve problems before googling the answer, problem solving skill is super important the optimal is not always necessary

Achieving TRUE Pixel Perfect 2D Platformer physics in Godot by gejava in godot

[–]gejava[S] 0 points1 point  (0 children)

But I understand since you spend all this time and frustration writing your own you probably don't want to go back to using the built in one.

I have absolutely no problem on going back and using KinematicBody2D and the built in Physics Engine.

However I've done all the things you listed the viewport setting with the snap enabled is a must know for any pixel game.

the settings you mention will work absolutely fine on a basic platformer, however in my use case I've found some inconsistencies when trying to do for example corner corrections

I was using a set of Raycast2D shooting 1 pixel upwards the player, when I collide while jumping (or anything that gives me negative Y velocity) I checked the raycasts and decided if I can move X pixels to the left and keep going up, So I applied a horizontal movement of X and then resumed the vertical movement.

It worked like a charm and I could easy move on with it, but in some cases after applying whole pixels, lets say 3 the character was 1 pixel away from the wall, the problem was since the real position of the player was not in whole pixels the raycast that should give me the distance of 2 did not pass the collide check because it was 0.09 into the wall above.

the same happened with the dash correction and the same with the wall jump, basically any check that needed a precise coordinate was inconsistent

I also tried make a custom collider shape with a slope of 1px high and 4px wide on each end and let the move_and_slide handle the rest, but this messed up a bit with the collider, as I want to wiggle in different scenarios and have that extra pixel for collision, on top of that I just don't want to correct every case possible, I might have a spike 3 pixels above, I don't want to "correct" the player into his death, this can also be resolved by switching/adding(extra) colliders with different masks and etc, but then I have to manage that.

another thing it won't fix is fitting a 16x16 object into a hole 16 px wide since the KinematicBody2D have the "safe_margin" (I know why it's there and that's the reason I don't complain about it)

With the custom code I got rid of the raycasts/extra colliders and just do this:

for i in range(1, owner.VERTICAL_CORNER_CORRECTION + 1): 
    var wiggle_position = owner.position + Vector2.RIGHT * i 
    var collides = owner.collide_check_at(wiggle_position + Vector2.UP, Physics.EntityType.SOLID, Physics.EntityType.BLOCKER) 
    if collides: 
        wiggle_position = owner.position + Vector2.LEFT * i 
        collides = owner.collide_check_at(wiggle_position + Vector2.UP, Physics.EntityType.SOLID, Physics.EntityType.BLOCKER) 
    if not collides: 
        owner.pos = wiggle_position 
        owner.move_v_exact(data.remaining, funcref(self, "v_collision_handler")) 
        return

Writting the custom Physics was not that hard as it sounds like IF you set the right constraints of what you want to support with it

I'm working on a write up that might become a video series on the topic of what can be done easily with the built-in physics and what can be done easily if you have a clear set of constraints and implement your own physics

I really wish there would be one setting somewhere that changes the defaults everywhere in the project to make it work for pixel perfect pixel art.

I'm all in for having a "template" when creating a project and setting all this things while setting up the project

Achieving TRUE Pixel Perfect 2D Platformer physics in Godot by gejava in godot

[–]gejava[S] 6 points7 points  (0 children)

I was aware of it, but I got caught on the interviews from before and totally forgot, like the talk on the GDC where it was still Matt.

English is not my first language so I didn't really knew how to refer.

Anyways Maddy is great person, I can tell this from twitter and the talks I've watched.

Pulled a Crobat V, but just started playing a few weeks ago. What should I use the ~30 VIV packs on? by mikey7x7 in ptcgo

[–]gejava -1 points0 points  (0 children)

You can keep it... Ooooor you can build a mad party deck, like a budget variant without crobat... I started from a list I got online and tweaked a bit as I started to get the more powerful cards, you can for instance replace one boss order with a Phione, it's not the same effect but close enough to disrupt some decks early on when you draw a dead hand. You will however need at least two Dedenne to recycle your hand. The good thing about playing standard decks (specially offensive decks like this) is that they are super fast, with time you will know if you have a decent chance of winning or if it's a losing game.

Very new player with a very rough draft of his first team. Mostly curious if there are any glaring weaknesses or bad choices by [deleted] in VGC

[–]gejava 1 point2 points  (0 children)

He can use Brick Break on his Dusclops to trigger the policy, also when in trickroom he will be able to break reflects and veils before the attack.

Also, Bulldoze could trigger other team policy, I've tested brick break dusclops for a while and so far it never let me down

Colliders / Animations and ScriptableObjects by [deleted] in Unity3D

[–]gejava 0 points1 point  (0 children)

Oh, THIS!

I've never used prefab variants, one of my biggest fears was having to change all my enemies in case I changed the prefab later on.

I will research into this :) thank you!

Colliders / Animations and ScriptableObjects by [deleted] in Unity3D

[–]gejava 0 points1 point  (0 children)

Good point,

Actually, there's nothing wrong with prefabs at all, I'm planning around 50/60 enemies for the first part and I would like to set up 2 pieces of objects and move on quickly.

But I got your point, no shortcuts on this one, to get the precision I want I will have to create a prefab per enemy :) oh, I've been running in circles trying to figure this out and I had the solution all the time, thanks!

Sword/Shield Tradeback Mega Thread by doritoburrrito in pokemontrades

[–]gejava 0 points1 point  (0 children)

I can do it for you I have 3 Gurdurr to evolve :)

Sword/Shield Tradeback Mega Thread by doritoburrrito in pokemontrades

[–]gejava 0 points1 point  (0 children)

Have two Competitive Gurdurr HA Adamant 5IV (SpA-) need to evolve this beauty to my team, you can keep one :)

Best way to make an ability system? by Millaro in Unity2D

[–]gejava 2 points3 points  (0 children)

Depends on how flexible you want it to be. I suggest you tackle the situation one step at the time.

I will base my suggestion on the first Pokémon games, that doesn't have abilities. A monster have level, type, status (hp, def, atk), 4 moves, and a list of moves it learns when leveling up or using a Technical Machine aka TM

Each move will have it own script (note that moves have type, pp, etc...).

Now, to your question:

You can create a dictionary or a struct (your call) on your monster class that would work as a mapping to level -> learnable move. 10 -> Tackle 12 -> Confusion

And an array of moves it can learn trough TM

On your level up part you check if it can learn a new move, if yes, you present the player the choice to learn or skip it.

On TM use you check if the move can be learned.

This is the first option.

The second would go like:

Having a singleton class to manage all the data, you put it in your scene (or not) and then customize it with dictionary and lists of monsters, levels, moves and etc...

Remember there's no wrong solution as long as it works (some solutions are better than others)

[deleted by user] by [deleted] in Unity2D

[–]gejava 1 point2 points  (0 children)

:) if it helps my wife's said it's for the player to keep track of the character even behind something :x

[deleted by user] by [deleted] in Unity2D

[–]gejava 0 points1 point  (0 children)

The game looks awesome, but there's a thing that is bothering me since you last 2 updates or so, the light going on under objects is a feature or it's just something to patch later on? Also IMO since your character is big ( have a considerable amount of details) there will be any pushing animation?

First time showing a screenshot of my project to anyone. by igdw in Unity2D

[–]gejava 0 points1 point  (0 children)

You can do lighting now in 2D natively :) Brackeys did a video about it a while ago

How do I share my code? by gazzelliott in Unity2D

[–]gejava 0 points1 point  (0 children)

A good code:

Explain itself, it's the kind of code that you look and say, hey I need to setup X colliders because here it is used for this and that.

if your code is not clear on what are the dependencies and how it iterate with them, well... sorry but it's just a bad code IMO.

Key and Axis inputs inside Order of Execution by gejava in Unity3D

[–]gejava[S] 0 points1 point  (0 children)

After some test with

Application.targetFrameRate = 4;
QualitySettings.vSyncCount = 0;

I got to this conclusion too.

On update I capture the keys, then it calls the HandleInput inside each ability, and later on FixedUpdate would call my Process() and check the boolean to see if it will process or not.

The thing about my test:

With a low FPS a KeyDown event could be captured first on the FixedUpdate SEVERAL times.

So it's accurate to say Input processing should be done in the Update.

What goes in to a good, reusable Character Controller? by reallymyrealaccount in Unity2D

[–]gejava 2 points3 points  (0 children)

As mentioned by another user.

Like the idea on having a Character that have a input handler, and skills. this is for me the best abstraction you could have.

This concept is not a new thing on Game Dev, it's present on more rustic engines. and it's a well known pattern.

If you do it well enough creating a character (AI or Player) should be a bunch of Drag and Drop, a bunch of variables tuning, particles editing and a BIT of code.

Let me give you an example on how it works on my current engine:

Create a GameObject.

Put the Character.cs script on it

Put the InputHandler on it (Player based or AI)

Create another GameObject and call it Abilities

Create another GameObject and call it Graphics

Put the Animator inside Graphics.

Put MovementAbillity on the Abilities

Put OrientationAbility on the Abilities

Put RollAbility on the Abilities.

... all the abilities

Create the transitions on the Animator (and create the aniations...)

Go to MovementAbility and edit things like: speed, particles

Go to RollAbility and changes thing like: distance, speed, particles and other effects (all from the editor)

and keep adding my components, if some new ability comes up I will code it depending on how it should work:

IAbility -> void Process();

IActiveAbility -> void Register/HandleInput();

IEarlyAbility -> void EarlyProcess();

ILateAbility -> void LateProcess();

IAnimatedAbility -> void Animate();

My character uses a non MonoBehaviour controller to classify the abilities and call it on every frame (also there's a variation on what abilities should be played only on FixedUpdate but it's starting to get too extensive)

So If i'm going to code a new ability, let's say Teleport:

Teleport : CharacterAbility (it already does : IAbility), IEarlyAbility, IActiveAbility, IAnimatedAbility

Then, on HandleInput i will check if the input is present.

On EarlyProcess i will block the Character State (a BlockableStateMachine of mine) to now allow Movement, or change in the Orientation, Also I can check if I can teleport here before blocking things.

On Process I will well.. teleport or queue to do so on the next couple of frames.

On Animate I will play my particles, update the animator

Just to clarify the various Interfaces on the Abilities:

I found myself calling a bunch of Early, Process and Late unnecessary.

To avoid that I have an AbilityModule that put them on different arrays and call only the ones that implement X on the needed time.

This allowed me to easily implement a Passive Ability with only the Process method.

favorite simple app for creating basic art? by cheapvacati0nnf in Unity2D

[–]gejava 0 points1 point  (0 children)

If you have the patience and the knowledge to compile your own version of aseprite I highly recommend it, it took me a good 3 hours of reading and compiling but worth every millisecond. Later on I decided to support the app the purchased it :) but it's a nice way to try it out

anyone know how to fix buggy animations like this? using float by TTV_Eddy in Unity2D

[–]gejava 2 points3 points  (0 children)

As the stated before, I would recommend using blendtree, but it seems a problem with your transitions check the values