• Advertisement
Sign in to follow this  

Unity Need help for game. C#

This topic is 870 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Well as everyone knows you are supposed to make C# games in XNA or Unity. But for me i find it 10x more interesting doing it with the c# framework by itself. Is this bad or will the game be possible without the fancy enxtensions?

Share this post


Link to post
Share on other sites
Advertisement

Doing it all yourself is not bad. It's just a lot more work and a lot harder, as you have to do everything that the engine does for you otherwise.

Share this post


Link to post
Share on other sites

I don't really understand what you mean by the "C# framework" and you can't really put XNA and Unity in the same category. XNA is/was a framework while Unity is an entire ecosystem.

If you want a useful answer you will have to tell us what you're aiming for.

Share this post


Link to post
Share on other sites

Using the C# language and the .NET Framework you are still leveraging tools made by others.  You're just leveraging different tools.

 

Professional studios rely on all kinds of libraries.  There is generally no need to rewrite everything yourself.  In the 1980s you needed to write your own graphics drivers for every card, your own audio systems that wrote directly to the memory locations and IO ports of the different audio cards.  Over time more middleware came out where you could hit a generic driver for many different audio cards, or VESA drivers for a bunch of video cards. These days we hit systems like OpenGL or DirectX for graphics, we use systems like WWise or FMod for audio. And that can mean relying on major engines like Unity or Unreal as well.

 

There is nothing inherently wrong with doing it all yourself.  You could even write your game entirely in machine code if you felt the urge.  But doing so is directly at odds with productivity.

 

You can take advantage of systems that would take thousands of hours, tens of thousands of hours, or even millions of hours for you to develop on your own.  And that is exactly why most groups do it.

Share this post


Link to post
Share on other sites

I don't really understand what you mean by the "C# framework" and you can't really put XNA and Unity in the same category. XNA is/was a framework while Unity is an entire ecosystem.

If you want a useful answer you will have to tell us what you're aiming for.

Im aiming for c# without the game extensions like XNA or Unity. Just plain c# and graphics, such as  

 

e.Graphics.DrawRectangle(new Pen(Color.Black), daleTalkRadius);

                daleTalkRadius.Location = new Point(dalex - 100, daley - 70);
                e.Graphics.FillRectangle(new SolidBrush(Color.PeachPuff), entityDale);
                e.Graphics.FillRectangle(new SolidBrush(Color.PeachPuff), entityThief);
                entityDale.Location = new Point(dalex, daley);
                entityThief.Location = new Point(thiefwalkx, thiefwalky);

Share this post


Link to post
Share on other sites

I don't really understand what you mean by the "C# framework" and you can't really put XNA and Unity in the same category. XNA is/was a framework while Unity is an entire ecosystem.

If you want a useful answer you will have to tell us what you're aiming for.

 

Unity is a skeleton. You're still doing most of the work if you want to make something interesting.

But... yeah. Programming the entire thing from scratch with C# is a lot harder than you really think it is... but if you want access to source, I suggest taking a look at Paradox Engine.

It's entirely built in C# and is open source.

Has PBR, and is making some very decent progress. Not sure if it has a working terrain system however... but you can implement that yourself.

Share this post


Link to post
Share on other sites


Im aiming for c# without the game extensions like XNA or Unity. Just plain c# and graphics, such as  

 

If GDI works for you, that's totally fine as a first step. Just be aware of the limitations, such as the lack of hardware acceleration.

Direct2D was designed as a replacement for GDI and is the more modern option.

Share this post


Link to post
Share on other sites

 

I don't really understand what you mean by the "C# framework" and you can't really put XNA and Unity in the same category. XNA is/was a framework while Unity is an entire ecosystem.

If you want a useful answer you will have to tell us what you're aiming for.

Im aiming for c# without the game extensions like XNA or Unity. Just plain c# and graphics, such as  

 

e.Graphics.DrawRectangle(new Pen(Color.Black), daleTalkRadius);

                daleTalkRadius.Location = new Point(dalex - 100, daley - 70);
                e.Graphics.FillRectangle(new SolidBrush(Color.PeachPuff), entityDale);
                e.Graphics.FillRectangle(new SolidBrush(Color.PeachPuff), entityThief);
                entityDale.Location = new Point(dalex, daley);
                entityThief.Location = new Point(thiefwalkx, thiefwalky);

 

XNA is a high level framework built on DirectX for gaming purposes (XBOX, some kind of phone I forgot and windows).
Using WFA (Which is bad because you should relay on WPF today and NOT windows forms) is exactly like using XNA (Both needs the dlls and framework installed).
They are both frameworks which were developed by Microsoft to do some sort of work. 
GDI isn't suitable for high professional game development.
 

If you don't want XNA there are couple of wrappers for OpenGL in C# (OpenTK is one of them) and wrappers for DirectX.

 

In the end, every framework have to be installed on the system for the game to work,

either if it's XNA, Unity, or plain GDI, the difference is when you install it.

Some come built-in with Windows, others have to be installed. 

Edited by WoopsASword

Share this post


Link to post
Share on other sites


Just be aware of the limitations, such as the lack of hardware acceleration.

This to me can be important.  I think what you're doing is doable but if your game is or will be cpu heavy, hardware acceleration can matter depending on how much you draw (especially alphablended sprites)(and the hardware of your audience).  But if its your first game and its small in scope, then by all means if it makes you comfortable then go for it.  But I think you'll most likely want to use a framework or engine at some point so you're gonna have to learn one eventually.

Share this post


Link to post
Share on other sites

I understand where you are coming from.  I've written several game engines myself in different languages and at first it seem easier to do because I don't have to learn what someone else has designed but after a while it becomes more difficult because of bugs and the amount of new features needed.

 

Using GDI+ as your graphics engine can be very tricky.  It doesn't have access to the video card so it can be fairly slow in drawing.  You may need to create a back buffer to render on then present that image to the screen when done.  You may run into many headache that could be avoid by using a library designed to draw directly to the video card.

 

The one question you should ask yourself.  Do you like making games or programming engines?  By the sounds of it you find it more fun to tinker with technology and see how you can push your hardware around.  This can be more fun for some people then the process of actually making a game.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
  • Advertisement
  • Popular Tags

  • Advertisement
  • Popular Now

  • Similar Content

    • By Alexander Nazarov
      Hello. I'm newby in Unity and just start learning basics of this engine. I want to create a game like StackJump (links are below). And now I wondering what features do I have to use to create such my game. Should I use Physics engine or I can move objects changing transform manually in Update().
      If I should use Physics can you in several words direct me how can I implement and what I have to use. Just general info, no need for detailed description of developing process.
       
      Game in PlayMarket
      Video of the game
    • By GytisDev
      Hello,
      without going into any details I am looking for any articles or blogs or advice about city building and RTS games in general. I tried to search for these on my own, but would like to see your input also. I want to make a very simple version of a game like Banished or Kingdoms and Castles,  where I would be able to place like two types of buildings, make farms and cut trees for resources while controlling a single worker. I have some problem understanding how these games works in the back-end: how various data can be stored about the map and objects, how grids works, implementing work system (like a little cube (human) walks to a tree and cuts it) and so on. I am also pretty confident in my programming capabilities for such a game. Sorry if I make any mistakes, English is not my native language.
      Thank you in advance.
    • By Ovicior
      Hey,
      So I'm currently working on a rogue-like top-down game that features melee combat. Getting basic weapon stats like power, weight, and range is not a problem. I am, however, having a problem with coming up with a flexible and dynamic system to allow me to quickly create unique effects for the weapons. I want to essentially create a sort of API that is called when appropriate and gives whatever information is necessary (For example, I could opt to use methods called OnPlayerHit() or IfPlayerBleeding() to implement behavior for each weapon). The issue is, I've never actually made a system as flexible as this.
      My current idea is to make a base abstract weapon class, and then have calls to all the methods when appropriate in there (OnPlayerHit() would be called whenever the player's health is subtracted from, for example). This would involve creating a sub-class for every weapon type and overriding each method to make sure the behavior works appropriately. This does not feel very efficient or clean at all. I was thinking of using interfaces to allow for the implementation of whatever "event" is needed (such as having an interface for OnPlayerAttack(), which would force the creation of a method that is called whenever the player attacks something).
       
      Here's a couple unique weapon ideas I have:
      Explosion sword: Create explosion in attack direction.
      Cold sword: Chance to freeze enemies when they are hit.
      Electric sword: On attack, electricity chains damage to nearby enemies.
       
      I'm basically trying to create a sort of API that'll allow me to easily inherit from a base weapon class and add additional behaviors somehow. One thing to know is that I'm on Unity, and swapping the weapon object's weapon component whenever the weapon changes is not at all a good idea. I need some way to contain all this varying data in one Unity component that can contain a Weapon field to hold all this data. Any ideas?
       
      I'm currently considering having a WeaponController class that can contain a Weapon class, which calls all the methods I use to create unique effects in the weapon (Such as OnPlayerAttack()) when appropriate.
    • By Vu Chi Thien
      Hi fellow game devs,
      First, I would like to apologize for the wall of text.
      As you may notice I have been digging in vehicle simulation for some times now through my clutch question posts. And thanks to the generous help of you guys, especially @CombatWombat I have finished my clutch model (Really CombatWombat you deserve much more than a post upvote, I would buy you a drink if I could ha ha). 
      Now the final piece in my vehicle physic model is the differential. For now I have an open-differential model working quite well by just outputting torque 50-50 to left and right wheel. Now I would like to implement a Limited Slip Differential. I have very limited knowledge about LSD, and what I know about LSD is through readings on racer.nl documentation, watching Youtube videos, and playing around with games like Assetto Corsa and Project Cars. So this is what I understand so far:
      - The LSD acts like an open-diff when there is no torque from engine applied to the input shaft of the diff. However, in clutch-type LSD there is still an amount of binding between the left and right wheel due to preload spring.
      - When there is torque to the input shaft (on power and off power in 2 ways LSD), in ramp LSD, the ramp will push the clutch patch together, creating binding force. The amount of binding force depends on the amount of clutch patch and ramp angle, so the diff will not completely locked up and there is still difference in wheel speed between left and right wheel, but when the locking force is enough the diff will lock.
      - There also something I'm not sure is the amount of torque ratio based on road resistance torque (rolling resistance I guess)., but since I cannot extract rolling resistance from the tire model I'm using (Unity wheelCollider), I think I would not use this approach. Instead I'm going to use the speed difference in left and right wheel, similar to torsen diff. Below is my rough model with the clutch type LSD:
      speedDiff = leftWheelSpeed - rightWheelSpeed; //torque to differential input shaft. //first treat the diff as an open diff with equal torque to both wheels inputTorque = gearBoxTorque * 0.5f; //then modify torque to each wheel based on wheel speed difference //the difference in torque depends on speed difference, throttleInput (on/off power) //amount of locking force wanted at different amount of speed difference, //and preload force //torque to left wheel leftWheelTorque = inputTorque - (speedDiff * preLoadForce + lockingForce * throttleInput); //torque to right wheel rightWheelTorque = inputTorque + (speedDiff * preLoadForce + lockingForce * throttleInput); I'm putting throttle input in because from what I've read the amount of locking also depends on the amount of throttle input (harder throttle -> higher  torque input -> stronger locking). The model is nowhere near good, so please jump in and correct me.
      Also I have a few questions:
      - In torsen/geared LSD, is it correct that the diff actually never lock but only split torque based on bias ratio, which also based on speed difference between wheels? And does the bias only happen when the speed difference reaches the ratio (say 2:1 or 3:1) and below that it will act like an open diff, which basically like an open diff with an if statement to switch state?
      - Is it correct that the amount of locking force in clutch LSD depends on amount of input torque? If so, what is the threshold of the input torque to "activate" the diff (start splitting torque)? How can I get the amount of torque bias ratio (in wheelTorque = inputTorque * biasRatio) based on the speed difference or rolling resistance at wheel?
      - Is the speed at the input shaft of the diff always equals to the average speed of 2 wheels ie (left + right) / 2?
      Please help me out with this. I haven't found any topic about this yet on gamedev, and this is my final piece of the puzzle. Thank you guys very very much.
  • Advertisement