Code Monkey home page Code Monkey logo

pomdog's People

Contributors

barsoosayque avatar bis83 avatar gitter-badger avatar mogemimi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pomdog's Issues

Running on Mac

こんにちは。
Mac初心者なので認識などが間違っている可能性があります。ご了承ください。

実行環境

OS macOS Catalina 10.15.3
XCode 10.15.3

再現手順

手順通りビルドしFeatureShowcaseを実行しようとしたところ画面が白いままで何も出ませんでした。
またxcodeprojで実行したところ実行結果が4分の1のサイズで出力されます。
appの内容を表示し実行ファイルそのものを実行したところ
-[NSNib _initWidthNibNamed:bundle:option:] could not load the nibName : PomdogViewController in bundle (null)
と表示されています。
恐らくですがMainMenu.xibが原因でしょうか。

どうぞよろしくお願いいたします。

Resource directory is hard-coded

Basically the issue is that I prefer to store assets in data or content (lowercase) directory, but it is not possible since the path of assets is hard-coded.

As for details, every platform specific GameHost class implementation creates AssetManager with hard-coded path (something + "/Content"). For example, GameHostX11.cpp#L258.

Yet I think that it is user's task to decide where are assets will be stored at.
My guess is that the root directory for assets should be either working directory or somehow specified path via constructor parameters, which defaults to working directory (I am not sure how to do that).

Non-default channel logs get redirected into the default channel

Consider the following example:

Log::SetLevel(LogLevel::Verbose);

Log::Connect("rare", [](const LogEntry& entry) {
    std::printf("[rare] %s\n", entry.Message.c_str());
});
Log::Connect("legendary", [](const LogEntry& entry) {
    std::printf("[legendary] %s\n", entry.Message.c_str());
});
Log::Connect([](const LogEntry& entry) {
    std::printf("[common] %s\n", entry.Message.c_str());
});

Log::Verbose("rare", "blue message");
Log::Verbose("legendary", "gold message");
Log::Verbose("gray message");

Expected output is:

[rare] blue message
[legendary] gold message
[common] gray message

But what I get is:

[common] blue message
[rare] blue message
[common] gold message
[legendary] gold message
[common] gray message

So, it seems that all log entries from non-default channels fires the default channel signal.

(Also, I'm not sure why, but the default channel is not Verbose by default, whereas others are)

Timer's frame duration is scaled twice

In callback which is connected to GameClock::OnTick, Timer gets frame duration from the clock, scales it, scales it once more, and after that Timer updates total elapsed time with this value. This happens in Timer.cpp#L21-L22.

I think that initial frame duration should not be scaled, since it is available in Timer::GetFrameDuration method. Scaling should be performed when calculating elapsed time. In this solution, hovewer, Timer::GetFrameDuration just becomes a proxy-method for GameClock::GetFrameDuration, so I'm suggesting to remove it.

Support building shared library with CMake

We should provide a way to building a shared library using CMake to remove obsolete GYP support.

TODOs:

  • Build DLL under Windows
  • Build shared library (*.so) under Linux
  • Build *.dylib and deploy framework under Mac
  • Try GENERATE_EXPORT_HEADER, and please see this gitter chat

Can't Build From Release Tag

STR:

  1. Download & Extract Tag Archive: v0.1.6
  2. Start CMD
  3. cd pomdog-0.1.6
  4. cmake -DCMAKE_BUILD_TYPE=Debug -S. -B=_build
  5. Observe log

Please include all 3rd party libraries to a release tag;

Crash when the cursor is over the window just created, on Windows

初めてのissueです。間違っていればご指摘お願いたします。

##実行環境
OS Windows10
アプリケーション VisualStdio2017

##再現手順
Windows環境でビルドし実行し、ウィンドウが生成されたタイミングでカーソルがウィンドウとかぶっていると落ちる。

##期待される結果

GameWindowWin32::Impl::WindowProcedure関数のWM_SETCURSOR内の処理がウィンドウ生成時にwindow変数が初期化されていないにもかかわらず処理されているのが原因だと思われます。

case WM_SETCURSOR: {
if (window)
{
auto hitTest = lParam & 0xffff;
if (hitTest == HTCLIENT && window->gameCursor)
{
SetCursor(*window->gameCursor);
return FALSE;
}
}
break;
}
が正しい挙動ではないでしょうか。

Redesign Engine and APIs for C++17

Hello, mates!
I have the following plans for Pomdog in 2018:

Plans

  • To migrate C++14 -> C++17, I will remove support for such old compilers and IDEs:
    • Visual Studio < 2017
    • Xcode < 9.2
    • LLVM Clang < 5.0
  • Migrating a new build system from GYP
  • Removing all tools written by Python 2.x from our toolchains
  • Using Catch2 as a test framework
  • Update the version of clang-format and .clang-format
  • Upgrading third-party libraries, docker containers and CI settings.

New API Style

  • Use C++17, not C++14
  • Replacing Pomdog::Optional<T>, Pomdog::Any and Pomdog::PathHelper with the C++17 standard libraries.
  • Do not use Exceptions in favor of the std::tuple, std::tie and std::optional for error handling.
  • More documentations and examples.

Done/TODOs

hello!! I want to ask you a question!!

hello i dont well write english so please undertasnd me.
im "clone" to "pomdog" and I proceeded to here "git submodule update --init" but i cant go in
"cd path/to/pomdog" -> no directory path,,,,, how to next proceed?? sorry,,,I've just started GitHub,,

Integrate experimental library into core library

I have the following plan:

  • Reimplement some experimental library, such as sprite renderer, shape/primitive renderer, easings, particle system, post effects and font renderer.
  • Integrate experimental library (e.g. libpomdog_experimental.a) into core library (e.g. libpomdog.a). Btw, some libraries have already been moved into include/Pomdog/Experimental.
  • Remove the obsolete Pomdog.Experimental library.

The current repository structure is the following,

- experimental/Pomdog.Experimental/ (= included in `libpomdog_experimental.a`)
  - Particle2D/
  - Skeletal2D/
  - ...
- include/Pomdog/Experimental/ (= included in `libpomdog.a`)
  - Graphics/
  - Image/
  - TexturePacker/

the old experimental library will be removed in the future as follows.

- include/Pomdog/Experimental/
  - Graphics/
  - Image/
  - Particle2D/
  - Skeletal2D/
  - TexturePacker/
  - ...

Progress / TODOs

  • Support Metal fully using preset shaders
  • Reimplementation
    • Sprite batch renderer (#30)
      • Emulate glDrawArraysInstancedBaseInstance and glDrawElementsInstancedBaseInstance on OpenGL <= 4.1 for Mac (57a1c94)
      • Optimization
      • Resign API (#30)
      • Unify SpriteBatchRenderer and SpriteBatch (#30)
    • TrueType font renderer
      • Optimization: Change surface format from RGBA8888 to R8
    • Primitive/shape renderer
    • Easings
    • Actions
    • Particle System 2D
    • Simple 2D Game Engine
  • Integrating experimental library into core library.
    • Moving Sprite, Primitive, Font features (5c4fbd3)
    • Particle System 2D
    • MagicaVoxel exporter/importer (fcef973)
    • Easings (f68e14f)
    • Skeletal Animation, Skinned Mesh 2D
    • Entity-component system
  • Removing the obsolete Pomdog.Experimental library.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.