• Hey, guest user. Hope you're enjoying NeoGAF! Have you considered registering for an account? Come join us and add your take to the daily discourse.

GAF Indie Game Development Thread 2: High Res Work for Low Res Pay

Status
Not open for further replies.
So I'm having a little code problem.

I have a boat that's a gameobject. When that boat is destroyed by a trigger, i want to respawn the boat and then destroy that clone. Then just keep doing that.



This code destroys the boat, clones it, then destroys it again. However I want to keep destroying then cloning.

I can't seem to get it right. Can anyone please help?

Code executes from top down.

So if you are calling the boat to be destroyed BEFORE you instantiate a new boat... :)

Instantiate, then destroy.
 

jrush64

Banned
Code executes from top down.

So if you are calling the boat to be destroyed BEFORE you instantiate a new boat... :)

Instantiate, then destroy.

But theres already a boat in the scene thats needed for the puzzle. So if you destroy that boat, it's supposed to respawn.

Can I instantiate the boat on Awake()? Would that work?
 
But theres already a boat in the scene thats needed for the puzzle. So if you destroy that boat, it's supposed to respawn.

Can I instantiate the boat on Awake()? Would that work?

I have no idea what your intention is or how your scene is setup. I just know that your order of execution won't allow instantiating a new object if you call to destroy it before you instantiate.

If you want to instantiate a new boat to be destroyed when you collide with that boat - then just instantiate a new boat on trigger enter and THEN destroy the old boat.

Also, to destroy the current object the script is attached to: Destroy (gameObject);
 

jrush64

Banned
I have no idea what your intention is or how your scene is setup. I just know that your order of execution won't allow instantiating a new object if you call to destroy it before you instantiate.

If you want to instantiate a new boat to be destroyed when you collide with that boat - then just instantiate a new boat on trigger enter and THEN destroy the old boat.

Also, to destroy the current object the script is attached to: Destroy (gameObject);

Ok It's a puzzle. There's a boat in the scene, you need the boat to advance. However you can also destroy that boat and if you do, I need it to respawn because you need it to advance.
 

Jams775

Member
So I'm having a little code problem.

I have a boat that's a gameobject. When that boat is destroyed by a trigger, i want to respawn the boat and then destroy that clone. Then just keep doing that.



This code destroys the boat, clones it, then destroys it again. However I want to keep destroying then cloning.

I can't seem to get it right. Can anyone please help?


Code:
Pumpkyn = GameObject.Find ("PumpkinBoat");

if (pumpdetect.gameObject.name == "PumpkinBoat") {
}
if (pumpdetect.gameObject.name == "PumpkinBoat(Clone)") {
}

You should change that to
Code:
Pumpkyn = GameObject.FindGameObjectWithTag("PumpkinBoat");

if (pumpdetect.gameObject.tag == "PumpkinBoat")
{
Destroy(Pumpkyn);
Instantiate(Pumpkyn);
}

that way it checks by tag which should always be the same name instead of having (clone) appended to the end. Not sure if that'd help. Don't forget to add the tab too. Edit: also I don't know if it's working for you but you might want to destroy the game object before instantiating another one if it's to be its replacement.
 
Ok It's a puzzle. There's a boat in the scene, you need the boat to advance. However you can also destroy that boat and if you do, I need it to respawn because you need it to advance.

void OnTriggerEnter (Collider pumpdetect)
{
Debug.Log ("Boat destroyed");

if (pumpdetect.gameObject.name == "PumpkinBoat") {


Instantiate (Pumpkyn, originee.position, originee.rotation);
Destroy (Pumpkyn);
}
else if (pumpdetect.gameObject.name == "PumpkinBoat(Clone)") {

Instantiate (Pumpkyn, originee.position, originee.rotation);
Destroy (GameObject.Find ("PumpkinBoat(Clone)"));
}
}
 

Blizzard

Banned
I finished most everything I wanted to do on the game besides music, but ran out of time and didn't get that in. Ludum Dare 34 entry, Morse GRO:

submission_screenshotkwqw3.png

http://ludumdare.com/compo/ludum-dare-34/?action=preview&uid=12278

Unfortunately, even with the instructions it may be too difficult and confusing to players.
 

Terranwolf

Neo Member
Ok It's a puzzle. There's a boat in the scene, you need the boat to advance. However you can also destroy that boat and if you do, I need it to respawn because you need it to advance.

I don't think this is the right approach.

So, why does it need to repeat the process? From what I am understanding for what you want and currently have, you only need to copy the boat, destroy the old one, and then make the boat again from the copy. You won't end up with clones if you instantiate the copy after destroying the original.

On the other hand, why are you destroying it in the first place? There won't necessarily be anyone noticing that the boat was gone as it is right now. Are you wanting to make the boat capsize somehow, but then come back? A way to make it noticeable here would be to have some delay of a "respawn" once the new boat is instantiated. Or, you could control everything specifically through animations and never need to destroy the boat (just change its "health/condition" and other variables when resetting it. You may want to have something else control respawning then.
 
I don't think this is the right approach.

So, why does it need to repeat the process? From what I am understanding for what you want and currently have, you only need to copy the boat, destroy the old one, and then make the boat again from the copy. You won't end up with clones if you instantiate the copy after destroying the original.

On the other hand, why are you destroying it in the first place? There won't necessarily be anyone noticing that the boat was gone as it is right now. Are you wanting to make the boat capsize somehow, but then come back? A way to make it noticeable here would be to have some delay of a "respawn" once the new boat is instantiated. Or, you could control everything specifically through animations and never need to destroy the boat (just change its "health/condition" and other variables when resetting it. You may want to have something else control respawning then.
He's trying to do it from the object itself (dictated by OnTriggerEnter). I dont like that approach but I don't want to go over 3rd party spawn systems if he mistakenly is trying to spawn a boat after he is destroying it, while the script is on the attached object. The boat is being destroyed and the code stops running there but he's trying to spawn another one.

I would personally on entering the appropriate trigger, disable the object's renderer and collision for a moment, make an explosion or whatever, then respawn the object after resetting any variables. Keeping the object in-scene.

If he wants to destroy and spawn I'd use a spawn controller and not have it object-based.

I'm on mobile and would type up a solution but.. Mobile.
 

jrush64

Banned
void OnTriggerEnter (Collider pumpdetect)
{
Debug.Log ("Boat destroyed");

if (pumpdetect.gameObject.name == "PumpkinBoat") {


Instantiate (Pumpkyn, originee.position, originee.rotation);
Destroy (Pumpkyn);
}
else if (pumpdetect.gameObject.name == "PumpkinBoat(Clone)") {

Instantiate (Pumpkyn, originee.position, originee.rotation);
Destroy (GameObject.Find ("PumpkinBoat(Clone)"));
}
}


I get this error;

The object of type 'GameObject' has been destroyed but you are still trying to access it.

I point out that I have a boat in the scene already. If that boat is destroyed, I want to be able to spawn it again.

I don't think this is the right approach.

So, why does it need to repeat the process? From what I am understanding for what you want and currently have, you only need to copy the boat, destroy the old one, and then make the boat again from the copy. You won't end up with clones if you instantiate the copy after destroying the original.

On the other hand, why are you destroying it in the first place? There won't necessarily be anyone noticing that the boat was gone as it is right now. Are you wanting to make the boat capsize somehow, but then come back? A way to make it noticeable here would be to have some delay of a "respawn" once the new boat is instantiated. Or, you could control everything specifically through animations and never need to destroy the boat (just change its "health/condition" and other variables when resetting it. You may want to have something else control respawning then.

Because it's like an object you need to need to complete a puzzle. That object can get destroyed so it needs to respawn to pass the puzzle. Forget the boat name, it's just an object, like a box.


He's trying to do it from the object itself (dictated by OnTriggerEnter). I dont like that approach but I don't want to go over 3rd party spawn systems if he mistakenly is trying to spawn a boat after he is destroying it, while the script is on the attached object. The boat is being destroyed and the code stops running there but he's trying to spawn another one.

I would personally on entering the appropriate trigger, disable the object's renderer and collision for a moment, make an explosion or whatever, then respawn the object after resetting any variables. Keeping the object in-scene.

If he wants to destroy and spawn I'd use a spawn controller and not have it object-based.

I'm on mobile and would type up a solution but.. Mobile.

I'm trying to get the spawning right before adding effects. Maybe I don't need to destroy it, but disable it. The respawn it again if you destroy it. I think I get what you're saying. Instead of destroying it, I just disable it when you enter the trigger. Then respawn it again that way it is still in the scene.

UPDATE:

I was able to get it working, but I don't actually understand how I did it.

public class PumpkinSpawn : MonoBehaviour {

public Transform originee;
public GameObject Pumpkyn;

void Start ()
{

Pumpkyn = GameObject.Find ("PumpkinBoat");
Instantiate (Pumpkyn, originee.position, originee.rotation);

}

// Update is called once per frame
void Update ()
{

}

void OnTriggerEnter (Collider pumpdetect)
{
Debug.Log ("Boat destroyed");

if (pumpdetect.gameObject.name == "PumpkinBoat")
{
Destroy (Pumpkyn);
Instantiate (Pumpkyn, originee.position, originee.rotation);
(GameObject.Find ("PumpkinBoat(Clone)")).SetActive(true);
}
if (pumpdetect.gameObject.name == "PumpkinBoat(Clone)")
{
Instantiate (Pumpkyn, originee.position, originee.rotation);
(GameObject.Find ("PumpkinBoat(Clone)")).SetActive(false);
}

}
}

It does what I need it to do so, YAY!
 
Truthfully I have no idea what you're attempting to do with how your code is written.

You want to ram a boat, destroy it and spawn a new one. I get that part. I just don't know what your transform and gameobject references are for if you're doing everything on the object, itself.

If you are literally instantiating the exact same object - you don't need to store a reference. Anytime you call "gameObject" in unity - you refer to the object the script is attached to. So to instantiate a clone of itself - we use:

Instanitate (gameobject, ...

This will clone the object the script is on.

Next.
If it's an object in the game world that doesn't move - you don't need to assign its transform if you're spawning it right on top of where it sits. For this we do:

Instantiate (gameObject, transform.Position, transform.Rotation);

This gets the exact position of that object at that moment.

Now for the rest of your script.

In your Start() - you are creating a new object immediately. So when a new boat spawns - a new boat will spawn every frame and if it's touching itself, will be deactivated - hence the looking for collision with the (clone). Technically - this should go on indefinitely.

Also in your OnTriggerEnter - you haven't destroyed anything yet but you Debug that you have, even though you're using IF statements to both destroy and deactivate - so you're log will never be accurate to what just happened.

You're also calling Destroy in your first IF - BEFORE you instantiate anything and enable the clone object.

if you ever actually DO destroy anything - it will never execute instantiating a new object. Instead, what's happening is your Start() function is handling the spawning.

Copy Pasta - and read me your log counting how many times each Log prints:

public class PumpkinSpawn : MonoBehaviour {

public Transform originee;
public GameObject Pumpkyn;

void Start ()
{

Pumpkyn = GameObject.Find ("PumpkinBoat");
Instantiate (Pumpkyn, originee.position, originee.rotation);
Debug.Log("Start Pumpkyn instantiated");
}

// Update is called once per frame
void Update ()
{

}

void OnTriggerEnter (Collider pumpdetect)
{
Debug.Log ("Trigger entered.");

if (pumpdetect.gameObject.name == "PumpkinBoat")
{
Destroy (Pumpkyn);
Debug.Log("Destroyed Pumpkyn");
Instantiate (Pumpkyn, originee.position, originee.rotation);
Debug.Log("Trying to instantiate after destroying");
(GameObject.Find ("PumpkinBoat(Clone)")).SetActive(true);
Debug.Log("Made the PumkinBoat(Clone) active after Destroy");
}
if (pumpdetect.gameObject.name == "PumpkinBoat(Clone)")
{
Instantiate (Pumpkyn, originee.position, originee.rotation);
Debug.Log("Second IF statement executed and instantiated");
(GameObject.Find ("PumpkinBoat(Clone)")).SetActive(false);
Debug.Log ("Found and deactivated PumkinBoat(clone)");
}

}
}

I've put a log after everything that happens that's important. Read the log and tell me what executes according to the log. You will then see what is actually happening.
 
AH!

SO i'm guessing this script is on the main boat that DOES NOT get destroyed? Right? I couldn't find in your posts the relation between the objects but I'm guessing the reason you use references like this is because you are spawning a new boat from the boat you control and that spawned boat is the one you want to destroy.

OK. Wrong way to do it but OK. We will call boat A the controlled boat and boat B the destroyed boat.

First order of business - why? If it gets spawned the moment you destroy it - why bother destroying it? I understand its for a puzzle but if it never looks like it goes anywhere - why bother?

if you REALLY must be destroying and spawning the object i would suggest moving the destroy and instantiate to a spawn class and not on any object that gets destroyed.

If you REALLY want to destroy and instantiate without creating another class then move those functions to object B

Now - TAG object A with anything - for this i will say "ObjectA"

Object B Script:

Code:
void OnTriggerEnter (Collider collision)
{
    if (collision.gameObject.CompareTag("ObjectA"))
        {
            Instantiate (gameObject, transform.Position, transform.Rotation);
            Destroy (gameObject);
        }
}

That is all you need. No start, no update, no IFs, no references, just an OnTriggerEnter and your class information

All we are doing is checking to see if we collided with ObjectA - if we did - we spawn a clone of ourselves and destroy the current object.

Again - I question this method of instantly destroying and spawning the exact same object in the exact same place but it's not my game.

You really should be using a SpawnController class to hold information on what B objects need to spawn where and create public methods object A can call to spawn B objects.

But if you want to go this method without a controller script on another object then just do it this way. You may just be spawning over and over again if object A is in the same position object B spawns in as every time it spawns OnTriggerEnter may get called because of a constant overlap.

I would personally create a SpawnController which contains the object, transforms, etc that need to be spawned. On this class create a public function to spawn the object at your desired location.

On object B - reference that class so you have access to it.

When object A enters object B, you will turn off the object's renderer and that's it.

Now, when object A leaves object B (OnTriggerExit) - we will call the public function on our SpawnController class to spawn a new B object and immediately after, destroy ourselves since we are of no further use.

This eliminates possible overlap and waits for the previous object to leave the trigger before spawning a new one, eliminating spawn-contact-instantiating.

You can take this a step further by using that spawn method on your SpawnController to call a coroutine and "wait" a moment or two before spawning a new object.

We don't want to call the coroutine from the object we destroy because whatever object starts a coroutine - must be alive to continue the coroutine. A solution would look like:

Code:
public void SpawnNewThing()
{
    StartCoroutine("NewObjectThing");
}

IEnumerator NewObjectThing()
{
    yield return new waitForSeconds(1); //waits one second or however long you like
    Instantiate (blah blah...
}

This will allow you to start a coroutine on an object that you are about to destroy by calling a public function first. That function or method then calls the coroutine and the previous object can safely be destroyed while the coroutine runs.
 

jrush64

Banned
AH!

SO i'm guessing this script is on the main boat that DOES NOT get destroyed? Right? I couldn't find in your posts the relation between the objects but I'm guessing the reason you use references like this is because you are spawning a new boat from the boat you control and that spawned boat is the one you want to destroy.

OK. Wrong way to do it but OK. We will call boat A the controlled boat and boat B the destroyed boat.

First order of business - why? If it gets spawned the moment you destroy it - why bother destroying it? I understand its for a puzzle but if it never looks like it goes anywhere - why bother?

if you REALLY must be destroying and spawning the object i would suggest moving the destroy and instantiate to a spawn class and not on any object that gets destroyed.

If you REALLY want to destroy and instantiate without creating another class then move those functions to object B

Now - TAG object A with anything - for this i will say "ObjectA"

Object B Script:

Code:
void OnTriggerEnter (Collider collision)
{
    if (collision.gameObject.CompareTag("ObjectA"))
        {
            Instantiate (gameObject, transform.Position, transform.Rotation);
            Destroy (gameObject);
        }
}

That is all you need. No start, no update, no IFs, no references, just an OnTriggerEnter and your class information

All we are doing is checking to see if we collided with ObjectA - if we did - we spawn a clone of ourselves and destroy the current object.

Again - I question this method of instantly destroying and spawning the exact same object in the exact same place but it's not my game.

You really should be using a SpawnController class to hold information on what B objects need to spawn where and create public methods object A can call to spawn B objects.

But if you want to go this method without a controller script on another object then just do it this way. You may just be spawning over and over again if object A is in the same position object B spawns in as every time it spawns OnTriggerEnter may get called because of an overlap.

Thanks for your help. I was actually setting the spawn point in another place away from the character. The script was on the trigger and the boat gameobject on also on the trigger.

Instead of a boat, let's call it a box. The whole point is that, you can push the box to hold down a switch. However the box can be destroyed it it hits certain objects/ hazards. So If that happens, the box will respawn to where it originally was.

I just needed the box to respawn if it ever got destroyed.
 
Thanks for your help. I was actually setting the spawn point in another place away from the character. The script was on the trigger and the boat gameobject on also on the trigger.

Instead of a boat, let's call it a box. The whole point is that, you can push the box to hold down a switch. However the box can be destroyed it it hits certain objects/ hazards. So If that happens, the box will respawn to where it originally was.

I just needed the box to respawn if it ever got destroyed.

Then just move the box, don't destroy it. Even easier.

If object A touches object B
Move object B to...

No need to instantiate and destroy, then.

If you need to have an explosion or some other effect - then just create that effect when you move it BEFORE you move it.
 
Welp, my partner just shot down the Trump 2016 achievement.

But so far, there are 17. That's 15 more than we thought we'd be able to get in the game.

But damn. The Trump acheevo.
 

missile

Member
I revisited some old gifs of mine and have realized that I need a slow-motion
replay feature for my game!

30422966.gif


30243217.gif



30485413.gif

I like this one as well. The rocket experiences a nozzle failure during ascend
resulting in a quite interesting tumbling motion. I sort of simulated (rude
approximation) the center of pressure on the rocked where the dynamic forces
like lift and drag acts upon enhancing the tumbling motion.
 
Haven't updated yet, what are the problems?

You name it :(

Lots of rendering issues, collider issues for 2D, animation issues, etc.

The 5.3 announcement thread on the official forums lists a lot of stuff.

I'm getting really pissed at these releases from Unity.
 

Dewfreak83

Neo Member
So I'm trying to get more into tumblr and blogging. I really wanted to explore topics less covered in the indie dev world tho:
  • legal
  • finances
  • planning
  • architecture
  • marketing
  • time management

I also get to do some fun art for each post, this one inspired by my new baby boy :)

HHoRyEf.png


I'd love to know if the format and content is useful or interesting. You can check it out here: Under the Bits and Bytes: A how-to and behind-the-scenes blog from Under Byte Studios, an indie developer.

Edit: Also I'm really trying to find some other fun / informative game dev blogs. Please pass them on if you have any suggestions!
 

snarge

Member
Made some new enemies this weekend. They operate similar to Boos from SMB, where they follow you only when you're facing away. The art is temporary, though I think it is a bit charming (because I did it, lol)

jrNcK2h.gif
 
You name it :(

Lots of rendering issues, collider issues for 2D, animation issues, etc.

Yeah, I looked at the forums the day after the release and noped the fuck out. It's a pity, 5.3 has a few fixes and improvements that we could really use but there's no way I'm upgrading at this point. Unity should really release a Snow Leopard / El Capitan -style update focusing on stability and performance.
 

Lork

Member
You name it :(

Lots of rendering issues, collider issues for 2D, animation issues, etc.

The 5.3 announcement thread on the official forums lists a lot of stuff.

I'm getting really pissed at these releases from Unity.
Not to mention depreciated functions whose functionality aren't fully duplicated by their replacements. And god help you if, like me, you were dumb enough to hitch your wagon to UNET. That's the reason why I've been keeping as up to date as possible, but it really backfired this time.
 

JeffG

Member
You name it :(

Lots of rendering issues, collider issues for 2D, animation issues, etc.

The 5.3 announcement thread on the official forums lists a lot of stuff.

I'm getting really pissed at these releases from Unity.

I haven't had any issues (yet).

lol I had to update because I was rebuilding a new laptop at work and for some reason the new laptop would crash loading my proof of concept project on lower versions (5.2.2). Moving to 5.3 solved that issue.
 
Yeah, I looked at the forums the day after the release and noped the fuck out. It's a pity, 5.3 has a few fixes and improvements that we could really use but there's no way I'm upgrading at this point. Unity should really release a Snow Leopard / El Capitan -style update focusing on stability and performance.

Not to mention depreciated functions whose functionality aren't fully duplicated by their replacements. And god help you if, like me, you were dumb enough to hitch your wagon to UNET. That's the reason why I've been keeping as up to date as possible, but it really backfired this time.

I'm going to wait a while on updating. When I am forced I'll spend the week at Matt's house drinking all of his booze making him mad while I fix stuff.

I haven't had any issues (yet).

lol I had to update because I was rebuilding a new laptop at work and for some reason the new laptop would crash loading my proof of concept project on lower versions (5.2.2). Moving to 5.3 solved that issue.

FUCK YOU

jk :p
 
lol

I usually wait to upgrade. I have been burned by asset store purchases breaking on update, but this time the upgrade worked in my favour. Go figure

I usually don't wait to update - but I keep several versions of Unity on my machine and use a temporary copy of my project to see how any new versions go. This way I can hop in and NOPE my way out of a Unity build, if needed.
 

snarge

Member
I usually don't wait to update - but I keep several versions of Unity on my machine and use a temporary copy of my project to see how any new versions go. This way I can hop in and NOPE my way out of a Unity build, if needed.

Huh, I think I just learned a protip. Never thought of doing this.
 
My LD34 game jam is done. http://ludumdare.com/compo/ludum-dare-34/?action=preview&uid=29419

Explore a randomly generated planetary system with random event encounters and a very simple two-button turn-based combat system. Can be replayed multiple times for different encounters.

The balance may not be perfect all the time but you can spend endless hours tuning balance but I have run out of time for the jam (have things to tend to IRL!)

I actually completely changed the game except for the planetary system gen, it was going to be a super lightweight 4x (such a bad idea for a jam, don't know what I was thinking). 24hrs in I stopped that and changed it when I realised I'd never finish.

mQgpnzt.gif


ru2FhHA.png


37rI8uf.png


KzTdUFI.png


QKpjdYC.png
 

JeffG

Member
I usually don't wait to update - but I keep several versions of Unity on my machine and use a temporary copy of my project to see how any new versions go. This way I can hop in and NOPE my way out of a Unity build, if needed.

I do something similar. I jump between 2 machines. My home PC and my work laptop. I usually do the experiment on my laptop.

But the 4.6 -> 5.0 was such a gong show. I lost my ability to give a shit and just stopped developing for 6 mths until the store assets caught up. So now I am a bit more reluctant to move versions, but I am kinda waiting to see what 5.4 (DX12) has in store.
 

Blizzard

Banned
My LD34 game jam is done. http://ludumdare.com/compo/ludum-dare-34/?action=preview&uid=29419

Explore a randomly generated planetary system with random event encounters and a very simple two-button turn-based combat system. Can be replayed multiple times for different encounters.

The balance may not be perfect all the time but you can spend endless hours tuning balance but I have run out of time for the jam (have things to tend to IRL!)

I actually completely changed the game except for the planetary system gen, it was going to be a super lightweight 4x (such a bad idea for a jam, don't know what I was thinking). 24hrs in I stopped that and changed it when I realised I'd never finish.

That's an impressive amount of content! I ended up doing a post-compo update to let people optionally play an less-picky-timing version. Sadly commenting out a single line to make that easier version probably would have made the game way better, but it's too late now. :p
 
Huh, I think I just learned a protip. Never thought of doing this.
Easy as. I think I still have versions as far back as 3.x Not because I need them, but because I'm lazy at deleting software.

I do something similar. I jump between 2 machines. My home PC and my work laptop. I usually do the experiment on my laptop.

But the 4.6 -> 5.0 was such a gong show. I lost my ability to give a shit and just stopped developing for 6 mths until the store assets caught up. So now I am a bit more reluctant to move versions, but I am kinda waiting to see what 5.4 (DX12) has in store.
That was a pretty big pain for me. Hell, even 4.3 thru 4.6 was messy with how they kept fixing some 2D collisions. Now it's messed up again.
 

Jams775

Member
What do you do when you don't think or aren't sure if your game is fun? I know this happens to developers all the time, but I'm kind of stuck thinking that if I keep developing the game, it isn't going to be any more fun than it already is. I think I'm ready to release test build to see if random people think it's any good, but it's kind of bare in what you can do at the moment.

It's I guess a bit of a 3D Zelda (though that wasn't intentional). I mean for it to be a first person exploration game where you can fight monsters and occasionally pick up items. I think the boring part is coming from the attack delay timer for the weapon. where it's, hit, wait, hit wait repeat. Then again maybe it's because I've been doing it so much that it's getting boring.

Anyway, here are the files if anyone wants to give me input.
Windows Version
Mac Version (Don't have Mac, Couldn't Test it)
 
What do you do when you don't think or aren't sure if your game is fun? I know this happens to developers all the time, but I'm kind of stuck thinking that if I keep developing the game, it isn't going to be any more fun than it already is. I think I'm ready to release test build to see if random people think it's any good, but it's kind of bare in what you can do at the moment.

It's I guess a bit of a 3D Zelda (though that wasn't intentional). I mean for it to be a first person exploration game where you can fight monsters and occasionally pick up items. I think the boring part is coming from the attack delay timer for the weapon. where it's, hit, wait, hit wait repeat. Then again maybe it's because I've been doing it so much that it's getting boring.

Anyway, here are the files if anyone wants to give me input.
Windows Version
Mac Version (Don't have Mac, Couldn't Test it)

First person melee combat sucks. It sucks in Skyrim, it sucks in Minecraft, and it's just an afterthought in most shooters if it exists at all. If anyone has solved the problem of making first person melee fun, I'm not aware of their work.

The movement speed in your game is really slow, so exploration is a chore. The mouse needs to be refocused every frame otherwise I can drag it off screen and not turn all the way around. I would also like at least some amount of vertical aiming. It feels like everything is ultra constrained right now having only the horizontal plane to work with. The attack animation is super basic and has no energy to it.


It's pretty common to hear about games in AAA development that don't come together until right at the end, but that has mostly to do with a lack of polish and with an enormous range of activities. Personally, I prefer to build things starting with a vertical slice. If I can't have a fun playable concept early on in development, then I don't see the point in continuing.
 

Jams775

Member
First person melee combat sucks. It sucks in Skyrim, it sucks in Minecraft, and it's just an afterthought in most shooters if it exists at all. If anyone has solved the problem of making first person melee fun, I'm not aware of their work.

The movement speed in your game is really slow, so exploration is a chore. The mouse needs to be refocused every frame otherwise I can drag it off screen and not turn all the way around. I would also like at least some amount of vertical aiming. It feels like everything is ultra constrained right now having only the horizontal plane to work with. The attack animation is super basic and has no energy to it.


It's pretty common to hear about games in AAA development that don't come together until right at the end, but that has mostly to do with a lack of polish and with an enormous range of activities. Personally, I prefer to build things starting with a vertical slice. If I can't have a fun playable concept early on in development, then I don't see the point in continuing.

I had a vertical lock on to experiment with a doom style view and left it on by accident. I think I need to let this one go and start over with something other than first person melee combat like you suggest. I'm still really new to programming and modeling and the scope of the game kind of got out of hand. I need to go back and try to make something more simple this time.

Thanks for the feedback.
 

Jobbs

Banned
Condemned did it reasonably well (first person melee).. That said.. Haven't played it in nearly a decade, I could be remembering it better than it was.
 

Elitist1945

Member
So are there any good books out there for game development lmao. I would love to go to college for a Game Design course but I have way too much anxiety and get stressed too much - I barely survived high school because of it.
 
I honestly don't know if we can or eventually will have "good" first person melee combat. I feel anything that matures enough to feel authentic will require more than a mouse or analog stick. It may be possible to create something better than what we've seen so far in gaming but I think even the best-case-scenario with these input peripherals will only yield a minor increase in fidelity over current "good" implementation in games.

A lot of what we see now that we feel is done well is contextual and automated, to an extent.

If VR takes off it will be a step in the right direction as we can decouple the camera movement and turn control from the mouse or analog and use that as a layer of input for controlling melee weaponry.
 

Jobbs

Banned
Someone give me some fresh enemy inspiration -- Anyone who's vaguely familiar with my game which is sort of Metroid-like but with a lot of dashing-with-iframes.

If I use your idea I'll credit you.
 
Status
Not open for further replies.
Top Bottom