Building a robot simulator GUI using C#. Need some advice - c#

I'm building a 2D robot simulator GUI for my autonomous robot vehicle.
I plan to keep the GUI simple. It consists of a vehicle (represented by a blue square picture), and some obstacles (cones, wall, etc, represented by yellow circle and red line respectively).
The vehicle must be able to move (as in the blue square must be able to move on the GUI) and be able to show its velocity and steering (float values) and its status (string) on the GUI.
I plan to use C# and Windows Forms to do this task, but I'm not sure if this is the right way to it. I remember using picture box a few years ago and I was not able to change the position of the picture box in real-time, or something weird like that.
Just wondering if you guys know a better way to do this. Is Windows Forms the way to go?
I've just moved from Ubuntu to Windows, so I am quite new at .Net stuff.
Here's what I've got so far http://imageshack.us/photo/my-images/708/guilo.png/

Future plans may dictate a change, but for what you describe Windows.Drawing should work fine. The only problem may be if you are using timers for updates, as it may not be fast enough for you.
So, how fast of an update rate do you need?
How much like a game framework will you actually need?
You may want to look at a tutorial like:
http://www.dreamincode.net/forums/topic/67275-the-wonders-of-systemdrawinggraphics/

Related

C# Wpf Animation Projectile

I just started using WPF and searched on how to do animations, there is many good tutorials but i can't seem to find the specific thing i need.
My goal is to create a small circle to start at a location and when a timer ticks move the circle smoothly towards another point(within 1 second). There is going to be new starting points and target points each tick.
As i said im fairly new to WPF so XAML is a new area for me, so i don't know how to animate the movement or if i should draw the circle or use an image. I don't even know if this is hard or an easy thing to do.
For reference im trying to make it look like the projectiles in this link:
http://map.norsecorp.com/#/
Would appreciate any help or any google search words i should use.
/ Alexander
If you are trying to work with animations, WPF isn't the right tool for you.
I have done many projects in this direction in the past and i cant recommend WPF. You need to work with multiple threads and your code is getting messy very soon. WPF is optimized for buisness solutions not for drawing circles. You can use Unity 3D. Its easy to learn and there are many examples out there.

how to create a responsive scene

I'm currently creating a 2D Android and iOS game using Unity3D engine. I'm testing the game on a nexus 5, and an iPhone 5s device. Everything until now is working fine and I am pretty happy with the result, but when I test that application on an iPad or a Samsung tablet all the objects in my game scene are not in the correct position anymore. Is this a common problem in Unity3D ?
I know I am missing something but I tried to do some research and what I found is only by changing the orthographic camera scale might fix this problem, but I found it as a big amount of code to write as my game have not only one scene but multiple scenes and every scene have it's own game objects.
Is there any other method to do, a good and simple work around for this problem?
It's all about setting the Anchors right.
If you're using the new UI System, make sure you anchor the objects where you want them to be, that's how you will achieve resolution independence.
For more information about anchoring, see this tutorial
Don't have separate scenes for separate devices. You can use the Screen object to check the height and width of your display. Then you can use this to set the orthographic size of your camera to something that makes everything visible as expected.
Update: I misunderstood your question, you say GameObject, i understand UI.
Please check this. I don't have this issue on my game. But when i try it with mac or windows machines, it is problematic. So maybe this can solve.
Other solution is more common which is you and Agumander say, change orthographic size of Camera.
This Is for UI
You can use Unity UI, and don't need to seperate. There are so many different resolution and density devices, you need to create so many scenes. So it is meanless separating scenes.
Unity UI has pixel based solutions which can be very helpfull for many density and resolution options. Forexample, It has VerticalLayoutGroup and HorizontalLayoutGroup for easy list like element visulation.
Most important thing is: Do you want to change UI for different screen size or resolutions? For example iPad has larger screen so user can be see more content. This change UX. Maybe you need to consider this.

C# Sidescroller starting advices

since this is my very first time trying to make yet simple but useable sidescroller I'd like to ask some questions and hopefully gather ideas to make a good engine that can change the position of an Image in the form depending on X position of the drawn game character. I'd basically like to recreate just few seconds of a Mario game.
The starting Idea (correct me if it's wrong / poorly performance / whatever) would be to create a picture long in width and whit fixed height and upon the press of, for example, A or D keys, the drawn character moves till a certain X point, after that, character gets locked in place and if the key is still pressed, the background image starts moving.
But the problem there would be the fix for collisions, would be possible to check for the X position of the drawn background picture and set "collisions" accordingly for the character?
Other questions : why picturebox should be avoided at all costs and use the form itself instead ? Placing the greater part of the classes methods inside a timer_tick event is the wrong approach ? I read somewhere that the best way to do games of this kind would be relying on infinite loops in the forms main method, but I simply cannot even think how this could possibly works, taking in count all the times we may need to get out of the loop and do different code in different places.
Any other different ideas/approach and direct links to further explanations would be greatly liked
Edit : yes i'd like to improve with windows forms before moving to xna/unity
Assumption: You want to make a little game and its your first time working with moving graphics and you're working with WindowsForms. Suggestion: try using a more advanced framework such as MonoGame or XNA and working your way through introductory documentation and tutorials. Also WPF has a more advanced graphics platform for doing things like drawing and 3D, you may want to give that a shot.
To expand on my comment a bit.
Windows Forms and GDI (the tech behind drawing) aren't meant for this kind of use. When GDI was created its purpose was essentially drawing lines and fonts on the screen. XNA is a really good framework for learning the basics up to professional design. Unfortunately the XNA framework is no longer supported by Microsoft and as such MonoGame is the recommended development route for managed .NET 3D and 2D game development.
The WPF provides basic access to Direct3D and Direct2D, and has 2D and 3D shapes and animations built into the framework and is what WPF is based on.
But you also have the choice, if need be, to create an XNA component and embed it in a Windows Form as demonstrated in these two tutorials.
XNA in Windows Forms I
XNA in Windows Forms II
Also using a Windows Forms Timer isn't recommended because they are unreliable. The .Net Framework provides a 'Server Timer' and a 'Threading timer' that can be used as well.
If you are really keen on using GDI for a game may I recommend reading about the basics of game programming (I think there are a few XNA docs on the subject) that should guide you on things like the basic run time loop, getting input, and simple physics.

Moving a ball with accelerometer Windows Phone 8

I'm learning for windows phone 8, and i wanted to write an app where i can move an image using the accelerometer, not a level detector, i want it to move just like in labyrinth games. How would i make this happen? Does anyone have any good samples/turials/explainations or similar? I have been searching the web for two days now, trying to be integrating it. It will be used for a very simple learning-game for myself since i learn alot from samples. I have started my project as a normal app, since this is what i absolutely like to develop with, the UI design, etc, i have already created a basic UI, and also things the ball can collide into, things like arcs and stuff(controls). I am writing it in C#, i also got a little knowledge from java game development (not very much).
Thanks alot!
There aren't any samples (AFAIK) that do exactly what you describe.
If you really want an accelerometer/labyrinth game, there's a C++ sample at http://code.msdn.microsoft.com/wpapps/Marble-Maze-sample-for-c9f3706b
Alternatively, there a lot of other samples to learn from.
These should keep you busy for a while: http://code.msdn.microsoft.com/wpapps/

Is it practical to port code from Flash to C#?

My goal is to gain a better understanding of the characteristics of C#, and become more comfortable creating simple apps. I am fairly competent with Flash (Actionscript 3), and found an old Tic-Tac-Toe game I'd written. I started wondering about porting this code into a C# application. Not knowing much about C#, I'm wondering how difficult the migration would be.
On the one hand, the underlying game logic is syntactically similar, and therefore would be easy to port.
However, as far as the graphics are concerned, I don't even know where to begin. So far, I've only exposed myself to Windows Forms and Console apps in C#.
I'm wondering if these Flash concepts have similar analogs in C#, or if the procedures and syntax are radically different:
Placing graphic elements on a stage
Rendering lines from start/end coordinates
Event listeners on movie clips
Swapping the image inside a graphic element (or, in my Flash version, nextFrame() in a movie clip)
You may want to try developping your little game using Silverlight. Silverlight applications, coded using C# and Xaml, are pretty similar in form with flash applications, and you should find everything you need without trouble.
So I suggest you download the Silverlight SDK (free) and give it a try.
Firstly, Flash is to WPF (close enough) as ActionScript is to C#.
The WPF/Silverlight model is much more similar to Flex that it is to Flash. Everything is added to the UI tree as a object, even lines.
Likewise, adding event handlers to controls (like a button click) can be done in the "code behind" (the code that lives with the view), but the recommendation is to use the MVVM pattern. If you are new to the concepts of separation of concerns and unit testing, feel free to start with the simpler "code behind" method.
While WPF and Silverlight are very similar, I'd recommend starting with Silverlight as the SDK and available samples are richer. You can easily move onto WPF later on (though porting an application from Silverlight to WPF is not automatic).
Swapping images, as you mentioned, would be done via "Visual States" in Silverlight (or possibly changing the image reference, which is more "hacky").
Have a look at the following links to get started:
Learn # Silverlight.net
Silverlight on MSDN
Shapes and Drawing (Silverlight)
If you're looking specifically to do games and the like, you may wish to look into the free XNA framework. However, there will be differences as Flash gives you far more ability to "set up" things beforehand and modify them.
Placing graphic elements on a stage
If you go the XNA route, you will be drawing sprites using the spritebatch, you tell them where and how to draw and that's where they will go
Rendering lines from start/end coordinates
In windows forms you can do this via a simple System.Drawing call, however if you wish to do this in XNA, you will either have to make a 1 pixel square and stretch/rotate it to what you want, or use 3d primitives (Though this will limit you to a 1 pixel line)
Event listeners on movie clips
Look into delegates, but there isn't really an equivalent for movie clips to my knowledge
Swapping the image inside a graphic element (or, in my Flash version, nextFrame() in a movie clip)
This is fairly simple, depending on what you mean. If you want to, say, animate a sprite. You can do this by moving the source rectangle or changing the texture of the spritesheet. If you mean the screen as a whole, this is mostly handled for you provided you use the spritebatch. In windows forms you'll have to do more of it yourself, but the base concepts are the same.
Overall it's not that bad, but if that doesn't sound appealing check out Silverlight. It's basically C# styled flash so you may find the transition easier.
Good luck and hope this helps.

Categories