Look to the Left
Back from the Void
- Location
- OH CANADA!!!
Seems like it's slowly becoming more coherent.
A script state machine sounds like something Unity should have, for enemies AI and such.
Also, unless the enemy (or player) happens to be astronomically lucky, if you implement invulnerability after each hit your multiple hitbox problem goes away. It is kinda cheap, but it may work.
So is it okay if I ask advice for my school project since I'm starting out using the Unity Engine?The Unity Engine. Been fiddling with the engine for several years now; it's what I learned C# by toying with.
So is it okay if I ask advice for my school project since I'm starting out using the Unity Engine?
I'll do it later then. Thanks.I mean, I can try? Depends on what exactly you're doing. Ask me in a private convo.
Don't we all?
Sounds fun.
Do you have planned things like ranged attacks, for the bosses or the players?
The mix of enormous wind-up time and inability to move is definitely why I usually only use ranged in Dark Souls to start engagements or to be really, really cheesy. Though another thing is that most of the really fun interplay seems to arise when you're in melee. There's often just more game there, IMO.
Anyway, all this stuff is pretty fascinating. I've recently done most of the Unity tutorials and I'm about midway through the Networking tutorial, so seeing the sausage being made by someone else is neat, and hopefully helpful.
I will be honest, networking terrifies the heck out of me, so I mostly stick to single-player projects :'D (heck of a lot easier to test too; current paid project is a local multiplayer game that doesn't require networking, but still requires I set up an minimalistic AI bot just to have something to play against and test things).
Still, best of luck! I'm glad these dev logs are of use to people. I'm mostly going by 'stuff I would have liked to know earlier' for topics to focus on. Are you new to game dev in general or just Unity specifically?
Best advise I can give is to get version control software (I just use bitbucket and SourceTree) and use it. In particular, whilst it allows you to revert changes that didn't play out, you'll often find you have a set of utility scripts, editors and shaders and so on that you're frequently wanting to use in every project. Make that into its own repo and clone it into every project, so you can keep them all in synch and not have to keep copy-pasting code or writing something you'd implemented before in a different project from scratch all over again. Saves so much time. My own utility set is pretty broad; stuff for handling saving/loading data, stuff for geometric tests and queries, additional math and debug functions, various data structures like quadtrees and so on.
I like math, and most programming I've done so far has been algorithms which I also like, so I think I'll mostly enjoy it, but while the tutorial is very simple and implements very easily, I can already tell that it's a complex, complex thing.
But most of my gaming these days is with a group of my friends, so I figure if I'm going to build things, I might as well try to make an MP game for us to start with.
Both, really. I haven't done anything serious before, and the unity tutorials are some of the biggest programming projects I've done, but at the same time, I have a lot of the prerequisites for getting good fast. The only problem is that my knowledge of modelling and animation - or, really, all the non-coding and non-design stuff - goes to around "there are programs for it and it is very hard".
I expect my prototypes will involves a loooot of rectangles and primitive shapes.
Ooh, good idea. I'll look into making that once I have something that looks vaguely like a first prototype, I think. I should probably also spend an hour learning how Visual Studio works.
If that's the case I would actually advise a local MP game (ie one console, one screen, 2-4 controllers). There are some shenanigans currently involved in setting up local multiplayer with Unity's current Input system, but it's simpler to solve than network multiplayer and the fun, fun realm of ping, lag compensation and packet loss.
For gaming code, if you don't know much about vector math now is the time to learn. Nearly everything in game code involves vectors in some way; they're how position is stored in space, how you define directions and so on and so forth. My personal bible on this topic is 3D Math Primer for Graphics and Game Development by Dunn & Parberry; it's a very useful reference.
Heh. Well, fun tip: I actually started out modelling before I started out coding, so I've dipped my toes in several different modelling programs. 3dsMax and Maya considered the 'standards', but I personally use Blender. I have a licensed copy of 3ds Max and haven't tried Maya, but Blender is a whole lot quicker to work with; you can do things with a lot less hassle. You can rig and uv a model without having to dance around with modifier stacks that will break all your work if you sneeze (fuck you very much 3dsMax) and Unity can import .blend files directly because the file format isn't proprietary(technically it tells blender to export the file as .fbx and imports that but still it can't do that with a .max file). Oh and it's free. You can even texture paint directly on models from inside it, it's surprisingly well featured. Has some idiosyncrasies and obtuse moments, but no more than 3ds Max has and I'd still say it's much easier to learn (and free). And, seriously, you can work so much quicker in Blender than in 'Max, without having to faff with the import/export carousel. You can model, rig, texture and animate everything in Blender if you so desire.
2D art side, I'll admit Photoshop is very very hard to beat, but Krita is slowly edging closer and is, again, free. With its new 2D animation tools it's almost certainly better than Photoshop for that kind of work. Admittedly I haven't used it as much these days because most of the time I'm painting models directly in Blender or just pumping out prototype art quickly without bothering with textures. It comes up more in my art commissions
(GIMP though is bloody awful. It's interface is a bloody disaster and compared to Krita just isn't remotely worth your time)
Lol I barely know how VStudio works either (I initially used Monodevelop because it's what Unity shipped with at the time, until it started getting too buggy on windows and they packed VStudio along with as well). Find out how to hook it up for debugging and breakpoints and you're pretty much good. It has a snazzy thing for letting you rename variables if you accidentally a typo (which will also change every reference to said variable in the project; handy!), and Ctrl-K, Ctrl-T will tell you every call to a given function. That's about it.
Oh, and there's some shenanigans involved also when it comes to Unity and serializing data (if it's a Generic type it won't serialize, if it's a multi-dim array it won't serialize and unless it's derived from MonoBehaviour or ScriptableObject, you can't use polymorphism and will have to work around). That's fun. With generics you can cheat and have a serializable concrete class (ie if you want, say, a QuadTree<Transform> to be exposed in the inspector and saved by Unity, you can just go TransformQuadTree : QuadTree<Transform>, mark it serializable and it will work). Interfaces are a bit of an arse; GetComponent<InterfaceType> will correctly return all Components implementing a given interface, but other than that the unity serializer can't handle them at all because it has idea what the concrete types involved are. I typically wind up using abstract classes instead.
Sadly, the friends I play with live a little far away, so~
Worst case I figure I switch to turn-based and just have the server collect all the turn orders and execute them at the same time.
The next vector stuff I'm going to be working on is probably going to be going back to linear algebra again, and also vector calculus in k-dimensions.
I've been working my way through basic discrete mathematics and mathematical analysis for the last... bit more than six months now.
Though, that aside, I should probably brush up on dot products and the like. It's been a while since I really calculated anything.
Oho. I guess I might take a look at Krita. I've been reasonably happy with GIMP for the few things I've ever used it for (mostly cropping images and adding transparency really...) but if there's something better out, hey, maybe it's time to upgrade.
Heh. Well, I've had it suggested to me to get a C# certification so I can put something in the vein of "I can actually program for sure guys" on my CV since a BA in linguistics does not exactly imply this usually.
I figure if I go for that, I might as well learn how VStudio works at the same time. It looks like a pretty great IDE after all.
Haha, okay yes I bow and acknowledge your math-fu is stronger than mine. And yeah, it's mostly just knowing how to solve x problem with vector math (ie the vector from A to B is B - A and so on) and getting a feel for when to apply what. By the sounds of it you shouldn't have trouble.
All I can advise is to try and use vectors for directions and quaternions for orientations wherever possible, instead of using angles/euler angles. Angles don't interpolate too well (how far apart is 330 degrees and 30 degrees? 300 if you're not paying attention!), you have to constantly dig through the API to check if a given function returns in degrees or radians, there's always that annoying ambiguity about what direction angle 0 is facing in exactly and finally there's gimbal lock. Euler Angles look intuitive but really they're a complete arse to work with.
Quaternions arekind ofevil but you've got to learn tolovehateuse them if you want to do rotation interpolation.
(EDIT: nobody saw that)
Textures in game dev tend to get a little technically involved at times, and at others you just need to quickly paint something or make a texture tile. I'll admit I tried GIMP after being spoilt by Photoshop for at least two years, but I found it incredibly obtuse and not user friendly (there's also a weird 'structural bug' the devs aren't interested in fixing where any pixel with alpha 0 turns black, which can seriously screw up more technical textures; common practise is to have specular or emission or something in a normal map's alpha channel, so if your spec/em is 0...)
Krita meanwhile I was able to pick up intuitively, and they're making active effort to make it useful for game development.
Fair play! I... have a Games Art degree lol, so I should probably look into that myself... I kind of figured 'hey I made a procedural boss generator go try it out' would be enough proof of competence.
And I just took a glance at the wiki-page for quaternions.
...the complex numbers just jumped a bit up in priority for me.
And sculpt, for those who like to soften everything after adjusting a single vertice in edit mode.You can model, rig, texture and animate everything in Blender if you so desire.
But wondering about the melee/range thing, what's the incentive to get the chin broken when shooting and strafing is a thing? Either the boss needs to be good at closing in, or the ammo needs to be costly to make the melee game that. Maybe aiming should take time, thus being as risky as parrying? Maybe the boss should have different "materials", to signal pieces resistant or vulnerable to shots? Maybe the boss can respond in kind at being shot too much?