Jump to content

Oddly

Ascending Contributor
  • Posts

    484
  • Joined

  • Last visited

  • Days Won

    36

Everything posted by Oddly

  1. You know ROM data is a direct rip of the data on a cartridge. It rips directly from byte 0 to the last byte in the ROM memory space. There is an address which starts the graphics resource section which you can rip the map data directly from the rom, If you map the tile data from that to your tile sheet, you may be able to just generate these maps from a ROM file.
  2. HA! Panda is winning by a land slide now!
  3. how am i not using the same ruler. you have 3 because kassy voted for himself and changed his vote to you I have 3 because marsh voted for himself and changed his vote to me. Same rules.
  4. current lead is tied at 3 votes Me Panda Gwen SkywardRiver are in the official lead. Poll obviously isn't accurate
  5. We really were lucky gwen wasn't running.
  6. This post is going places, and I like where it's going.
  7. Damian gave you 777 likes, now you have 778
  8. You aren't?
  9. You have one from kasplant. You can't run from his love. Damian said if someone votes for him and fucks up his 666 he's giving them a warning. Can someone please vote for Damian for me?
  10. fixed.
  11. @Mighty Professional @Beefy Kasplant Y'all voted for yourselves. What are your new votes? <or choice not to vote>
  12. jc said that we're not allowed to pursue these statistics. For with great knowledge comes great responsibility.
  13. low key, thought you were banned, hadn't seen you around in a minute. Adding you to the polls
  14. It's 2 now. fix your name
  15. lmao... ill take off your vote in the end
  16. Self mutilation is often a sign of insanity. How strange.
  17. Go vote for your favorite member!
    https://www.ascensiongamedev....topic/2658-best-member-poll/

  18. Please, ReadTheFuckingPost We are comparing our epeens in the shoutbox and have determined that there is no number that specifies the most reputable members on the forum (some claim the reputation system isn't accurate, some argue page views isn't accurate, some argue that content count isn't accurate). So here we are, with the "who has the biggest epeen poll". Take a vote on the member you believe to have the best reputation in the community. You may vote for anyone except for jcsnider (for obvious reason). I can only make a static number of choices in the poll, so if you have name to add to the poll, reply that name, and ill add it to the poll. Members may NOT vote for themselves. The starting nominee list is based on people i see actively in the shoutbox who are contributor or greater. Sorry if i forgot anyone. Top 10 from this list will move to a final poll where they will be the only 10 allowed to be voted on
  19. Damian is cyber bullying me.

    1. panda
    2. Damian666

      Damian666

      deal with it, damn fake toothpaste brand you

  20. >> Likes 3D You're in the wrong place. Nah i kid, Welcome to ascension.
  21. Repository Link: https://gitlab.com/oddly-doddly/salem-gdk/ Discord Link, (we're community development drive): https://discordapp.com/invite/0wtBMrHuLTjsfsoH For the past 4 months I have been working on a library for developing games and game engines. I am writing this engine to develop my upcoming game project, OddlyDoddly's The InBetween. The system is very simple to how many already existing game engines work, and even though it is very young, it is becoming a very powerful tool. Salem GDK is written with raw OpenGL in C++. It uses GLFW for window and input management. Here are some features i've currently finished developing: Basic TCP Network, soon will be rewritten as a modular network supporting both TCP and UDP protocols. Will also have match making servers. GUI ENGINE with capabilities of scripting user interfaces through JSON files. An example json script and its output { "interface": { "fonts": [ { "id": "arial", "source": "./resource/fonts/arial.ttf" } ], "objects": [ { "type": "image", "id": "img_sanic", "textures": [ { "id": "source", "texture": "./resource/gui/images/sanic.png" } ], "text": "Exit", "position": { "x": -1.0, "y": -1.0 }, "size": { "width": 0.4, "height": 0.6 }, "shader": "ui" }, { "type": "button", "id": "btn_exit", "textures": [ { "id": "inactive", "texture": "./resource/gui/buttons/btn_exit_inactive.png" }, { "id": "hover", "texture": "./resource/gui/buttons/btn_exit_hover.png" }, { "id": "click", "texture": "./resource/gui/buttons/btn_exit_click.png" } ], "text": "Exit", "position": { "x": 0.0, "y": 0.3 }, "size": { "width": 0.4, "height": 0.2 }, "attributes": { "anchor": "left", "text-align": "center" }, "shader": "ui" }, { "type": "textbox", "id": "txt_username", "textures": [ { "id": "inactive", "texture": "./resource/gui/textboxes/textbox_inactive.png" }, { "id": "focus", "texture": "./resource/gui/textboxes/textbox_focus.png" } ], "size": { "width": 0.4, "height": 0.05 }, "position": { "x": 0.0, "y": 0.1 }, "attributes": { "font": "arial", "text-align": "left", "anchor": "center", "place-holder": "Email/Username", "font-size": 0.5, "font-color": "#ffffff" } }, { "type": "textbox", "id": "txt_password", "textures": [ { "id": "inactive", "texture": "./resource/gui/textboxes/textbox_inactive.png" }, { "id": "focus", "texture": "./resource/gui/textboxes/textbox_focus.png" } ], "size": { "width": 0.4, "height": 0.05 }, "position": { "x": 0.0, "y": 0.0 }, "attributes": { "font": "arial", "text-align": "left", "anchor": "center", "place-holder": "Password", "font-size": 0.5, "font-color": "#ffffff", "is-password": true } } ] } } Output Render: All ui objects are interactable and can be grabbed through the gameview's ui engine auto myControl = getView()->ui()->getControl("txt_username"); returns a pinter to the textbox username myControl->value(); Will even get the value of what is in the textbox. Events can be bound to ui buttons through lambda functions. If i want to link an event to btn_exit that prints out the value of email and username to the debug console I can do so like this: // Load GUI loadGui("./resource/gui/views/MainMenu.json"); auto btnExit = gui().findUiControlById<Salem::Graphics::Controls::uiButton>("btn_exit"); auto txtUsername = gui().findUiControlById<Salem::Graphics::Controls::uiTextBox>("txt_username"); auto txtPassword = gui().findUiControlById<Salem::Graphics::Controls::uiTextBox>("txt_password"); btnExit->on_click = []() { std::string username = GAMELOOP_PTR->GetView()->gui().findUiControlById<Salem::Graphics::Controls::uiTextBox>("txt_username")->value(); std::string password = GAMELOOP_PTR->GetView()->gui().findUiControlById<Salem::Graphics::Controls::uiTextBox>("txt_password")->value(); std::cout << "Login: {" << username.c_str() << " : " << password.c_str() << "}" << std::endl; }; Here is an example of a gameview, basically a scene in your game: // // Created by ddodds on 10/24/17. // #ifndef TEST_CLIENT_MAINMENUVIEW_HPP #define TEST_CLIENT_MAINMENUVIEW_HPP #include "system/GameLoop.hpp" #include "system/interface/GameView.hpp" #include "views/controllers/MainMenuController.hpp" #include "behaviours/TestBehaviour.hpp" #include "physics/PhysicsTypes.hpp" #include "physics/types/Transform.hpp" #include <graphics/objects/Model.hpp> #include "graphics/controls/uiButton.hpp" #include "graphics/controls/uiTextBox.hpp" extern Salem::System::GameLoop *GAMELOOP_PTR; namespace TestClient::Views { class MainMenuView : public Salem::System::Interface::GameView { public: explicit MainMenuView(Controllers::MainMenuController &p_view_controller) : GameView(p_view_controller) {} void Initialize() override { // Load GUI loadGui("./resource/gui/views/MainMenu.json"); // Create and bind a Camera Salem::Physics::Types::Transform camera_transform( Salem::Physics::Vector3(0.0f, 0.0f, 0.0f), Salem::Physics::Quaternion(), Salem::Physics::Vector3(1.0f, 1.0f, 1.0f)); GameView::camera(new Salem::Graphics::Objects::Camera(camera_transform, 45.0f, GAMELOOP_PTR->vp_width(), GAMELOOP_PTR->vp_height(), 0.0f, 100.0f)); auto btnExit = gui().findUiControlById<Salem::Graphics::Controls::uiButton>("btn_exit"); auto txtUsername = gui().findUiControlById<Salem::Graphics::Controls::uiTextBox>("txt_username"); auto txtPassword = gui().findUiControlById<Salem::Graphics::Controls::uiTextBox>("txt_password"); btnExit->on_click = []() { std::string username = GAMELOOP_PTR->GetView()->gui().findUiControlById<Salem::Graphics::Controls::uiTextBox>("txt_username")->value(); std::string password = GAMELOOP_PTR->GetView()->gui().findUiControlById<Salem::Graphics::Controls::uiTextBox>("txt_password")->value(); std::cout << "Login: {" << username.c_str() << " : " << password.c_str() << "}" << std::endl; }; Salem::Physics::Types::Transform transform( Salem::Physics::Vector3(0.0f, 0.0f, 0.0f), Salem::Physics::Quaternion(), Salem::Physics::Vector3(1.0f, 1.0f, 1.0f) ); // Game Objects do not get initalized until you add them to a view now. Salem::Graphics::Objects::Model* model = new Salem::Graphics::Objects::Model(transform, "./resource/models/nanosuit/nanosuit.obj"); // Mono Behaviour Initialize Functions get called during the game object's initialization model->AddBehaviour(new Behaviours::TestBehaviour(model->transform())); // Append GameObject to the view addGameObject(model); } void Update() override { // Some Update Logic GameView::Update(); } }; } #endif //TEST_CLIENT_MAINMENUVIEW_HPP And a script to start a scene: The main function of the game itself: We create a game loop, and instruct it to load our Main Menu View, which is defined above. // // Created by ddodds on 10/21/17. // #include <iostream> #include <boost/asio.hpp> #include <views/controllers/MainMenuController.hpp> #include "system/GameLoop.hpp" #include "views/MainMenuView.hpp" #include "views/controllers/MainMenuController.hpp" int main(int argc, char *argv[]) { TestClient::Controllers::MainMenuController mainMenuController; auto mainMenuViewPtr = std::make_unique<TestClient::Views::MainMenuView>(mainMenuController); Salem::System::GameLoop gameLoop; gameLoop.LoadView(std::move(mainMenuViewPtr)); gameLoop.Run(); return 0; } And of course, a game controller to handle user input: // // Created by ddodds on 1/22/18. // #ifndef TEST_CLIENT_MAINMENUCONTROLLER_HPP #define TEST_CLIENT_MAINMENUCONTROLLER_HPP #include <system/interface/ViewController.hpp> #include <physics/PhysicsTypes.hpp> #include "system/GameLoop.hpp" extern Salem::System::GameLoop *GAMELOOP_PTR; namespace TestClient::Controllers { class MainMenuController : public Salem::System::Interface::ViewController { public: void on_keypress(GLFWwindow *window, int key, int scancode, int action, int mods) override { if(key == GLFW_KEY_W) { Salem::Physics::Vector3 move_transform(0.0f, 0.0f, 1.0f); GAMELOOP_PTR->GetView()->camera()->transform().Translate(move_transform); } if(key == GLFW_KEY_S) { Salem::Physics::Vector3 move_transform(0.0f, 0.0f, -1.0f); GAMELOOP_PTR->GetView()->camera()->transform().Translate(move_transform); } if(key == GLFW_KEY_A) { Salem::Physics::Vector3 move_transform(1.0f, 0.0f, 0.0f); GAMELOOP_PTR->GetView()->camera()->transform().Translate( move_transform); } if(key == GLFW_KEY_D) { Salem::Physics::Vector3 move_transform(-1.0f, 0.0f, 0.0f); GAMELOOP_PTR->GetView()->camera()->transform().Translate(move_transform); } } void on_cursor_move(GLFWwindow *p_window, double p_xpos, double p_ypos) override { double x_offset = p_xpos - m_last_x; double y_offset = p_ypos - m_last_y; GAMELOOP_PTR->GetView()->camera()->transform().Rotate(0.05f*x_offset, Salem::Physics::Vector3(0.0f, 1.0f, 0.0f)); GAMELOOP_PTR->GetView()->camera()->transform().Rotate(0.05f*y_offset, Salem::Physics::Vector3(1.0f, 0.0f, 0.0f)); m_last_x = p_xpos; m_last_y = p_ypos; }; private: double m_last_x, m_last_y = 0; }; } #endif //TEST_CLIENT_MAINMENUCONTROLLER_HPP The library supports camera views and transforms: (for this test i just converted all 2d interface objects into 3d world objects.) Of course, 3D model loading at its very basics.... Game Object behaviours. You can bind as many scripted behaviours as you'd like to a game object, and the system runs them when necessary: If you've ever used unity, they are very similar to MonoBehaviours, but these are not scripted or injected, they get baked into the final application compilation. Also support GLSL shader language Coming up in the project's todo; Audio Engine (being developed by a Salem-GDK community member) Animation Engine (will be developed by me) UDP Network (developed by me) Witchcraft Engine;World (engine used to generate 3D worlds and maps for SalemGDK, in development next, by me) More screenshots to come.
  22. It's been coming such a long way :'D. Soon I'll have it doing enough that i can make an wip engine post with it.
    https://gitlab.com/oddly-doddly/salem-gdk

  23. I want my beef, and I don't wanna have to milk it outta ya. So get beefin ya COWard or mooooove on outta here. There ain't enough room in town for two chocolate cowfolk.

    1. Show previous comments  2 more
    2. Beefy Kasplant

      Beefy Kasplant

      *Slices Beef Patiently*

    3. Beefy Kasplant

      Beefy Kasplant

      *Gives Beef Patiently But With Gusto*

    4. Oddly

      Oddly

      *eats beef aggressively but with gusto.*

       

      That's good beef. Moooove along.

×
×
  • Create New...