• Announcements

    • khawk

      Download the Game Design and Indie Game Marketing Freebook   07/19/17

      GameDev.net and CRC Press have teamed up to bring a free ebook of content curated from top titles published by CRC Press. The freebook, Practices of Game Design & Indie Game Marketing, includes chapters from The Art of Game Design: A Book of Lenses, A Practical Guide to Indie Game Marketing, and An Architectural Approach to Level Design. The GameDev.net FreeBook is relevant to game designers, developers, and those interested in learning more about the challenges in game development. We know game development can be a tough discipline and business, so we picked several chapters from CRC Press titles that we thought would be of interest to you, the GameDev.net audience, in your journey to design, develop, and market your next game. The free ebook is available through CRC Press by clicking here. The Curated Books The Art of Game Design: A Book of Lenses, Second Edition, by Jesse Schell Presents 100+ sets of questions, or different lenses, for viewing a game’s design, encompassing diverse fields such as psychology, architecture, music, film, software engineering, theme park design, mathematics, anthropology, and more. Written by one of the world's top game designers, this book describes the deepest and most fundamental principles of game design, demonstrating how tactics used in board, card, and athletic games also work in video games. It provides practical instruction on creating world-class games that will be played again and again. View it here. A Practical Guide to Indie Game Marketing, by Joel Dreskin Marketing is an essential but too frequently overlooked or minimized component of the release plan for indie games. A Practical Guide to Indie Game Marketing provides you with the tools needed to build visibility and sell your indie games. With special focus on those developers with small budgets and limited staff and resources, this book is packed with tangible recommendations and techniques that you can put to use immediately. As a seasoned professional of the indie game arena, author Joel Dreskin gives you insight into practical, real-world experiences of marketing numerous successful games and also provides stories of the failures. View it here. An Architectural Approach to Level Design This is one of the first books to integrate architectural and spatial design theory with the field of level design. The book presents architectural techniques and theories for level designers to use in their own work. It connects architecture and level design in different ways that address the practical elements of how designers construct space and the experiential elements of how and why humans interact with this space. Throughout the text, readers learn skills for spatial layout, evoking emotion through gamespaces, and creating better levels through architectural theory. View it here. Learn more and download the ebook by clicking here. Did you know? GameDev.net and CRC Press also recently teamed up to bring GDNet+ Members up to a 20% discount on all CRC Press books. Learn more about this and other benefits here.
Sign in to follow this  
Followers 0
Carlos Martinez

Help with a 2D Space Shooter!

12 posts in this topic

I'm wanting to start a little project (I'm a beginner), about a Space Shooter, but, I need help with a few things... 

 

The first thing is implementing the shooting, I mean, the bullets will go at the mouse direction, how can I implement the angles of shooting?

The second is, how to implement a simply mini-map? Just showing where my ship is, some bases, etc...

 

Lol, I wish I could explain a lot better but, English isn't my first language :(, anyway, any help, link, tutorial, will be appreciated!

 

I'm using SFML and C++ btw.

0

Share this post


Link to post
Share on other sites


This sounds fairly straight forward. You need to be more specific about what problem you are having.

 

I have not started It yet, I just want a simple idea, just for know where to start.

0

Share this post


Link to post
Share on other sites

 


This sounds fairly straight forward. You need to be more specific about what problem you are having.

 

I have not started It yet, I just want a simple idea, just for know where to start.

 

 

Well, write down in steps how you would perform the task of displaying a minimap, then code it. If there is a part you are having trouble with, feel free to ask. But please make an honest effort before you ask us to spend any time on it.

0

Share this post


Link to post
Share on other sites

I'm wanting to start a little project (I'm a beginner), about a Space Shooter, but, I need help with a few things... 

 

The first thing is implementing the shooting, I mean, the bullets will go at the mouse direction, how can I implement the angles of shooting?

The second is, how to implement a simply mini-map? Just showing where my ship is, some bases, etc...

 

Lol, I wish I could explain a lot better but, English isn't my first language sad.png, anyway, any help, link, tutorial, will be appreciated!

You need to have specific questions about specific problems, or otherwise the answers you're going to get will be very general and will not help you achieve what you want to achieve.

 

Step 1: Define your goal

Step 2: Break down goal into smaller steps, and repeat until the steps are small enough to be manageable.

Step 3: Complete each step.  If you have a problem with one, ask for help.

Step 4: Done!

 

Right now it seems like you're somewhere between steps 1 and 2.

1

Share this post


Link to post
Share on other sites

As I see no one is willing to give you straight forward answer. But I think I can answer to your first question, about angles and shooting.

 

This is how you do it:

sf::Vector2f mousePos = your mouse position vector;
sf::Vector2f shipPos = you ship position vector;
sf::Vector2f bulletVelocity();
sf::Vector2f bulletPosition();

float shotAngle = atan2(mousePos.y - shipPos.y, mousePos.x - shipPos.x);

bulletVelocity.x = cos(shotAngle);
bulletVelocity.y = sin(shotAngle);

bulletPosition.x += bulletVelocity.x;
bulletPosition.y += bulletVelocity.y;

This should get you started. I can't really tell more, because it would kill all the point of the programming in the first place - which is problem solving.

You should go google some vector math, get comfortable with those before you dig deeper into game programming.

Edited by Edvinas Kilbauskas
2

Share this post


Link to post
Share on other sites

You don't need trig to do that. Alvaro already said what they need to do.

sf::Vector2f mousePos = your mouse position vector;
sf::Vector2f shipPos = you ship position vector;
sf::Vector2f bulletVelocity(mousePos.x - shipPos.x, mousePos.y - shipPos.y); // see comment in next post
sf::Vector2f bulletPosition = bullet position;

bulletVelocity.normalize();

bulletVelocity *= bulletSpeed;

bulletPosition.x += bulletVelocity.x;
bulletPosition.y += bulletVelocity.y;
Edited by Paradigm Shifter
2

Share this post


Link to post
Share on other sites

You are right, but just change

sf::Vector2f bulletVelocity(mousePos.y - shipPos.y, mousePos.x - shipPos.x);

to

sf::Vector2f bulletVelocity(mousePos.x - shipPos.x, mousePos.y - shipPos.y);
1

Share this post


Link to post
Share on other sites

 

You don't need trig to do that. Alvaro already said what they need to do.

sf::Vector2f mousePos = your mouse position vector;
sf::Vector2f shipPos = you ship position vector;
sf::Vector2f bulletVelocity(mousePos.x - shipPos.x, mousePos.y - shipPos.y); // see comment in next post
sf::Vector2f bulletPosition = bullet position;

bulletVelocity.normalize();

bulletVelocity *= bulletSpeed;

bulletPosition.x += bulletVelocity.x;
bulletPosition.y += bulletVelocity.y;

 

I solved it with a little difference, just one question, there you use a normalize function (.normalize()), Is that function on the sfml's headers? 

0

Share this post


Link to post
Share on other sites

I dunno, it was pseudo-code-esque. I'm not familiar with sfml.

 

I'm sure there will be a normalize function somewhere, maybe not a method of sf::Vector2f though... Or work out the length of the vector and divide by the length.

0

Share this post


Link to post
Share on other sites

for a mini map or look down radar, you'll draw in a manner similar to drawing the screen, but at much smaller scale.

 

so lets say you're running at 800x600, and your "world" or "level" is 2x2 screens (1600x1200 pix).

 

so you'd take the world coords of everything you want to draw in the mini map and divide by 10. that way your minimap is 160x120 pix in size (20% of the width and height of the screen in size).

 

add an x and y offset to each object on the map to effectively move the UL corner of the mini map where you want it on the screen and you're done.

 

then just draw a symbol or colored dot representing the object at the coords you've figured out:

 

minimap_x = world_x / 10 + minimap_xoffset;

minimap_ y = world_y / 10 + minimap_yoffset;

 

that divide by 10 is just an example.

 

it will actually be divide by "scale of world compared to minimap"

 

so if 1 pix on the minimap = 100 pix in the world, it would be divide by 100, and so on.

 

then you can get fancy and rotate objects around the player's position on the mini map based on the player's direction, so the mini map "turns" with the player.

 

 

 

 

 

.

1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0